summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/timelimt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/timelimt.cpp')
-rw-r--r--src/mame/video/timelimt.cpp23
1 files changed, 17 insertions, 6 deletions
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);
}