Added logic to save game debug symbols when closed.
This commit is contained in:
parent
ced49bebc7
commit
d5b6c28df6
|
@ -61,6 +61,106 @@ debugSymbol_t *debugSymbolPage_t::getSymbolAtOffset( int ofs )
|
|||
return sym;
|
||||
}
|
||||
//--------------------------------------------------------------
|
||||
int debugSymbolPage_t::save(void)
|
||||
{
|
||||
FILE *fp;
|
||||
debugSymbol_t *sym;
|
||||
std::map <int, debugSymbol_t*>::iterator it;
|
||||
const char *romFile;
|
||||
char stmp[512];
|
||||
int i,j;
|
||||
|
||||
romFile = getRomFile();
|
||||
|
||||
if ( romFile == NULL )
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
i=0;
|
||||
while ( romFile[i] != 0 )
|
||||
{
|
||||
|
||||
if ( romFile[i] == '|' )
|
||||
{
|
||||
stmp[i] = '.';
|
||||
}
|
||||
else
|
||||
{
|
||||
stmp[i] = romFile[i];
|
||||
}
|
||||
i++;
|
||||
}
|
||||
stmp[i] = 0;
|
||||
|
||||
if ( pageNum > 0 )
|
||||
{
|
||||
char suffix[32];
|
||||
|
||||
sprintf( suffix, ".%X.nl", pageNum );
|
||||
|
||||
strcat( stmp, suffix );
|
||||
}
|
||||
else
|
||||
{
|
||||
strcat( stmp, ".ram.nl" );
|
||||
}
|
||||
|
||||
fp = fopen( stmp, "w" );
|
||||
|
||||
if ( fp == NULL )
|
||||
{
|
||||
printf("Error: Could not open file '%s' for writing\n", stmp );
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (it=symMap.begin(); it!=symMap.end(); it++)
|
||||
{
|
||||
const char *c;
|
||||
|
||||
sym = it->second;
|
||||
|
||||
i=0; j=0; c = sym->comment.c_str();
|
||||
|
||||
while ( c[i] != 0 )
|
||||
{
|
||||
if ( c[i] == '\n' )
|
||||
{
|
||||
i++; break;
|
||||
}
|
||||
else
|
||||
{
|
||||
stmp[j] = c[i]; j++; i++;
|
||||
}
|
||||
}
|
||||
stmp[j] = 0;
|
||||
|
||||
fprintf( fp, "$%04X#%s#%s\n", sym->ofs, sym->name.c_str(), stmp );
|
||||
|
||||
j=0;
|
||||
while ( c[i] != 0 )
|
||||
{
|
||||
if ( c[i] == '\n' )
|
||||
{
|
||||
i++; stmp[j] = 0;
|
||||
|
||||
if ( j > 0 )
|
||||
{
|
||||
fprintf( fp, "\\%s\n", stmp );
|
||||
}
|
||||
j=0;
|
||||
}
|
||||
else
|
||||
{
|
||||
stmp[j] = c[i]; j++; i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
|
||||
return 0;
|
||||
}
|
||||
//--------------------------------------------------------------
|
||||
void debugSymbolPage_t::print(void)
|
||||
{
|
||||
FILE *fp;
|
||||
|
@ -356,6 +456,7 @@ int debugSymbolTable_t::loadGameSymbols(void)
|
|||
{
|
||||
int nPages;
|
||||
|
||||
this->save();
|
||||
this->clear();
|
||||
|
||||
loadFileNL( 0x0000 );
|
||||
|
@ -391,6 +492,19 @@ debugSymbol_t *debugSymbolTable_t::getSymbolAtBankOffset( int bank, int ofs )
|
|||
return sym;
|
||||
}
|
||||
//--------------------------------------------------------------
|
||||
void debugSymbolTable_t::save(void)
|
||||
{
|
||||
debugSymbolPage_t *page;
|
||||
std::map <int, debugSymbolPage_t*>::iterator it;
|
||||
|
||||
for (it=pageMap.begin(); it!=pageMap.end(); it++)
|
||||
{
|
||||
page = it->second;
|
||||
|
||||
page->save();
|
||||
}
|
||||
}
|
||||
//--------------------------------------------------------------
|
||||
void debugSymbolTable_t::print(void)
|
||||
{
|
||||
debugSymbolPage_t *page;
|
||||
|
|
|
@ -26,6 +26,7 @@ struct debugSymbolPage_t
|
|||
debugSymbolPage_t(void);
|
||||
~debugSymbolPage_t(void);
|
||||
|
||||
int save(void);
|
||||
void print(void);
|
||||
int size(void){ return symMap.size(); }
|
||||
|
||||
|
@ -47,6 +48,7 @@ class debugSymbolTable_t
|
|||
int loadGameSymbols(void);
|
||||
int numPages(void){ return pageMap.size(); }
|
||||
|
||||
void save(void);
|
||||
void clear(void);
|
||||
void print(void);
|
||||
|
||||
|
|
|
@ -280,6 +280,9 @@ CloseGame(void)
|
|||
}
|
||||
hexEditorSaveBookmarks();
|
||||
|
||||
debugSymbolTable.save();
|
||||
debugSymbolTable.clear();
|
||||
|
||||
int state_to_save;
|
||||
g_config->getOption("SDL.AutoSaveState", &state_to_save);
|
||||
if (state_to_save < 10 && state_to_save >= 0){
|
||||
|
|
Loading…
Reference in New Issue