mirror of https://github.com/stella-emu/stella.git
The TIA palette is now passed to NTSCFilter, so it can calculate its own
YIQ-format palette. Removed compile-time option for DISPLAY_TV. NTSC filtering will always be compiled into the app, but will only actually be used in OpenGL mode. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2396 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
5d4c09da54
commit
216f0ab19e
3
Makefile
3
Makefile
|
@ -95,7 +95,8 @@ MODULES := $(MODULES)
|
||||||
MODULES += \
|
MODULES += \
|
||||||
src/emucore \
|
src/emucore \
|
||||||
src/gui \
|
src/gui \
|
||||||
src/common
|
src/common \
|
||||||
|
src/common/tv_filters
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
# The build rules follow - normally you should have no need to
|
# The build rules follow - normally you should have no need to
|
||||||
|
|
|
@ -20,7 +20,6 @@ _zlib=auto
|
||||||
|
|
||||||
# default option behaviour yes/no
|
# default option behaviour yes/no
|
||||||
_build_gl=yes
|
_build_gl=yes
|
||||||
_build_tv=yes
|
|
||||||
_build_windowed=yes
|
_build_windowed=yes
|
||||||
_build_sound=yes
|
_build_sound=yes
|
||||||
_build_debugger=yes
|
_build_debugger=yes
|
||||||
|
@ -245,8 +244,6 @@ for ac_option in $@; do
|
||||||
case "$ac_option" in
|
case "$ac_option" in
|
||||||
--enable-gl) _build_gl=yes ;;
|
--enable-gl) _build_gl=yes ;;
|
||||||
--disable-gl) _build_gl=no ;;
|
--disable-gl) _build_gl=no ;;
|
||||||
--enable-tv) _build_tv=yes ;;
|
|
||||||
--disable-tv) _build_tv=no ;;
|
|
||||||
--enable-windowed) _build_windowed=yes ;;
|
--enable-windowed) _build_windowed=yes ;;
|
||||||
--disable-windowed) _build_windowed=no ;;
|
--disable-windowed) _build_windowed=no ;;
|
||||||
--enable-sound) _build_sound=yes ;;
|
--enable-sound) _build_sound=yes ;;
|
||||||
|
@ -658,14 +655,6 @@ else
|
||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$_build_tv" = "yes" ; then
|
|
||||||
echo_n " TV filtering enabled"
|
|
||||||
echo
|
|
||||||
else
|
|
||||||
echo_n " TV filtering disabled"
|
|
||||||
echo
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$_build_windowed" = "yes" ; then
|
if test "$_build_windowed" = "yes" ; then
|
||||||
echo_n " Windowed rendering modes enabled"
|
echo_n " Windowed rendering modes enabled"
|
||||||
echo
|
echo
|
||||||
|
@ -757,7 +746,7 @@ CHEAT="$SRC/cheat"
|
||||||
LIBPNG="$SRC/libpng"
|
LIBPNG="$SRC/libpng"
|
||||||
ZLIB="$SRC/zlib"
|
ZLIB="$SRC/zlib"
|
||||||
|
|
||||||
INCLUDES="-I$CORE -I$COMMON -I$GUI"
|
INCLUDES="-I$CORE -I$COMMON -I$TV -I$GUI"
|
||||||
|
|
||||||
INCLUDES="$INCLUDES `$_sdlconfig --cflags`"
|
INCLUDES="$INCLUDES `$_sdlconfig --cflags`"
|
||||||
if test "$_build_static" = yes ; then
|
if test "$_build_static" = yes ; then
|
||||||
|
@ -829,12 +818,6 @@ if test "$_build_gl" = yes ; then
|
||||||
DEFINES="$DEFINES -DDISPLAY_OPENGL"
|
DEFINES="$DEFINES -DDISPLAY_OPENGL"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$_build_tv" = yes ; then
|
|
||||||
DEFINES="$DEFINES -DDISPLAY_TV"
|
|
||||||
MODULES="$MODULES $TV"
|
|
||||||
INCLUDES="$INCLUDES -I$TV"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$_build_windowed" = yes ; then
|
if test "$_build_windowed" = yes ; then
|
||||||
DEFINES="$DEFINES -DWINDOWED_SUPPORT"
|
DEFINES="$DEFINES -DWINDOWED_SUPPORT"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifdef DISPLAY_TV
|
|
||||||
|
|
||||||
#include "NTSCFilter.hxx"
|
#include "NTSCFilter.hxx"
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
@ -37,10 +35,25 @@ NTSCFilter::~NTSCFilter()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void NTSCFilter::setTIAPalette(const uInt32* palette)
|
||||||
|
{
|
||||||
|
// The TIA palette consists of 128 colours, but the palette array actually
|
||||||
|
// contains 256 entries, where only every second value is a valid colour
|
||||||
|
uInt8* ptr = myTIAPalette;
|
||||||
|
for(int i = 0; i < 256; i+=2)
|
||||||
|
{
|
||||||
|
*ptr++ = (palette[i] >> 16) & 0xff;
|
||||||
|
*ptr++ = (palette[i] >> 8) & 0xff;
|
||||||
|
*ptr++ = palette[i] & 0xff;
|
||||||
|
}
|
||||||
|
updateFilter();
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void NTSCFilter::updateFilter()
|
void NTSCFilter::updateFilter()
|
||||||
{
|
{
|
||||||
double yiq_table[768];
|
double yiq_table[384];
|
||||||
|
|
||||||
updateYIQTable(yiq_table, mySetup.burst_phase * M_PI);
|
updateYIQTable(yiq_table, mySetup.burst_phase * M_PI);
|
||||||
|
|
||||||
|
@ -231,16 +244,16 @@ int NTSCFilter::FILTER_NTSC_Initialise(int *argc, char *argv[])
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void NTSCFilter::updateYIQTable(double yiq_table[768], double start_angle)
|
void NTSCFilter::updateYIQTable(double yiq_table[384], double start_angle)
|
||||||
{
|
{
|
||||||
const double start_saturation = 0.0; // calculated internally
|
const double start_saturation = 0.0; // calculated internally
|
||||||
const double gamma = 1; // 1 - COLOURS_NTSC_setup.gamma / 2.0;
|
const double gamma = 1; // 1 - COLOURS_NTSC_setup.gamma / 2.0;
|
||||||
unsigned char *ext_ptr = NULL; //FIXME COLOURS_NTSC_external.palette;
|
uInt8* ext_ptr = myTIAPalette;
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
start_angle = - ((213.0f) * M_PI / 180.0f) - start_angle;
|
start_angle = - ((213.0f) * M_PI / 180.0f) - start_angle;
|
||||||
|
|
||||||
for (n = 0; n < 256; n ++) {
|
for (n = 0; n < 128; n ++) {
|
||||||
/* Convert RGB values from external palette to YIQ. */
|
/* Convert RGB values from external palette to YIQ. */
|
||||||
double r = (double)*ext_ptr++ / 255.0;
|
double r = (double)*ext_ptr++ / 255.0;
|
||||||
double g = (double)*ext_ptr++ / 255.0;
|
double g = (double)*ext_ptr++ / 255.0;
|
||||||
|
@ -288,5 +301,3 @@ static char const * const preset_cfg_strings[NTSCFilter::PRESET_SIZE] = {
|
||||||
"RGB",
|
"RGB",
|
||||||
"MONOCHROME"
|
"MONOCHROME"
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DISPLAY_TV
|
|
||||||
|
|
|
@ -20,8 +20,6 @@
|
||||||
#ifndef NTSC_FILTER_HXX
|
#ifndef NTSC_FILTER_HXX
|
||||||
#define NTSC_FILTER_HXX
|
#define NTSC_FILTER_HXX
|
||||||
|
|
||||||
#ifdef DISPLAY_TV
|
|
||||||
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
#include "Array.hxx"
|
#include "Array.hxx"
|
||||||
#include "atari_ntsc.h"
|
#include "atari_ntsc.h"
|
||||||
|
@ -67,6 +65,11 @@ class NTSCFilter
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
/* Informs the NTSC filter about the current TIA palette. The filter
|
||||||
|
uses this as a baseline for calculating its own internal palette
|
||||||
|
in YIQ format.
|
||||||
|
*/
|
||||||
|
void setTIAPalette(const uInt32* palette);
|
||||||
|
|
||||||
/* Restores default values for NTSC-filter-specific colour controls.
|
/* Restores default values for NTSC-filter-specific colour controls.
|
||||||
updateFilter should be called afterwards to apply changes. */
|
updateFilter should be called afterwards to apply changes. */
|
||||||
|
@ -95,7 +98,7 @@ class NTSCFilter
|
||||||
are provided as parameters, because NTSC_FILTER needs to set these values
|
are provided as parameters, because NTSC_FILTER needs to set these values
|
||||||
according to its internal setup (burst_phase etc).
|
according to its internal setup (burst_phase etc).
|
||||||
*/
|
*/
|
||||||
static void updateYIQTable(double yiq_table[768], double start_angle);
|
void updateYIQTable(double yiq_table[768], double start_angle);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Pointer to the NTSC filter structure
|
// Pointer to the NTSC filter structure
|
||||||
|
@ -104,6 +107,8 @@ class NTSCFilter
|
||||||
// Contains controls used to adjust the palette in the NTSC filter
|
// Contains controls used to adjust the palette in the NTSC filter
|
||||||
atari_ntsc_setup_t mySetup;
|
atari_ntsc_setup_t mySetup;
|
||||||
|
|
||||||
|
uInt8 myTIAPalette[384]; // 128 colours by 3 components per colour
|
||||||
|
|
||||||
int myCurrentModeNum;
|
int myCurrentModeNum;
|
||||||
Common::Array<atari_ntsc_setup_t> myModeList;
|
Common::Array<atari_ntsc_setup_t> myModeList;
|
||||||
|
|
||||||
|
@ -111,6 +116,4 @@ class NTSCFilter
|
||||||
static char const * const preset_cfg_strings[PRESET_SIZE];
|
static char const * const preset_cfg_strings[PRESET_SIZE];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DISPLAY_TV
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -19,8 +19,6 @@
|
||||||
|
|
||||||
/* Based on nes_ntsc 0.2.2. http://www.slack.net/~ant/ */
|
/* Based on nes_ntsc 0.2.2. http://www.slack.net/~ant/ */
|
||||||
|
|
||||||
#ifdef DISPLAY_TV
|
|
||||||
|
|
||||||
#include "atari_ntsc.h"
|
#include "atari_ntsc.h"
|
||||||
|
|
||||||
/* Copyright (C) 2006-2007 Shay Green. This module is free software; you
|
/* Copyright (C) 2006-2007 Shay Green. This module is free software; you
|
||||||
|
@ -393,5 +391,3 @@ void atari_ntsc_blit_bgra32( atari_ntsc_t const* ntsc, ATARI_NTSC_IN_T const* in
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // DISPLAY_TV
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifdef DISPLAY_TV
|
|
||||||
|
|
||||||
/* Atari TIA, CTIA, GTIA and MARIA NTSC video filter */
|
/* Atari TIA, CTIA, GTIA and MARIA NTSC video filter */
|
||||||
|
|
||||||
/* based on nes_ntsc 0.2.2 */
|
/* based on nes_ntsc 0.2.2 */
|
||||||
|
@ -264,5 +262,3 @@ enum {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // DISPLAY_TV
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifdef DISPLAY_TV
|
|
||||||
|
|
||||||
/* Based on nes_ntsc 0.2.2. http://www.slack.net/~ant/ */
|
/* Based on nes_ntsc 0.2.2. http://www.slack.net/~ant/ */
|
||||||
|
|
||||||
/* Common implementation of NTSC filters */
|
/* Common implementation of NTSC filters */
|
||||||
|
@ -474,5 +472,3 @@ static void correct_errors( atari_ntsc_rgb_t color, atari_ntsc_rgb_t* out );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // DISPLAY_TV
|
|
||||||
|
|
|
@ -1897,7 +1897,6 @@
|
||||||
HAVE_INTTYPES,
|
HAVE_INTTYPES,
|
||||||
HAVE_GETTIMEOFDAY,
|
HAVE_GETTIMEOFDAY,
|
||||||
DISPLAY_OPENGL,
|
DISPLAY_OPENGL,
|
||||||
DISPLAY_TV,
|
|
||||||
CHEATCODE_SUPPORT,
|
CHEATCODE_SUPPORT,
|
||||||
DEBUGGER_SUPPORT,
|
DEBUGGER_SUPPORT,
|
||||||
JOYSTICK_SUPPORT,
|
JOYSTICK_SUPPORT,
|
||||||
|
@ -1960,7 +1959,6 @@
|
||||||
HAVE_INTTYPES,
|
HAVE_INTTYPES,
|
||||||
HAVE_GETTIMEOFDAY,
|
HAVE_GETTIMEOFDAY,
|
||||||
DISPLAY_OPENGL,
|
DISPLAY_OPENGL,
|
||||||
DISPLAY_TV,
|
|
||||||
CHEATCODE_SUPPORT,
|
CHEATCODE_SUPPORT,
|
||||||
DEBUGGER_SUPPORT,
|
DEBUGGER_SUPPORT,
|
||||||
JOYSTICK_SUPPORT,
|
JOYSTICK_SUPPORT,
|
||||||
|
@ -2022,7 +2020,6 @@
|
||||||
HAVE_INTTYPES,
|
HAVE_INTTYPES,
|
||||||
HAVE_GETTIMEOFDAY,
|
HAVE_GETTIMEOFDAY,
|
||||||
DISPLAY_OPENGL,
|
DISPLAY_OPENGL,
|
||||||
DISPLAY_TV,
|
|
||||||
CHEATCODE_SUPPORT,
|
CHEATCODE_SUPPORT,
|
||||||
DEBUGGER_SUPPORT,
|
DEBUGGER_SUPPORT,
|
||||||
JOYSTICK_SUPPORT,
|
JOYSTICK_SUPPORT,
|
||||||
|
|
|
@ -1881,7 +1881,6 @@
|
||||||
HAVE_INTTYPES,
|
HAVE_INTTYPES,
|
||||||
HAVE_GETTIMEOFDAY,
|
HAVE_GETTIMEOFDAY,
|
||||||
DISPLAY_OPENGL,
|
DISPLAY_OPENGL,
|
||||||
DISPLAY_TV,
|
|
||||||
CHEATCODE_SUPPORT,
|
CHEATCODE_SUPPORT,
|
||||||
DEBUGGER_SUPPORT,
|
DEBUGGER_SUPPORT,
|
||||||
JOYSTICK_SUPPORT,
|
JOYSTICK_SUPPORT,
|
||||||
|
@ -1937,7 +1936,6 @@
|
||||||
HAVE_INTTYPES,
|
HAVE_INTTYPES,
|
||||||
HAVE_GETTIMEOFDAY,
|
HAVE_GETTIMEOFDAY,
|
||||||
DISPLAY_OPENGL,
|
DISPLAY_OPENGL,
|
||||||
DISPLAY_TV,
|
|
||||||
CHEATCODE_SUPPORT,
|
CHEATCODE_SUPPORT,
|
||||||
DEBUGGER_SUPPORT,
|
DEBUGGER_SUPPORT,
|
||||||
JOYSTICK_SUPPORT,
|
JOYSTICK_SUPPORT,
|
||||||
|
@ -1992,7 +1990,6 @@
|
||||||
HAVE_INTTYPES,
|
HAVE_INTTYPES,
|
||||||
HAVE_GETTIMEOFDAY,
|
HAVE_GETTIMEOFDAY,
|
||||||
DISPLAY_OPENGL,
|
DISPLAY_OPENGL,
|
||||||
DISPLAY_TV,
|
|
||||||
CHEATCODE_SUPPORT,
|
CHEATCODE_SUPPORT,
|
||||||
DEBUGGER_SUPPORT,
|
DEBUGGER_SUPPORT,
|
||||||
JOYSTICK_SUPPORT,
|
JOYSTICK_SUPPORT,
|
||||||
|
|
Loading…
Reference in New Issue