summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author angelosa <salese_corp_ltd@email.it>2017-07-16 19:09:50 +0200
committer angelosa <salese_corp_ltd@email.it>2017-07-16 19:10:28 +0200
commitb46ed73b2f01273964a01d3e7ce0bf50a7bd2c46 (patch)
tree06401b90a0d86abf46e7cbf885df73753d98be69
parent0b1375f218e01e7c07abaf2207149faa3aba96f0 (diff)
Redumped color proms in Time Limit [ShouTime, TServo2049, pablopelos, The Dumping Union]
-rw-r--r--src/mame/drivers/timelimt.cpp9
-rw-r--r--src/mame/video/timelimt.cpp23
2 files changed, 22 insertions, 10 deletions
diff --git a/src/mame/drivers/timelimt.cpp b/src/mame/drivers/timelimt.cpp
index 782f4daba1f..75113dfa8ee 100644
--- a/src/mame/drivers/timelimt.cpp
+++ b/src/mame/drivers/timelimt.cpp
@@ -10,6 +10,7 @@ driver by Ernesto Corvi
Notes:
- Sprite colors are wrong (missing colortable?)
- driver should probably be merged with suprridr.cpp and thepit.cpp
+- unused color bank for tilemaps? (colors 0x10-0x1f & 0x30-0x3f)
***************************************************************************/
@@ -290,14 +291,14 @@ ROM_START( timelimt )
ROM_LOAD( "tl12", 0x1000, 0x1000, CRC(ce960389) SHA1(57ee52cfa1b5a3832b362b38c8b7aa411dfc782b) )
ROM_REGION( 0x6000, "sprites", 0 ) /* sprites */
- ROM_LOAD( "tl3", 0x0000, 0x2000, CRC(01a9fd95) SHA1(cd1078700c97a3539c9d9447c55efbd27540a1b3) )
+ ROM_LOAD( "tl3", 0x4000, 0x2000, CRC(01a9fd95) SHA1(cd1078700c97a3539c9d9447c55efbd27540a1b3) )
ROM_LOAD( "tl2", 0x2000, 0x2000, CRC(4693b849) SHA1(fbebedde53599fb1eaedc648bd704b321ab096b5) )
- ROM_LOAD( "tl1", 0x4000, 0x2000, CRC(c4007caf) SHA1(ae05af3319545d5ca98a046bfc100138a5a3ed96) )
+ ROM_LOAD( "tl1", 0x0000, 0x2000, CRC(c4007caf) SHA1(ae05af3319545d5ca98a046bfc100138a5a3ed96) )
ROM_REGION( 0x0060, "proms", 0 )
ROM_LOAD( "clr.35", 0x0000, 0x0020, CRC(9c9e6073) SHA1(98496175bf19a8cdb0018705bc1a2193b8a782e1) )
- ROM_LOAD( "clr.48", 0x0020, 0x0020, BAD_DUMP CRC(a0bcac59) SHA1(e5832831b21981363509b79d89766757bd9273b0) ) /* FIXED BITS (xxxxxx1x) */
- ROM_LOAD( "clr.57", 0x0040, 0x0020, NO_DUMP ) /* missing sprite color prom? */
+ ROM_LOAD( "clr.48", 0x0020, 0x0020, CRC(a0bcac59) SHA1(e5832831b21981363509b79d89766757bd9273b0) ) /* FIXED BITS (xxxxxx1x) */
+ ROM_LOAD( "clr.57", 0x0040, 0x0020, CRC(3a9f5394) SHA1(0b501f81ce1df722cf7ef982c03e0be337bfe9ee) )
ROM_END
ROM_START( progress )
diff --git a/src/mame/video/timelimt.cpp b/src/mame/video/timelimt.cpp
index 205a2362096..1c18a1f00ff 100644
--- a/src/mame/video/timelimt.cpp
+++ b/src/mame/video/timelimt.cpp
@@ -2,13 +2,14 @@
// copyright-holders:Ernesto Corvi
#include "emu.h"
#include "includes/timelimt.h"
+#include "video/resnet.h"
/***************************************************************************
Convert the color PROMs into a more useable format.
- Time Limit has two 32 bytes palette PROM, connected to the RGB output this
+ Time Limit has three 32 bytes palette PROM, connected to the RGB output this
way:
bit 7 -- 220 ohm resistor -- BLUE
@@ -22,10 +23,20 @@
***************************************************************************/
-PALETTE_INIT_MEMBER(timelimt_state, timelimt){
+PALETTE_INIT_MEMBER(timelimt_state, timelimt)
+{
const uint8_t *color_prom = memregion("proms")->base();
int i;
+ static const int resistances_rg[3] = { 1000, 470, 220 };
+ static const int resistances_b [2] = { 470, 220 };
+ double weights_r[3], weights_g[3], weights_b[2];
+
+ compute_resistor_weights(0, 255, -1.0,
+ 3, resistances_rg, weights_r, 0, 0,
+ 3, resistances_rg, weights_g, 0, 0,
+ 2, resistances_b, weights_b, 0, 0);
+
for (i = 0;i < palette.entries();i++)
{
int bit0,bit1,bit2,r,g,b;
@@ -34,16 +45,16 @@ PALETTE_INIT_MEMBER(timelimt_state, timelimt){
bit0 = (*color_prom >> 0) & 0x01;
bit1 = (*color_prom >> 1) & 0x01;
bit2 = (*color_prom >> 2) & 0x01;
- r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+ r = combine_3_weights(weights_r, bit0, bit1, bit2);
/* green component */
bit0 = (*color_prom >> 3) & 0x01;
bit1 = (*color_prom >> 4) & 0x01;
bit2 = (*color_prom >> 5) & 0x01;
- g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
+ g = combine_3_weights(weights_g, bit0, bit1, bit2);
/* blue component */
bit0 = (*color_prom >> 6) & 0x01;
bit1 = (*color_prom >> 7) & 0x01;
- b = 0x4f * bit0 + 0xa8 * bit1;
+ b = combine_2_weights(weights_b, bit0, bit1);
palette.set_pen_color(i,rgb_t(r,g,b));
color_prom++;
@@ -128,7 +139,7 @@ void timelimt_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec
m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
code,
- attr & 7,
+ attr & 3, // was & 7, wrong for 3bpp and 32 colors
flipx,flipy,
sx,sy,0);
}