mirror of https://github.com/stella-emu/stella.git
Improved ROM launcher so that going to a parent folder automatically
selects the item that was previously selected. Fixed bug in Cheat dialog where editing a cheat didn't remove the old one. Updated TODO, rearranging improved disassembly as the #1 priority for the next release; I don't have time to finish it now. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1873 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
616ce6039a
commit
6144e4fd57
40
Todo.txt
40
Todo.txt
|
@ -9,13 +9,17 @@
|
||||||
SSSS ttt eeeee llll llll aaaaa
|
SSSS ttt eeeee llll llll aaaaa
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
To Do List - August 2009
|
To Do List - September 2009
|
||||||
===============================================================================
|
===============================================================================
|
||||||
|
|
||||||
If you would like to contribute to Stella's development then find something
|
If you would like to contribute to Stella's development then find something
|
||||||
on the list below and send email to Bradford Mott at bwmott@acm.org or
|
on the list below and send email to Bradford Mott at bwmott@acm.org or
|
||||||
Stephen Anthony at stephena@users.sourceforge.net.
|
Stephen Anthony at stephena@users.sourceforge.net.
|
||||||
|
|
||||||
|
* Step-debug through disassembled zero-page and SC code
|
||||||
|
|
||||||
|
* Either Support Distella as frontend or integrate a 6507 Disassembler
|
||||||
|
|
||||||
* TIA infrastructure: further improve 'illegal' HMOVE emulation to fix
|
* TIA infrastructure: further improve 'illegal' HMOVE emulation to fix
|
||||||
problems in several homebrew ROMs.
|
problems in several homebrew ROMs.
|
||||||
|
|
||||||
|
@ -26,10 +30,6 @@ Stephen Anthony at stephena@users.sourceforge.net.
|
||||||
|
|
||||||
* Look into adding Blargg NTSC filtering (perhaps as a GLSL program).
|
* Look into adding Blargg NTSC filtering (perhaps as a GLSL program).
|
||||||
|
|
||||||
* Step-debug through disassembled zero-page code (get clarification on this)
|
|
||||||
|
|
||||||
* Either Support Distella as frontend or integrate a 6507 Disassembler
|
|
||||||
|
|
||||||
* Add better support for 'floating' TIA reads as described here:
|
* Add better support for 'floating' TIA reads as described here:
|
||||||
http://www.atariage.com/forums/index.php?s=&showtopic=143363&view=findpost&p=1762433
|
http://www.atariage.com/forums/index.php?s=&showtopic=143363&view=findpost&p=1762433
|
||||||
|
|
||||||
|
@ -66,37 +66,31 @@ Stephen Anthony at stephena@users.sourceforge.net.
|
||||||
|
|
||||||
* More support for copy and paste.
|
* More support for copy and paste.
|
||||||
|
|
||||||
* Add support for uncommon controllers (KidVid, Lightgun, etc)
|
* Add support for uncommon controllers (KidVid, Lightgun, etc).
|
||||||
|
|
||||||
* Fix "Tron Man Picture Cart" (32K Tigervision bankswitching) issue
|
* Fix "Tron Man Picture Cart" (32K Tigervision bankswitching) issue.
|
||||||
|
|
||||||
* Possible 'trace mode' in debugger (generate a file containing all
|
* Possible 'trace mode' in debugger (generate a file containing all
|
||||||
internal state)
|
internal state).
|
||||||
|
|
||||||
* Automatic statesave at beginning of each frame (including state of
|
* Automatic statesave at beginning of each frame (including state of
|
||||||
controllers and console switches), with the ability to 'roll back' to
|
controllers and console switches), with the ability to 'roll back' to
|
||||||
a previous state/frame
|
a previous state/frame.
|
||||||
|
|
||||||
* RewindManager to set up how often to save a state, and for how long
|
* RewindManager to set up how often to save a state, and for how long
|
||||||
(debugger would be once per frame, normal probably once per second)
|
(debugger would be once per frame, normal probably once per second).
|
||||||
|
|
||||||
* Extra SECAM 'quirks' (see Stella 2.4.1 release thread on AtariAge)
|
* Extra SECAM 'quirks' (see Stella 2.4.1 release thread on AtariAge).
|
||||||
|
|
||||||
* Improve speed of Pitfall2 emulation
|
* Improve speed of Pitfall2 emulation.
|
||||||
|
|
||||||
* Add auto-detection for all remaining bankswitch types
|
* Add auto-detection for all remaining bankswitch types.
|
||||||
|
|
||||||
* Either Support DASM as frontend or integrate a 6507 Assembler
|
* Either Support DASM as frontend or integrate a 6507 Assembler.
|
||||||
|
|
||||||
* Add a Sprite/Animation Editor
|
* AVI/MPEG export.
|
||||||
|
|
||||||
* AVI/MPEG export
|
* Client/Server networked play for up to 4 Computers via LAN/Internet.
|
||||||
|
|
||||||
* Add a PF Editor
|
|
||||||
|
|
||||||
* Client/Server networked play for up to 4 Computers via LAN/Internet
|
|
||||||
|
|
||||||
* Tracking Hiscores
|
|
||||||
|
|
||||||
* Find people to handle new ports, and try to more actively recruit people
|
* Find people to handle new ports, and try to more actively recruit people
|
||||||
into the Stella project
|
into the Stella project.
|
||||||
|
|
|
@ -55,7 +55,7 @@ const Cheat* CheatManager::add(const string& name, const string& code,
|
||||||
// Delete duplicate entries
|
// Delete duplicate entries
|
||||||
for(unsigned int i = 0; i < myCheatList.size(); i++)
|
for(unsigned int i = 0; i < myCheatList.size(); i++)
|
||||||
{
|
{
|
||||||
if(myCheatList[i]->code() == code)
|
if(myCheatList[i]->name() == name || myCheatList[i]->code() == code)
|
||||||
{
|
{
|
||||||
myCheatList.remove_at(i);
|
myCheatList.remove_at(i);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -52,8 +52,7 @@ class FixedStack
|
||||||
{
|
{
|
||||||
T tmp;
|
T tmp;
|
||||||
assert(_size > 0);
|
assert(_size > 0);
|
||||||
tmp = _stack[_size - 1];
|
tmp = _stack[--_size];
|
||||||
_stack[--_size] = 0;
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
int size() const { return _size; }
|
int size() const { return _size; }
|
||||||
|
|
|
@ -234,7 +234,7 @@ void RomWidget::initialUpdate()
|
||||||
BoolArray state;
|
BoolArray state;
|
||||||
|
|
||||||
// Disassemble zero-page RAM and entire bank and reset breakpoints
|
// Disassemble zero-page RAM and entire bank and reset breakpoints
|
||||||
dbg.disassemble(myAddrList, label, data, disasm, 0x80, 0xff);
|
// dbg.disassemble(myAddrList, label, data, disasm, 0x80, 0xff);
|
||||||
dbg.disassemble(myAddrList, label, data, disasm, 0xf000, 0xffff);
|
dbg.disassemble(myAddrList, label, data, disasm, 0xf000, 0xffff);
|
||||||
for(unsigned int i = 0; i < data.size(); ++i)
|
for(unsigned int i = 0; i < data.size(); ++i)
|
||||||
{
|
{
|
||||||
|
|
|
@ -253,7 +253,7 @@ void LauncherDialog::enableButtons(bool enable)
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void LauncherDialog::updateListing()
|
void LauncherDialog::updateListing(const string& nameToSelect)
|
||||||
{
|
{
|
||||||
// Start with empty list
|
// Start with empty list
|
||||||
myGameList->clear();
|
myGameList->clear();
|
||||||
|
@ -284,8 +284,10 @@ void LauncherDialog::updateListing()
|
||||||
int selected = -1;
|
int selected = -1;
|
||||||
if(!myList->getList().isEmpty())
|
if(!myList->getList().isEmpty())
|
||||||
{
|
{
|
||||||
string lastrom = instance().settings().getString("lastrom");
|
const string& find =
|
||||||
if(lastrom == "")
|
nameToSelect == "" ? instance().settings().getString("lastrom") : nameToSelect;
|
||||||
|
|
||||||
|
if(find == "")
|
||||||
selected = 0;
|
selected = 0;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -294,7 +296,7 @@ void LauncherDialog::updateListing()
|
||||||
for(iter = myList->getList().begin(); iter != myList->getList().end();
|
for(iter = myList->getList().begin(); iter != myList->getList().end();
|
||||||
++iter, ++itemToSelect)
|
++iter, ++itemToSelect)
|
||||||
{
|
{
|
||||||
if(lastrom == *iter)
|
if(find == *iter)
|
||||||
{
|
{
|
||||||
selected = itemToSelect;
|
selected = itemToSelect;
|
||||||
break;
|
break;
|
||||||
|
@ -490,11 +492,19 @@ void LauncherDialog::handleCommand(CommandSender* sender, int cmd,
|
||||||
// Directory's should be selected (ie, enter them and redisplay)
|
// Directory's should be selected (ie, enter them and redisplay)
|
||||||
if(myGameList->isDir(item))
|
if(myGameList->isDir(item))
|
||||||
{
|
{
|
||||||
|
string dirname = "";
|
||||||
if(myGameList->name(item) == " [..]")
|
if(myGameList->name(item) == " [..]")
|
||||||
|
{
|
||||||
myCurrentNode = myCurrentNode.getParent();
|
myCurrentNode = myCurrentNode.getParent();
|
||||||
|
if(!myNodeNames.empty())
|
||||||
|
dirname = myNodeNames.pop();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
myCurrentNode = FilesystemNode(rom);
|
myCurrentNode = FilesystemNode(rom);
|
||||||
updateListing();
|
myNodeNames.push(myGameList->name(item));
|
||||||
|
}
|
||||||
|
updateListing(dirname);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -524,7 +534,7 @@ void LauncherDialog::handleCommand(CommandSender* sender, int cmd,
|
||||||
case kPrevDirCmd:
|
case kPrevDirCmd:
|
||||||
case kListPrevDirCmd:
|
case kListPrevDirCmd:
|
||||||
myCurrentNode = myCurrentNode.getParent();
|
myCurrentNode = myCurrentNode.getParent();
|
||||||
updateListing();
|
updateListing(myNodeNames.empty() ? "" : myNodeNames.pop());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case kListSelectionChangedCmd:
|
case kListSelectionChangedCmd:
|
||||||
|
|
|
@ -42,6 +42,7 @@ class StringListWidget;
|
||||||
#include "Dialog.hxx"
|
#include "Dialog.hxx"
|
||||||
#include "FSNode.hxx"
|
#include "FSNode.hxx"
|
||||||
#include "StringList.hxx"
|
#include "StringList.hxx"
|
||||||
|
#include "Stack.hxx"
|
||||||
|
|
||||||
// These must be accessible from dialogs created by this class
|
// These must be accessible from dialogs created by this class
|
||||||
enum {
|
enum {
|
||||||
|
@ -71,7 +72,7 @@ class LauncherDialog : public Dialog
|
||||||
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||||
|
|
||||||
void loadConfig();
|
void loadConfig();
|
||||||
void updateListing();
|
void updateListing(const string& nameToSelect = "");
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void enableButtons(bool enable);
|
void enableButtons(bool enable);
|
||||||
|
@ -104,6 +105,7 @@ class LauncherDialog : public Dialog
|
||||||
int mySelectedItem;
|
int mySelectedItem;
|
||||||
int myRomInfoSize;
|
int myRomInfoSize;
|
||||||
FilesystemNode myCurrentNode;
|
FilesystemNode myCurrentNode;
|
||||||
|
FixedStack<string> myNodeNames;
|
||||||
|
|
||||||
bool myShowDirs;
|
bool myShowDirs;
|
||||||
StringList myRomExts;
|
StringList myRomExts;
|
||||||
|
|
Loading…
Reference in New Issue