Completely removed 'Display.XStart' and 'Display.Width' functionality,

and all associated settings/UI elements.  It wasn't actually used anywhere
in the current properties database, and would definitely disappear in the
next version of the TIA class anyway.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1316 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2007-02-06 23:34:35 +00:00
parent 89804951aa
commit e1c09992ec
15 changed files with 4150 additions and 4355 deletions

View File

@ -924,21 +924,11 @@ a ROM.</li>
<td>Set "Display.Format" property.</td>
</tr>
<tr>
<td><pre>-xstart &lt;number&gt;</pre></td>
<td>Set "Display.XStart" property (0 - 80).</td>
</tr>
<tr>
<td><pre>-ystart &lt;number&gt;</pre></td>
<td>Set "Display.YStart" property (0 - 64).</td>
</tr>
<tr>
<td><pre>-width &lt;number&gt;</pre></td>
<td>Set "Display.Width" property (80 - 160).</td>
</tr>
<tr>
<td><pre>-height &lt;number&gt;</pre></td>
<td>Set "Display.Height" property (100 - 256).</td>
@ -1585,18 +1575,6 @@ a ROM.</li>
<th>Key (OSX)</th>
</tr>
<tr>
<td>Set "Display.XStart" to next <i>larger</i> value</td>
<td>Alt + End</td>
<td>Shift-Cmd + End</td>
</tr>
<tr>
<td>Set "Display.XStart" to next <i>smaller</i> value</td>
<td>Alt + Home</td>
<td>Shift-Cmd + Home</td>
</tr>
<tr>
<td>Set "Display.YStart" to next <i>larger</i> value</td>
<td>Alt + PageUp</td>
@ -1609,19 +1587,6 @@ a ROM.</li>
<td>Shift-Cmd + PageDown</td>
</tr>
<tr>
<td>Set "Display.Width" to next <i>larger</i> value</td>
<td>Control + End</td>
<td>Cmd + End</td>
</tr>
<tr>
<td>Set "Display.Width" to next <i>smaller</i> value</td>
<td>Control + Home</td>
<td>Cmd + Home</td>
</tr>
<tr>
<td>Set "Display.Height" to next <i>larger</i> value</td>
<td>Control + PageUp</td>
@ -2083,20 +2048,6 @@ Ms Pac-Man (Stella extended codes):
PAL or PAL60.</td>
</tr>
<tr>
<td VALIGN="TOP"><i>Display.XStart: (*)</i></td>
<td>This property indicates the horizontal location to start displaying
pixels at on a scan-line. The value of this property must be <i>n</i>
such that 0 &lt;= <i>n</i> &lt;= 80 and <i>n</i> is divisible by 4.</td>
</tr>
<tr>
<td VALIGN="TOP"><i>Display.Width: (*)</i></td>
<td>This property indicates the number of pixels to display per
scan-line. The value of this property must be <i>n</i> such that
80 &lt;= <i>n</i> &lt;= 160 and <i>n</i> is divisible by 4.</td>
</tr>
<tr>
<td VALIGN="TOP"><i>Display.YStart:</i></td>
<td>This property indicates the scan-line to start displaying at.

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Console.cxx,v 1.124 2007-01-31 22:37:02 stephena Exp $
// $Id: Console.cxx,v 1.125 2007-02-06 23:34:31 stephena Exp $
//============================================================================
#include <cassert>
@ -452,50 +452,6 @@ void Console::fry() const
mySystem->poke(ZPmem, mySystem->peek(ZPmem) & (uInt8)rand() % 256);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Console::changeXStart(int direction)
{
Int32 xstart = atoi(myProperties.get(Display_XStart).c_str());
uInt32 width = atoi(myProperties.get(Display_Width).c_str());
ostringstream strval;
string message;
if(direction == +1) // increase XStart
{
xstart += 4;
if(xstart > 80)
{
myOSystem->frameBuffer().showMessage("XStart at maximum");
return;
}
else if((width + xstart) > 160)
{
myOSystem->frameBuffer().showMessage("XStart no effect");
return;
}
}
else if(direction == -1) // decrease XStart
{
xstart -= 4;
if(xstart < 0)
{
myOSystem->frameBuffer().showMessage("XStart at minimum");
return;
}
}
else
return;
strval << xstart;
myProperties.set(Display_XStart, strval.str());
((TIA*)myMediaSource)->frameReset();
myOSystem->frameBuffer().refresh();
message = "XStart ";
message += strval.str();
myOSystem->frameBuffer().showMessage(message);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Console::changeYStart(int direction)
{
@ -534,50 +490,6 @@ void Console::changeYStart(int direction)
myOSystem->frameBuffer().showMessage(message);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Console::changeWidth(int direction)
{
uInt32 xstart = atoi(myProperties.get(Display_XStart).c_str());
Int32 width = atoi(myProperties.get(Display_Width).c_str());
ostringstream strval;
string message;
if(direction == +1) // increase Width
{
width += 4;
if((width > 160) || ((width % 4) != 0))
{
myOSystem->frameBuffer().showMessage("Width at maximum");
return;
}
else if((width + xstart) > 160)
{
myOSystem->frameBuffer().showMessage("Width no effect");
return;
}
}
else if(direction == -1) // decrease Width
{
width -= 4;
if(width < 140)
{
myOSystem->frameBuffer().showMessage("Width at minimum");
return;
}
}
else
return;
strval << width;
myProperties.set(Display_Width, strval.str());
((TIA*)myMediaSource)->frameReset();
initializeVideo(); // takes care of refreshing the screen
message = "Width ";
message += strval.str();
myOSystem->frameBuffer().showMessage(message);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Console::changeHeight(int direction)
{

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Console.hxx,v 1.58 2007-01-01 18:04:47 stephena Exp $
// $Id: Console.hxx,v 1.59 2007-02-06 23:34:31 stephena Exp $
//============================================================================
#ifndef CONSOLE_HXX
@ -38,7 +38,7 @@ class System;
This class represents the entire game console.
@author Bradford W. Mott
@version $Id: Console.hxx,v 1.58 2007-01-01 18:04:47 stephena Exp $
@version $Id: Console.hxx,v 1.59 2007-02-06 23:34:31 stephena Exp $
*/
class Console
{
@ -193,32 +193,14 @@ class Console
void fry() const;
/**
Change the "Display.XStart" variable. Currently, a system reset is issued
after the change.
@param direction +1 indicates increase, -1 indicates decrease.
*/
void changeXStart(int direction);
/**
Change the "Display.XStart" variable. Currently, a system reset is issued
after the change.
Change the "Display.YStart" variable.
@param direction +1 indicates increase, -1 indicates decrease.
*/
void changeYStart(int direction);
/**
Change the "Display.XStart" variable. Currently, a system reset is issued
after the change.
@param direction +1 indicates increase, -1 indicates decrease.
*/
void changeWidth(int direction);
/**
Change the "Display.XStart" variable. Currently, a system reset is issued
after the change.
Change the "Display.Height" variable.
@param direction +1 indicates increase, -1 indicates decrease.
*/

File diff suppressed because it is too large Load Diff

View File

@ -14,7 +14,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: EventHandler.cxx,v 1.200 2007-01-30 17:13:07 stephena Exp $
// $Id: EventHandler.cxx,v 1.201 2007-02-06 23:34:33 stephena Exp $
//============================================================================
#include <sstream>
@ -417,14 +417,6 @@ void EventHandler::poll(uInt32 time)
myOSystem->sound().adjustVolume(+1);
break;
case SDLK_END: // Alt-End increases XStart
myOSystem->console().changeXStart(+1);
break;
case SDLK_HOME: // Alt-Home decreases XStart
myOSystem->console().changeXStart(-1);
break;
case SDLK_PAGEUP: // Alt-PageUp increases YStart
myOSystem->console().changeYStart(+1);
break;
@ -578,14 +570,6 @@ void EventHandler::poll(uInt32 time)
myOSystem->createConsole();
break;
case SDLK_END: // Ctrl-End increases Width
myOSystem->console().changeWidth(+1);
break;
case SDLK_HOME: // Ctrl-Home decreases Width
myOSystem->console().changeWidth(-1);
break;
case SDLK_PAGEUP: // Ctrl-PageUp increases Height
myOSystem->console().changeHeight(+1);
break;

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: OSystem.cxx,v 1.95 2007-01-30 17:13:10 stephena Exp $
// $Id: OSystem.cxx,v 1.96 2007-02-06 23:34:33 stephena Exp $
//============================================================================
#include <cassert>
@ -594,12 +594,8 @@ bool OSystem::queryConsoleInfo(const uInt8* image, uInt32 size,
if(s != "") props.set(Controller_SwapPaddles, s);
s = mySettings->getString("format");
if(s != "") props.set(Display_Format, s);
s = mySettings->getString("xstart");
if(s != "") props.set(Display_XStart, s);
s = mySettings->getString("ystart");
if(s != "") props.set(Display_YStart, s);
s = mySettings->getString("width");
if(s != "") props.set(Display_Width, s);
s = mySettings->getString("height");
if(s != "") props.set(Display_Height, s);
s = mySettings->getString("pp");

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Props.cxx,v 1.19 2007-01-01 18:04:49 stephena Exp $
// $Id: Props.cxx,v 1.20 2007-02-06 23:34:33 stephena Exp $
//============================================================================
#include <cctype>
@ -295,8 +295,6 @@ const char* Properties::ourDefaultProperties[LastPropType] = {
"JOYSTICK", // Controller.Right
"NO", // Controller.SwapPaddles
"AUTO-DETECT", // Display.Format
"0", // Display.XStart
"160", // Display.Width
"34", // Display.YStart
"210", // Display.Height
"NO", // Display.Phosphor
@ -322,8 +320,6 @@ const char* Properties::ourPropertyNames[LastPropType] = {
"Controller.Right",
"Controller.SwapPaddles",
"Display.Format",
"Display.XStart",
"Display.Width",
"Display.YStart",
"Display.Height",
"Display.Phosphor",

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Props.hxx,v 1.14 2007-01-01 18:04:49 stephena Exp $
// $Id: Props.hxx,v 1.15 2007-02-06 23:34:33 stephena Exp $
//============================================================================
#ifndef PROPERTIES_HXX
@ -38,8 +38,6 @@ enum PropertyType {
Controller_Right,
Controller_SwapPaddles,
Display_Format,
Display_XStart,
Display_Width,
Display_YStart,
Display_Height,
Display_Phosphor,
@ -57,7 +55,7 @@ enum PropertyType {
if the property key is not found in the original property list.
@author Bradford W. Mott
@version $Id: Props.hxx,v 1.14 2007-01-01 18:04:49 stephena Exp $
@version $Id: Props.hxx,v 1.15 2007-02-06 23:34:33 stephena Exp $
*/
class Properties
{

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: Settings.cxx,v 1.115 2007-01-03 17:37:46 stephena Exp $
// $Id: Settings.cxx,v 1.116 2007-02-06 23:34:33 stephena Exp $
//============================================================================
#include <cassert>
@ -355,9 +355,7 @@ void Settings::usage()
<< " -bc <arg> Same as using both -lc and -rc\n"
<< " -cp <arg> Sets the 'Controller.SwapPaddles' property\n"
<< " -format <arg> Sets the 'Display.Format' property\n"
<< " -xstart <arg> Sets the 'Display.XStart' property\n"
<< " -ystart <arg> Sets the 'Display.YStart' property\n"
<< " -width <arg> Sets the 'Display.Width' property\n"
<< " -height <arg> Sets the 'Display.Height' property\n"
<< " -pp <arg> Sets the 'Display.Phosphor' property\n"
<< " -ppblend <arg> Sets the 'Display.PPBlend' property\n"

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: TIA.cxx,v 1.78 2007-01-06 21:13:29 stephena Exp $
// $Id: TIA.cxx,v 1.79 2007-02-06 23:34:33 stephena Exp $
//============================================================================
#include <cassert>
@ -237,21 +237,13 @@ void TIA::frameReset()
myScanlineCountForLastFrame = 0;
myCurrentScanline = 0;
myFrameXStart = atoi(myConsole.properties().get(Display_XStart).c_str());
myFrameWidth = atoi(myConsole.properties().get(Display_Width).c_str());
myFrameXStart = 0; // Hardcoded in preparation for new TIA class
myFrameWidth = 160; // Hardcoded in preparation for new TIA class
myFrameYStart = atoi(myConsole.properties().get(Display_YStart).c_str());
myFrameHeight = atoi(myConsole.properties().get(Display_Height).c_str());
// Make sure the starting x and width/height values are reasonable
// This is partly due to restrictions on the internal buffer size,
// but also because we need a certain minimum amount of space for
// the onscreen GUI
if((myFrameXStart + myFrameWidth) > 160 || myFrameWidth < 140)
{
// Values are illegal so reset to default values
myFrameXStart = 0;
myFrameWidth = 160;
}
// Make sure the height value is reasonable, because we need a certain
// minimum amount of space for the onscreen GUI
if(myFrameHeight < 200)
{
// Values are illegal so reset to default values

View File

@ -709,6 +709,9 @@
"Cartridge.Note" "Uses the Joystick Controllers (swapped)"
"Cartridge.Rarity" "Uncommon"
"Console.SwapPorts" "YES"
"Display.YStart" "30"
"Display.Height" "220"
"Display.Phosphor" "YES"
""
"Cartridge.MD5" "0ac0d491763153fac75f5337ce32a9d6"
@ -2214,6 +2217,12 @@
"Cartridge.Name" "Big Dig (V3) (20-10-2002) (CT)"
""
"Cartridge.MD5" "23fad5a125bcd4463701c8ad8a0043a9"
"Cartridge.Name" "Stone Age (CCE)"
"Display.YStart" "26"
"Display.Height" "220"
""
"Cartridge.MD5" "2365e1534d67f94d8670394ab99150ce"
"Cartridge.Name" "Missile Command (CX-80 Trackball) (NTSC) (2002) (TJ)"
"Display.Phosphor" "YES"
@ -5660,6 +5669,13 @@
"Cartridge.Rarity" "Rare"
""
"Cartridge.MD5" "5babe0cad3ec99d76b0aa1d36a695d2f"
"Cartridge.Manufacturer" "Coleco (Ed Temple)"
"Cartridge.Name" "Looping (Coleco)"
"Cartridge.Rarity" "Prototype (never released)"
"Display.YStart" "24"
""
"Cartridge.MD5" "63c7395d412a3cd095ccdd9b5711f387"
"Cartridge.Manufacturer" "Eric Ball"
"Cartridge.ModelNo" "ELB005"
@ -7233,6 +7249,11 @@
"Cartridge.Name" "Barber Pole Demo (PD)"
""
"Cartridge.MD5" "73e66e82ac22b305eb4d9578e866236e"
"Cartridge.Name" "Unknown Game #2 (Datatech)"
"Display.YStart" "24"
""
"Cartridge.MD5" "73158ea51d77bf521e1369311d26c27b"
"Cartridge.Manufacturer" "Zellers"
"Cartridge.Name" "Challenge (Zellers) [!]"
@ -8433,6 +8454,7 @@
"Cartridge.Name" "Survival Run (1983) (Milton Bradley)"
"Cartridge.Rarity" "Rare"
"Display.YStart" "29"
"Display.Height" "225"
"Display.Phosphor" "YES"
""
@ -9748,6 +9770,7 @@
"Cartridge.MD5" "9e5007131695621d06902ab3c960622a"
"Cartridge.Name" "Tac Scan (1983) (Sega) [h1]"
"Display.Height" "215"
"Display.Phosphor" "YES"
""
@ -13016,6 +13039,7 @@
"Controller.Left" "PADDLES"
"Controller.Right" "PADDLES"
"Controller.SwapPaddles" "YES"
"Display.Height" "215"
"Display.Phosphor" "YES"
""
@ -13812,6 +13836,8 @@
"Cartridge.ModelNo" "PB5910"
"Cartridge.Name" "Strawberry Shortcake - Musical Match-Ups (1983) (Parker Bros)"
"Cartridge.Rarity" "Uncommon"
"Display.YStart" "25"
"Display.Height" "225"
""
"Cartridge.MD5" "e12e32dee68201b6765fcd0ed54d6646"

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: GameInfoDialog.cxx,v 1.37 2007-01-24 19:17:33 stephena Exp $
// $Id: GameInfoDialog.cxx,v 1.38 2007-02-06 23:34:34 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
@ -226,35 +226,21 @@ GameInfoDialog::GameInfoDialog(
myFormat->appendEntry("PAL60", 4);
wid.push_back(myFormat);
ypos += lineHeight + 3;
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
"XStart:", kTextAlignLeft);
myXStart = new EditTextWidget(myTab, font, xpos+lwidth, ypos,
25, fontHeight, "");
wid.push_back(myXStart);
ypos += lineHeight + 3;
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
"Width:", kTextAlignLeft);
myWidth = new EditTextWidget(myTab, font, xpos+lwidth, ypos,
25, fontHeight, "");
wid.push_back(myWidth);
ypos += lineHeight + 3;
ypos += lineHeight + 5;
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
"YStart:", kTextAlignLeft);
myYStart = new EditTextWidget(myTab, font, xpos+lwidth, ypos,
25, fontHeight, "");
wid.push_back(myYStart);
ypos += lineHeight + 3;
ypos += lineHeight + 5;
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
"Height:", kTextAlignLeft);
myHeight = new EditTextWidget(myTab, font, xpos+lwidth, ypos,
25, fontHeight, "");
wid.push_back(myHeight);
ypos += lineHeight + 3;
ypos += lineHeight + 5;
pwidth = font.getStringWidth("Yes");
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
"Use Phosphor:", kTextAlignLeft);
@ -277,7 +263,7 @@ GameInfoDialog::GameInfoDialog(
15, fontHeight, "", kTextAlignLeft);
myPPBlendLabel->setFlags(WIDGET_CLEARBG);
ypos += lineHeight + 3;
ypos += lineHeight + 5;
new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight,
"Use HMBlanks:", kTextAlignLeft);
myHmoveBlanks = new PopUpWidget(myTab, font, xpos+lwidth, ypos,
@ -455,12 +441,6 @@ void GameInfoDialog::loadView()
else
myFormat->setSelectedTag(0);
s = myGameProperties.get(Display_XStart);
myXStart->setEditString(s);
s = myGameProperties.get(Display_Width);
myWidth->setEditString(s);
s = myGameProperties.get(Display_YStart);
myYStart->setEditString(s);
@ -579,12 +559,6 @@ void GameInfoDialog::saveConfig()
s = (tag == 4) ? "PAL60" : (tag == 3) ? "PAL" : (tag == 2) ? "NTSC" : "AUTO-DETECT";
myGameProperties.set(Display_Format, s);
s = myXStart->getEditString();
myGameProperties.set(Display_XStart, s);
s = myWidth->getEditString();
myGameProperties.set(Display_Width, s);
s = myYStart->getEditString();
myGameProperties.set(Display_YStart, s);

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: GameInfoDialog.hxx,v 1.21 2007-01-01 18:04:53 stephena Exp $
// $Id: GameInfoDialog.hxx,v 1.22 2007-02-06 23:34:34 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
@ -79,8 +79,6 @@ class GameInfoDialog : public Dialog, public CommandSender
// Display properties
PopUpWidget* myFormat;
EditTextWidget* myXStart;
EditTextWidget* myWidth;
EditTextWidget* myYStart;
EditTextWidget* myHeight;
PopUpWidget* myPhosphor;

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: HelpDialog.cxx,v 1.21 2007-01-01 18:04:53 stephena Exp $
// $Id: HelpDialog.cxx,v 1.22 2007-02-06 23:34:34 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
@ -111,10 +111,6 @@ void HelpDialog::updateStrings(uInt8 page, uInt8 lines,
ADD_BIND("Alt PageDown", "Decrease Display.YStart");
ADD_BIND("Ctrl PageUp", "Increase Display.Height");
ADD_BIND("Ctrl PageDown", "Decrease Display.Height");
ADD_BIND("Alt End", "Increase Display.XStart");
ADD_BIND("Alt Home", "Decrease Display.XStart");
ADD_BIND("Ctrl End", "Increase Display.Width");
ADD_BIND("Ctrl Home", "Decrease Display.Width");
break;
#else
case 1:
@ -149,10 +145,6 @@ void HelpDialog::updateStrings(uInt8 page, uInt8 lines,
ADD_BIND("Shift-Cmd PageDown", "Decrease Display.YStart");
ADD_BIND("Cmd PageUp", "Increase Display.Height");
ADD_BIND("Cmd PageDown", "Decrease Display.Height");
ADD_BIND("Shift-Cmd End", "Increase Display.XStart");
ADD_BIND("Shift-Cmd Home", "Decrease Display.XStart");
ADD_BIND("Cmd End", "Increase Display.Width");
ADD_BIND("Cmd Home", "Decrease Display.Width");
break;
#endif
case 4:

View File

@ -23,13 +23,11 @@ my %proptype = (
"Controller.Right" => 13,
"Controller.SwapPaddles" => 14,
"Display.Format" => 15,
"Display.XStart" => 16,
"Display.Width" => 17,
"Display.YStart" => 18,
"Display.Height" => 19,
"Display.Phosphor" => 20,
"Display.PPBlend" => 21,
"Emulation.HmoveBlanks" => 22
"Display.YStart" => 16,
"Display.Height" => 17,
"Display.Phosphor" => 18,
"Display.PPBlend" => 19,
"Emulation.HmoveBlanks" => 20
);
my @prop_defaults = (
@ -49,8 +47,6 @@ my @prop_defaults = (
"JOYSTICK",
"NO",
"AUTO-DETECT",
"0",
"160",
"34",
"210",
"NO",