CDLOGGER: CHR logging for the new PPU engine, TODO: doc update
This commit is contained in:
parent
e30c685c5e
commit
a3e21f76cd
|
@ -364,7 +364,6 @@ int condition(watchpointinfo* wp)
|
||||||
|
|
||||||
volatile int codecount, datacount, undefinedcount;
|
volatile int codecount, datacount, undefinedcount;
|
||||||
unsigned char *cdloggerdata;
|
unsigned char *cdloggerdata;
|
||||||
char *cdlogfilename;
|
|
||||||
static int indirectnext;
|
static int indirectnext;
|
||||||
|
|
||||||
int debug_loggingCD;
|
int debug_loggingCD;
|
||||||
|
|
|
@ -43,6 +43,11 @@ void SaveStrippedRom(int invert);
|
||||||
extern iNES_HEADER head; //defined in ines.c
|
extern iNES_HEADER head; //defined in ines.c
|
||||||
extern uint8 *trainerpoo;
|
extern uint8 *trainerpoo;
|
||||||
|
|
||||||
|
//---------CDLogger VROM
|
||||||
|
extern volatile int rendercount, vromreadcount, undefinedvromcount;
|
||||||
|
extern unsigned char *cdloggervdata;
|
||||||
|
extern int newppu;
|
||||||
|
|
||||||
int CDLogger_wndx=0, CDLogger_wndy=0;
|
int CDLogger_wndx=0, CDLogger_wndy=0;
|
||||||
|
|
||||||
//extern uint8 *ROM;
|
//extern uint8 *ROM;
|
||||||
|
@ -110,10 +115,13 @@ BOOL CALLBACK CDLoggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
if (CDLogger_wndy==-32000) CDLogger_wndy=0;
|
if (CDLogger_wndy==-32000) CDLogger_wndy=0;
|
||||||
SetWindowPos(hwndDlg,0,CDLogger_wndx,CDLogger_wndy,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOOWNERZORDER);
|
SetWindowPos(hwndDlg,0,CDLogger_wndx,CDLogger_wndy,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOOWNERZORDER);
|
||||||
hCDLogger = hwndDlg;
|
hCDLogger = hwndDlg;
|
||||||
codecount = datacount = 0;
|
codecount = datacount = rendercount = vromreadcount = 0;
|
||||||
undefinedcount = PRGsize[0];
|
undefinedcount = PRGsize[0];
|
||||||
|
undefinedvromcount = CHRsize[0];
|
||||||
cdloggerdata = (unsigned char*)malloc(PRGsize[0]); //mbg merge 7/18/06 added cast
|
cdloggerdata = (unsigned char*)malloc(PRGsize[0]); //mbg merge 7/18/06 added cast
|
||||||
|
cdloggervdata = (unsigned char*)malloc(CHRsize[0]);
|
||||||
ZeroMemory(cdloggerdata,PRGsize[0]);
|
ZeroMemory(cdloggerdata,PRGsize[0]);
|
||||||
|
ZeroMemory(cdloggervdata,CHRsize[0]);
|
||||||
break;
|
break;
|
||||||
case WM_CLOSE:
|
case WM_CLOSE:
|
||||||
case WM_QUIT:
|
case WM_QUIT:
|
||||||
|
@ -126,7 +134,9 @@ MB_OK);
|
||||||
}
|
}
|
||||||
FCEUI_SetLoggingCD(0);
|
FCEUI_SetLoggingCD(0);
|
||||||
free(cdloggerdata);
|
free(cdloggerdata);
|
||||||
|
free(cdloggervdata);
|
||||||
cdloggerdata=0;
|
cdloggerdata=0;
|
||||||
|
cdloggervdata=0;
|
||||||
hCDLogger = 0;
|
hCDLogger = 0;
|
||||||
EndDialog(hwndDlg,0);
|
EndDialog(hwndDlg,0);
|
||||||
break;
|
break;
|
||||||
|
@ -135,9 +145,11 @@ MB_OK);
|
||||||
case BN_CLICKED:
|
case BN_CLICKED:
|
||||||
switch(LOWORD(wParam)) {
|
switch(LOWORD(wParam)) {
|
||||||
case BTN_CDLOGGER_RESET:
|
case BTN_CDLOGGER_RESET:
|
||||||
codecount = datacount = 0;
|
codecount = datacount = rendercount = vromreadcount = 0;
|
||||||
undefinedcount = PRGsize[0];
|
undefinedcount = PRGsize[0];
|
||||||
|
undefinedvromcount = CHRsize[0];
|
||||||
ZeroMemory(cdloggerdata,PRGsize[0]);
|
ZeroMemory(cdloggerdata,PRGsize[0]);
|
||||||
|
ZeroMemory(cdloggervdata,CHRsize[0]);
|
||||||
UpdateCDLogger();
|
UpdateCDLogger();
|
||||||
break;
|
break;
|
||||||
case BTN_CDLOGGER_LOAD:
|
case BTN_CDLOGGER_LOAD:
|
||||||
|
@ -157,6 +169,16 @@ MB_OK);
|
||||||
SetDlgItemText(hCDLogger, BTN_CDLOGGER_START_PAUSE, "Start");
|
SetDlgItemText(hCDLogger, BTN_CDLOGGER_START_PAUSE, "Start");
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
if(!newppu)
|
||||||
|
{
|
||||||
|
if(MessageBox(hCDLogger,
|
||||||
|
"In order for CHR data logging to take effect, the New PPU engine logger must also be enabled.\
|
||||||
|
Would you like to enable new PPU engine now?","Enable new PPU engine?",
|
||||||
|
MB_YESNO) == IDYES)
|
||||||
|
{
|
||||||
|
FCEU_TogglePPU();
|
||||||
|
}
|
||||||
|
}
|
||||||
FCEUI_SetLoggingCD(1);
|
FCEUI_SetLoggingCD(1);
|
||||||
EnableTracerMenuItems();
|
EnableTracerMenuItems();
|
||||||
SetDlgItemText(hCDLogger, BTN_CDLOGGER_START_PAUSE, "Pause");
|
SetDlgItemText(hCDLogger, BTN_CDLOGGER_START_PAUSE, "Pause");
|
||||||
|
@ -190,14 +212,6 @@ void LoadCDLog (const char* nameo)
|
||||||
int i,j;
|
int i,j;
|
||||||
|
|
||||||
strcpy(loadedcdfile,nameo);
|
strcpy(loadedcdfile,nameo);
|
||||||
//FCEUD_PrintError(loadedcdfile);
|
|
||||||
|
|
||||||
//fseek(FP,0,SEEK_SET);
|
|
||||||
//codecount = datacount = 0;
|
|
||||||
//undefinedcount = PRGsize[0];
|
|
||||||
|
|
||||||
//cdloggerdata = malloc(PRGsize[0]);
|
|
||||||
|
|
||||||
|
|
||||||
FP = fopen(loadedcdfile,"rb");
|
FP = fopen(loadedcdfile,"rb");
|
||||||
if(FP == NULL){
|
if(FP == NULL){
|
||||||
|
@ -205,9 +219,6 @@ void LoadCDLog (const char* nameo)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//codecount = datacount = 0;
|
|
||||||
//undefinedcount = PRGsize[0];
|
|
||||||
|
|
||||||
for(i = 0;i < (int)PRGsize[0];i++){
|
for(i = 0;i < (int)PRGsize[0];i++){
|
||||||
j = fgetc(FP);
|
j = fgetc(FP);
|
||||||
if(j == EOF)break;
|
if(j == EOF)break;
|
||||||
|
@ -216,6 +227,16 @@ void LoadCDLog (const char* nameo)
|
||||||
if((j & 3) && !(cdloggerdata[i] & 3))undefinedcount--; //the appropriate counter.
|
if((j & 3) && !(cdloggerdata[i] & 3))undefinedcount--; //the appropriate counter.
|
||||||
cdloggerdata[i] |= j;
|
cdloggerdata[i] |= j;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(i = 0;i < (int)CHRsize[0];i++){
|
||||||
|
j = fgetc(FP);
|
||||||
|
if(j == EOF)break;
|
||||||
|
if((j & 1) && !(cdloggervdata[i] & 1))rendercount++; //if the new byte has something logged and
|
||||||
|
if((j & 2) && !(cdloggervdata[i] & 2))vromreadcount++; //if the new byte has something logged and
|
||||||
|
if((j & 3) && !(cdloggervdata[i] & 3))undefinedvromcount--; //the appropriate counter.
|
||||||
|
cdloggervdata[i] |= j;
|
||||||
|
}
|
||||||
|
|
||||||
fclose(FP);
|
fclose(FP);
|
||||||
UpdateCDLogger();
|
UpdateCDLogger();
|
||||||
return;
|
return;
|
||||||
|
@ -285,6 +306,7 @@ void SaveCDLogFile(){ //todo make this button work before you've saved as
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
fwrite(cdloggerdata,PRGsize[0],1,FP);
|
fwrite(cdloggerdata,PRGsize[0],1,FP);
|
||||||
|
fwrite(cdloggervdata,CHRsize[0],1,FP);
|
||||||
fclose(FP);
|
fclose(FP);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -315,8 +337,14 @@ void UpdateCDLogger(){
|
||||||
if(!hCDLogger)return;
|
if(!hCDLogger)return;
|
||||||
|
|
||||||
char str[50];
|
char str[50];
|
||||||
float fcodecount = codecount, fdatacount = datacount,
|
float fcodecount = codecount;
|
||||||
fundefinedcount = undefinedcount, fromsize = PRGsize[0];
|
float fdatacount = datacount;
|
||||||
|
float frendercount = rendercount;
|
||||||
|
float fvromreadcount = vromreadcount;
|
||||||
|
float fundefinedcount = undefinedcount;
|
||||||
|
float fundefinedvromcount = undefinedvromcount;
|
||||||
|
float fromsize = PRGsize[0];
|
||||||
|
float fvromsize = CHRsize[0];
|
||||||
|
|
||||||
sprintf(str,"0x%06x %.2f%%",codecount,fcodecount/fromsize*100);
|
sprintf(str,"0x%06x %.2f%%",codecount,fcodecount/fromsize*100);
|
||||||
SetDlgItemText(hCDLogger,LBL_CDLOGGER_CODECOUNT,str);
|
SetDlgItemText(hCDLogger,LBL_CDLOGGER_CODECOUNT,str);
|
||||||
|
@ -324,6 +352,13 @@ void UpdateCDLogger(){
|
||||||
SetDlgItemText(hCDLogger,LBL_CDLOGGER_DATACOUNT,str);
|
SetDlgItemText(hCDLogger,LBL_CDLOGGER_DATACOUNT,str);
|
||||||
sprintf(str,"0x%06x %.2f%%",undefinedcount,fundefinedcount/fromsize*100);
|
sprintf(str,"0x%06x %.2f%%",undefinedcount,fundefinedcount/fromsize*100);
|
||||||
SetDlgItemText(hCDLogger,LBL_CDLOGGER_UNDEFCOUNT,str);
|
SetDlgItemText(hCDLogger,LBL_CDLOGGER_UNDEFCOUNT,str);
|
||||||
|
|
||||||
|
sprintf(str,"0x%06x %.2f%%",rendercount,frendercount/fvromsize*100);
|
||||||
|
SetDlgItemText(hCDLogger,LBL_CDLOGGER_RENDERCOUNT,str);
|
||||||
|
sprintf(str,"0x%06x %.2f%%",vromreadcount,fvromreadcount/fvromsize*100);
|
||||||
|
SetDlgItemText(hCDLogger,LBL_CDLOGGER_VROMREADCOUNT,str);
|
||||||
|
sprintf(str,"0x%06x %.2f%%",undefinedvromcount,fundefinedvromcount/fvromsize*100);
|
||||||
|
SetDlgItemText(hCDLogger,LBL_CDLOGGER_UNDEFVROMCOUNT,str);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -414,9 +449,15 @@ void SaveStrippedRom(int invert){ //this is based off of iNesSave()
|
||||||
pchar = invert?ROM[i]:0;
|
pchar = invert?ROM[i]:0;
|
||||||
fputc(pchar, fp);
|
fputc(pchar, fp);
|
||||||
}
|
}
|
||||||
//fwrite(ROM,0x4000,head.ROM_size,fp);
|
|
||||||
|
|
||||||
if(head.VROM_size)fwrite(VROM,0x2000,head.VROM_size,fp);
|
for(i = 0;i < head.VROM_size*0x2000;i++){
|
||||||
|
unsigned char vchar;
|
||||||
|
if(cdloggervdata[i] & 1)
|
||||||
|
vchar = invert?0:VROM[i];
|
||||||
|
else
|
||||||
|
vchar = invert?VROM[i]:0;
|
||||||
|
fputc(vchar, fp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#undef APSTUDIO_READONLY_SYMBOLS
|
#undef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// Íåéòðàëüíûé resources
|
// Neutral resources
|
||||||
|
|
||||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
|
||||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
|
@ -1563,31 +1563,37 @@ BEGIN
|
||||||
DEFPUSHBUTTON "&OK",IDOK,67,52,50,14
|
DEFPUSHBUTTON "&OK",IDOK,67,52,50,14
|
||||||
END
|
END
|
||||||
|
|
||||||
CDLOGGER DIALOGEX 0, 0, 315, 218
|
CDLOGGER DIALOGEX 0, 0, 315, 264
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
EXSTYLE WS_EX_ACCEPTFILES
|
EXSTYLE WS_EX_ACCEPTFILES
|
||||||
CAPTION "Code Data Logger"
|
CAPTION "Code Data Logger"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Load...",BTN_CDLOGGER_LOAD,7,81,50,14
|
DEFPUSHBUTTON "Load...",BTN_CDLOGGER_LOAD,7,105,50,14
|
||||||
PUSHBUTTON "Save",BTN_CDLOGGER_SAVE,257,81,50,14
|
PUSHBUTTON "Save",BTN_CDLOGGER_SAVE,257,105,50,14
|
||||||
GROUPBOX "Code Data Log Status",-1,3,4,308,131,BS_CENTER
|
GROUPBOX "Code/Data Log Status",-1,3,4,308,173,BS_CENTER
|
||||||
PUSHBUTTON "Start",BTN_CDLOGGER_START_PAUSE,129,81,50,14
|
PUSHBUTTON "Start",BTN_CDLOGGER_START_PAUSE,129,105,50,14
|
||||||
GROUPBOX "Address Label Logger",65534,3,136,308,79,BS_CENTER
|
GROUPBOX "Address Label Logger",65534,2,180,308,79,BS_CENTER
|
||||||
PUSHBUTTON "Load...",111,7,190,50,14,WS_DISABLED
|
PUSHBUTTON "Load...",111,7,190,50,14,WS_DISABLED
|
||||||
PUSHBUTTON "Start",112,127,189,50,14,WS_DISABLED
|
PUSHBUTTON "Start",112,127,189,50,14,WS_DISABLED
|
||||||
PUSHBUTTON "Save...",113,256,189,50,14,WS_DISABLED
|
PUSHBUTTON "Save...",113,256,189,50,14,WS_DISABLED
|
||||||
LTEXT "4067 - 29.5%",LBL_CDLOGGER_CODECOUNT,38,31,68,11
|
LTEXT "4067 - 29.5%",LBL_CDLOGGER_CODECOUNT,38,31,68,11
|
||||||
GROUPBOX "Bytes Logged As Code",65533,29,20,84,27
|
GROUPBOX "PRG Logged as Code",65533,29,20,84,27
|
||||||
GROUPBOX "Bytes Logged as data",65532,117,20,84,27
|
GROUPBOX "PRG Logged as Data",65532,117,20,84,27
|
||||||
LTEXT "7092 - 37.2%",LBL_CDLOGGER_DATACOUNT,128,31,65,9
|
LTEXT "7092 - 37.2%",LBL_CDLOGGER_DATACOUNT,128,31,65,9
|
||||||
GROUPBOX "Bytes Not Logged",65531,205,20,79,27
|
GROUPBOX "PRG not Logged",65531,205,20,79,27
|
||||||
LTEXT "6072 - 32.7%",LBL_CDLOGGER_UNDEFCOUNT,210,31,60,8
|
LTEXT "6072 - 32.7%",LBL_CDLOGGER_UNDEFCOUNT,210,31,60,8
|
||||||
LTEXT "Itsa me the Code Data Logger! Press Start to play!",65530,69,56,172,12
|
LTEXT "Itsa me the Code/Data Logger! Press Start to play!",65530,69,80,172,12
|
||||||
PUSHBUTTON "Reset Log",BTN_CDLOGGER_RESET,7,66,50,14
|
PUSHBUTTON "Reset Log",BTN_CDLOGGER_RESET,7,90,50,14
|
||||||
PUSHBUTTON "Save as...",BTN_CDLOGGER_SAVE_AS,257,66,50,14
|
PUSHBUTTON "Save as...",BTN_CDLOGGER_SAVE_AS,257,90,50,14
|
||||||
PUSHBUTTON "Save Stripped iNes Rom...",BTN_CDLOGGER_SAVE_STRIPPED,208,102,99,14
|
PUSHBUTTON "Save Stripped iNes Rom...",BTN_CDLOGGER_SAVE_STRIPPED,208,126,99,14
|
||||||
PUSHBUTTON "Save Unused Data...",BTN_CDLOGGER_SAVE_UNUSED,208,117,99,14
|
PUSHBUTTON "Save Unused Data...",BTN_CDLOGGER_SAVE_UNUSED,208,141,99,14
|
||||||
|
LTEXT "4067 - 29.5%",LBL_CDLOGGER_RENDERCOUNT,37,60,68,11
|
||||||
|
GROUPBOX "CHR Rendered",-1,29,50,84,27
|
||||||
|
GROUPBOX "CHR Logged as Data",-1,117,50,84,27
|
||||||
|
LTEXT "7092 - 37.2%",LBL_CDLOGGER_VROMREADCOUNT,127,60,65,9
|
||||||
|
GROUPBOX "CHR not Logged",-1,205,50,79,27
|
||||||
|
LTEXT "6072 - 32.7%",LBL_CDLOGGER_UNDEFVROMCOUNT,209,60,60,8
|
||||||
END
|
END
|
||||||
|
|
||||||
PPUVIEW DIALOGEX 44, 38, 355, 246
|
PPUVIEW DIALOGEX 44, 38, 355, 246
|
||||||
|
@ -2073,7 +2079,7 @@ BEGIN
|
||||||
|
|
||||||
"CDLOGGER", DIALOG
|
"CDLOGGER", DIALOG
|
||||||
BEGIN
|
BEGIN
|
||||||
BOTTOMMARGIN, 213
|
BOTTOMMARGIN, 259
|
||||||
END
|
END
|
||||||
|
|
||||||
"PPUVIEW", DIALOG
|
"PPUVIEW", DIALOG
|
||||||
|
@ -2118,12 +2124,12 @@ BEGIN
|
||||||
END
|
END
|
||||||
#endif // APSTUDIO_INVOKED
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
#endif // Íåéòðàëüíûé resources
|
#endif // Neutral resources
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// Àíãëèéñêèé (ÑØÀ) resources
|
// English (United States) resources
|
||||||
|
|
||||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
@ -2357,7 +2363,7 @@ IDB_BITMAP_SELECTED17 BITMAP "res\\te_17_selected.bmp"
|
||||||
IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp"
|
IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp"
|
||||||
IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp"
|
IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp"
|
||||||
IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp"
|
IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp"
|
||||||
#endif // Àíãëèéñêèé (ÑØÀ) resources
|
#endif // English (United States) resources
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -119,6 +119,7 @@
|
||||||
#define IDC_CHECK_LOG_REGISTERS 110
|
#define IDC_CHECK_LOG_REGISTERS 110
|
||||||
#define IDC_DEBUGGER_BREAK_ON_BAD_OP 110
|
#define IDC_DEBUGGER_BREAK_ON_BAD_OP 110
|
||||||
#define IDC_ROMPATCHER_BTN_APPLY 110
|
#define IDC_ROMPATCHER_BTN_APPLY 110
|
||||||
|
#define LBL_CDLOGGER_RENDERCOUNT 110
|
||||||
#define MENU_LOAD_STATE 111
|
#define MENU_LOAD_STATE 111
|
||||||
#define CB_DISABLE_SCREEN_SAVER 111
|
#define CB_DISABLE_SCREEN_SAVER 111
|
||||||
#define BTN_FAM 111
|
#define BTN_FAM 111
|
||||||
|
@ -133,11 +134,13 @@
|
||||||
#define IDC_CHECK_LOG_NEW_INSTRUCTIONS 114
|
#define IDC_CHECK_LOG_NEW_INSTRUCTIONS 114
|
||||||
#define IDD_DIALOG1 114
|
#define IDD_DIALOG1 114
|
||||||
#define IDC_DEBUGGER_RUN_LINE 114
|
#define IDC_DEBUGGER_RUN_LINE 114
|
||||||
|
#define LBL_CDLOGGER_VROMREADCOUNT 114
|
||||||
#define LBL_AUTO_HOLD 115
|
#define LBL_AUTO_HOLD 115
|
||||||
#define IDC_CHECK_LOG_NEW_DATA 115
|
#define IDC_CHECK_LOG_NEW_DATA 115
|
||||||
#define IDD_DIALOG2 115
|
#define IDD_DIALOG2 115
|
||||||
#define IDC_DEBUGGER_STEP_OUT3 115
|
#define IDC_DEBUGGER_STEP_OUT3 115
|
||||||
#define IDC_DEBUGGER_RUN_FRAME2 115
|
#define IDC_DEBUGGER_RUN_FRAME2 115
|
||||||
|
#define LBL_CDLOGGER_UNDEFVROMCOUNT 115
|
||||||
#define LBL_CLEAR_AH 116
|
#define LBL_CLEAR_AH 116
|
||||||
#define IDC_CHECK_LOG_UPDATE_WINDOW 116
|
#define IDC_CHECK_LOG_UPDATE_WINDOW 116
|
||||||
#define IDC_DEBUGGER_RESET_CYCLES_COUNTER 116
|
#define IDC_DEBUGGER_RESET_CYCLES_COUNTER 116
|
||||||
|
|
49
src/ppu.cpp
49
src/ppu.cpp
|
@ -343,7 +343,7 @@ void (*PPU_hook)(uint32 A);
|
||||||
uint8 vtoggle=0;
|
uint8 vtoggle=0;
|
||||||
uint8 XOffset=0;
|
uint8 XOffset=0;
|
||||||
|
|
||||||
uint32 TempAddr=0,RefreshAddr=0;
|
uint32 TempAddr=0,RefreshAddr=0,DummyRead=0;
|
||||||
|
|
||||||
static int maxsprites=8;
|
static int maxsprites=8;
|
||||||
|
|
||||||
|
@ -435,6 +435,17 @@ inline void FFCEUX_PPUWrite_Default(uint32 A, uint8 V) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
volatile int rendercount, vromreadcount, undefinedvromcount, LogAddress = -1;
|
||||||
|
unsigned char *cdloggervdata;
|
||||||
|
|
||||||
|
int GetCHRAddress(int A){
|
||||||
|
int result;
|
||||||
|
if((A > 0x1fff))return -1;
|
||||||
|
result = &VPage[A>>10][A]-CHRptr[0];
|
||||||
|
if((result > (int)CHRsize[0]) || (result < 0))return -1;
|
||||||
|
else return result;
|
||||||
|
}
|
||||||
|
|
||||||
uint8 FASTCALL FFCEUX_PPURead_Default(uint32 A) {
|
uint8 FASTCALL FFCEUX_PPURead_Default(uint32 A) {
|
||||||
uint32 tmp = A;
|
uint32 tmp = A;
|
||||||
|
|
||||||
|
@ -442,6 +453,19 @@ uint8 FASTCALL FFCEUX_PPURead_Default(uint32 A) {
|
||||||
|
|
||||||
if(tmp<0x2000)
|
if(tmp<0x2000)
|
||||||
{
|
{
|
||||||
|
if(debug_loggingCD)
|
||||||
|
{
|
||||||
|
int addr = GetCHRAddress(tmp);
|
||||||
|
if(addr != -1)
|
||||||
|
{
|
||||||
|
if(!(cdloggervdata[addr] & 1))
|
||||||
|
{
|
||||||
|
cdloggervdata[addr] |= 1;
|
||||||
|
if(!(cdloggervdata[addr] & 2))undefinedvromcount--;
|
||||||
|
rendercount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return VPage[tmp>>10][tmp];
|
return VPage[tmp>>10][tmp];
|
||||||
}
|
}
|
||||||
else if (tmp < 0x3F00)
|
else if (tmp < 0x3F00)
|
||||||
|
@ -743,6 +767,21 @@ static DECLFR(A2007)
|
||||||
uint8 ret;
|
uint8 ret;
|
||||||
uint32 tmp=RefreshAddr&0x3FFF;
|
uint32 tmp=RefreshAddr&0x3FFF;
|
||||||
|
|
||||||
|
if(debug_loggingCD)
|
||||||
|
{
|
||||||
|
if(!DummyRead && (LogAddress != -1))
|
||||||
|
{
|
||||||
|
if(!(cdloggervdata[LogAddress] & 2))
|
||||||
|
{
|
||||||
|
cdloggervdata[LogAddress] |= 2;
|
||||||
|
if(!(cdloggervdata[LogAddress] & 1))undefinedvromcount--;
|
||||||
|
vromreadcount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
DummyRead = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if(newppu) {
|
if(newppu) {
|
||||||
ret = VRAMBuffer;
|
ret = VRAMBuffer;
|
||||||
RefreshAddr = ppur.get_2007access() & 0x3FFF;
|
RefreshAddr = ppur.get_2007access() & 0x3FFF;
|
||||||
|
@ -766,8 +805,11 @@ static DECLFR(A2007)
|
||||||
ret &= 0x30;
|
ret &= 0x30;
|
||||||
VRAMBuffer = CALL_PPUREAD(RefreshAddr - 0x1000);
|
VRAMBuffer = CALL_PPUREAD(RefreshAddr - 0x1000);
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
|
if(debug_loggingCD)
|
||||||
|
LogAddress = GetCHRAddress(RefreshAddr);
|
||||||
VRAMBuffer = CALL_PPUREAD(RefreshAddr);
|
VRAMBuffer = CALL_PPUREAD(RefreshAddr);
|
||||||
|
}
|
||||||
ppur.increment2007(INC32!=0);
|
ppur.increment2007(INC32!=0);
|
||||||
RefreshAddr = ppur.get_2007access();
|
RefreshAddr = ppur.get_2007access();
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -784,6 +826,8 @@ static DECLFR(A2007)
|
||||||
PPUGenLatch=VRAMBuffer;
|
PPUGenLatch=VRAMBuffer;
|
||||||
if(tmp<0x2000)
|
if(tmp<0x2000)
|
||||||
{
|
{
|
||||||
|
if(debug_loggingCD)
|
||||||
|
LogAddress = GetCHRAddress(tmp);
|
||||||
VRAMBuffer=VPage[tmp>>10][tmp];
|
VRAMBuffer=VPage[tmp>>10][tmp];
|
||||||
}
|
}
|
||||||
else if (tmp < 0x3F00)
|
else if (tmp < 0x3F00)
|
||||||
|
@ -949,6 +993,7 @@ static DECLFW(B2006)
|
||||||
TempAddr|=V;
|
TempAddr|=V;
|
||||||
|
|
||||||
RefreshAddr=TempAddr;
|
RefreshAddr=TempAddr;
|
||||||
|
DummyRead=1;
|
||||||
if(PPU_hook)
|
if(PPU_hook)
|
||||||
PPU_hook(RefreshAddr);
|
PPU_hook(RefreshAddr);
|
||||||
//printf("%d, %04x\n",scanline,RefreshAddr);
|
//printf("%d, %04x\n",scanline,RefreshAddr);
|
||||||
|
|
|
@ -3,11 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 11.00
|
||||||
# Visual Studio 2010
|
# Visual Studio 2010
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fceux", "vc10_fceux.vcxproj", "{6893EF44-FEA3-46DF-B236-C4C200F54294}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fceux", "vc10_fceux.vcxproj", "{6893EF44-FEA3-46DF-B236-C4C200F54294}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F8647A59-ED57-4975-B40C-054BA8588E4E}"
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
Performance1.psess = Performance1.psess
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Win32 = Debug|Win32
|
Debug|Win32 = Debug|Win32
|
||||||
|
|
|
@ -1001,7 +1001,6 @@
|
||||||
<None Include="..\src\drivers\win\res\te_piano_9_lostpos.bmp" />
|
<None Include="..\src\drivers\win\res\te_piano_9_lostpos.bmp" />
|
||||||
<None Include="..\src\drivers\win\res\te_piano_9_playback.bmp" />
|
<None Include="..\src\drivers\win\res\te_piano_9_playback.bmp" />
|
||||||
<None Include="..\src\pputile.inc" />
|
<None Include="..\src\pputile.inc" />
|
||||||
<None Include="ClassDiagram1.cd" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
|
Loading…
Reference in New Issue