cdlogger - fixed unif load/save, TODO: get rid or VRAM in there

mapper 69 - fixed #580 Low quality sound issue
This commit is contained in:
CaH4e3 2013-02-10 22:05:02 +00:00
parent b258d23b71
commit b7584d0da2
4 changed files with 23 additions and 25 deletions

View File

@ -153,8 +153,8 @@ static void DoAYSQ(int x) {
if (end <= start) return; if (end <= start) return;
CAYBC[x] = end; CAYBC[x] = end;
if (amp) if (amp && !(sreg[0x7] & (1 << x)))
for (V = start; V < end; V++) { for (V = start; V < end; V++) {
if (dcount[x]) if (dcount[x])
Wave[V >> 4] += amp; Wave[V >> 4] += amp;
vcount[x] -= nesincsize; vcount[x] -= nesincsize;

View File

@ -47,7 +47,6 @@ extern uint8 *trainerpoo;
extern volatile int rendercount, vromreadcount, undefinedvromcount; extern volatile int rendercount, vromreadcount, undefinedvromcount;
extern unsigned char *cdloggervdata; extern unsigned char *cdloggervdata;
extern int newppu; extern int newppu;
extern uint32 VROM_size;
int CDLogger_wndx=0, CDLogger_wndy=0; int CDLogger_wndx=0, CDLogger_wndy=0;
@ -113,7 +112,7 @@ BOOL CALLBACK CDLoggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
undefinedcount = PRGsize[0]; undefinedcount = PRGsize[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
ZeroMemory(cdloggerdata,PRGsize[0]); ZeroMemory(cdloggerdata,PRGsize[0]);
if(VROM_size) if(CHRsize[0] != 0)
{ {
undefinedvromcount = CHRsize[0]; undefinedvromcount = CHRsize[0];
cdloggervdata = (unsigned char*)malloc(CHRsize[0]); cdloggervdata = (unsigned char*)malloc(CHRsize[0]);
@ -144,7 +143,7 @@ BOOL CALLBACK CDLoggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
codecount = datacount = rendercount = vromreadcount = 0; codecount = datacount = rendercount = vromreadcount = 0;
undefinedcount = PRGsize[0]; undefinedcount = PRGsize[0];
ZeroMemory(cdloggerdata,PRGsize[0]); ZeroMemory(cdloggerdata,PRGsize[0]);
if(VROM_size) if(CHRsize[0] != 0)
{ {
undefinedvromcount = CHRsize[0]; undefinedvromcount = CHRsize[0];
ZeroMemory(cdloggervdata,CHRsize[0]); ZeroMemory(cdloggervdata,CHRsize[0]);
@ -226,7 +225,7 @@ void LoadCDLog (const char* nameo)
cdloggerdata[i] |= j; cdloggerdata[i] |= j;
} }
if(VROM_size) if(CHRsize[0] != 0)
{ {
for(i = 0;i < (int)CHRsize[0];i++){ for(i = 0;i < (int)CHRsize[0];i++){
j = fgetc(FP); j = fgetc(FP);
@ -292,7 +291,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);
if(VROM_size) if(CHRsize[0] != 0)
fwrite(cdloggervdata,CHRsize[0],1,FP); fwrite(cdloggervdata,CHRsize[0],1,FP);
fclose(FP); fclose(FP);
} }
@ -329,7 +328,7 @@ void UpdateCDLogger()
float fundefinedcount = undefinedcount; float fundefinedcount = undefinedcount;
float fundefinedvromcount = undefinedvromcount; float fundefinedvromcount = undefinedvromcount;
float fromsize = PRGsize[0]; float fromsize = PRGsize[0];
float fvromsize = VROM_size ? CHRsize[0] : 1; float fvromsize = CHRsize[0] != 0 ? CHRsize[0] : 1;
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);
@ -356,6 +355,7 @@ void SaveStrippedRom(int invert)
char sromfilename[MAX_PATH]; char sromfilename[MAX_PATH];
FILE *fp; FILE *fp;
OPENFILENAME ofn; OPENFILENAME ofn;
iNES_HEADER cdlhead;
int i; int i;
if (!GameInfo) if (!GameInfo)
@ -422,35 +422,34 @@ void SaveStrippedRom(int invert)
} }
else else
{ {
if(fwrite(&head,1,16,fp)!=16) cdlhead.ID[0] = 'N';
{ cdlhead.ID[1] = 'E';
fclose(fp); cdlhead.ID[2] = 'S';
return; cdlhead.ID[3] = 0x1A;
}
if(head.ROM_type&4) /* Trainer */ cdlhead.ROM_size = PRGsize[0] >> 14;
{ cdlhead.VROM_size = CHRsize[0] >> 13;
fwrite(trainerpoo,512,1,fp);
} fwrite(&cdlhead,1,16,fp);
for(i = 0; i < (int)PRGsize[0]; i++){ for(i = 0; i < (int)PRGsize[0]; i++){
unsigned char pchar; unsigned char pchar;
if(cdloggerdata[i] & 3) if(cdloggerdata[i] & 3)
pchar = invert?0:ROM[i]; pchar = invert?0:PRGptr[0][i];
else else
pchar = invert?ROM[i]:0; pchar = invert?PRGptr[0][i]:0;
fputc(pchar, fp); fputc(pchar, fp);
} }
if(VROM_size) if(CHRsize[0] != 0)
{ {
// since an old ppu at least log the 2007 ppu read accesses, so need to save anyway... // since an old ppu at least log the 2007 ppu read accesses, so need to save anyway...
for(i = 0; i < (int)CHRsize[0]; i++) { for(i = 0; i < (int)CHRsize[0]; i++) {
unsigned char vchar; unsigned char vchar;
if(cdloggervdata[i] & 3) if(cdloggervdata[i] & 3)
vchar = invert?0:VROM[i]; vchar = invert?0:CHRptr[0][i];
else else
vchar = invert?VROM[i]:0; vchar = invert?CHRptr[0][i]:0;
fputc(vchar, fp); fputc(vchar, fp);
} }
} }

View File

@ -511,7 +511,7 @@ static BMAPPINGLocal bmap[] = {
// {"", 63, Mapper63_Init}, // {"", 63, Mapper63_Init},
{"TENGEN RAMBO1", 64, Mapper64_Init}, {"TENGEN RAMBO1", 64, Mapper64_Init},
{"IREM-H3001", 65, Mapper65_Init}, {"IREM-H3001", 65, Mapper65_Init},
{"MHOM", 66, MHROM_Init}, {"MHROM", 66, MHROM_Init},
{"SUNSOFT-FZII", 67, Mapper67_Init}, {"SUNSOFT-FZII", 67, Mapper67_Init},
{"Sunsoft Mapper #4", 68, Mapper68_Init}, {"Sunsoft Mapper #4", 68, Mapper68_Init},
{"SUNSOFT-5/FME-7", 69, Mapper69_Init}, {"SUNSOFT-5/FME-7", 69, Mapper69_Init},

View File

@ -438,12 +438,11 @@ inline void FFCEUX_PPUWrite_Default(uint32 A, uint8 V) {
volatile int rendercount, vromreadcount, undefinedvromcount, LogAddress = -1; volatile int rendercount, vromreadcount, undefinedvromcount, LogAddress = -1;
unsigned char *cdloggervdata; unsigned char *cdloggervdata;
extern uint32 VROM_size;
int GetCHRAddress(int A){ int GetCHRAddress(int A){
int result; int result;
if((A > 0x1fff))return -1; if((A > 0x1fff))return -1;
if(!VROM_size)return -1; if(CHRsize[0] == 0)return -1;
result = &VPage[A>>10][A]-CHRptr[0]; result = &VPage[A>>10][A]-CHRptr[0];
if((result > (int)CHRsize[0]) || (result < 0))return -1; if((result > (int)CHRsize[0]) || (result < 0))return -1;
else return result; else return result;