X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=cart.c;h=e1cd5dae4208d4e314374d555f892d574d94f7fa;hp=f8883972bad25398f7cc9fb95bb3e697cef057d8;hb=b547bda76671cf9c99973dd3faad97804949ced3;hpb=d97315ac0bca825d2d50a44453bc5652946e2c67 diff --git a/cart.c b/cart.c index f888397..e1cd5da 100644 --- a/cart.c +++ b/cart.c @@ -167,6 +167,7 @@ void FASTAPASS(3) setprg2r(int r, unsigned int A, unsigned int V) { V&=PRGmask2[r]; setpageptr(2,A,PRGptr[r]?(&PRGptr[r][V<<11]):0,PRGram[r]); + X6502_Rebase(); } void FASTAPASS(2) setprg2(uint32 A, uint32 V) @@ -178,6 +179,7 @@ void FASTAPASS(3) setprg4r(int r, unsigned int A, unsigned int V) { V&=PRGmask4[r]; setpageptr(4,A,PRGptr[r]?(&PRGptr[r][V<<12]):0,PRGram[r]); + X6502_Rebase(); } void FASTAPASS(2) setprg4(uint32 A, uint32 V) @@ -199,6 +201,7 @@ void FASTAPASS(3) setprg8r(int r, unsigned int A, unsigned int V) for(x=0;x<4;x++) setpageptr(2,A+(x<<11),PRGptr[r]?(&PRGptr[r][((VA+x)&PRGmask2[r])<<11]):0,PRGram[r]); } + X6502_Rebase(); } void FASTAPASS(2) setprg8(uint32 A, uint32 V) @@ -221,6 +224,7 @@ void FASTAPASS(3) setprg16r(int r, unsigned int A, unsigned int V) for(x=0;x<8;x++) setpageptr(2,A+(x<<11),PRGptr[r]?(&PRGptr[r][((VA+x)&PRGmask2[r])<<11]):0,PRGram[r]); } + X6502_Rebase(); } void FASTAPASS(2) setprg16(uint32 A, uint32 V) @@ -243,6 +247,7 @@ void FASTAPASS(3) setprg32r(int r,unsigned int A, unsigned int V) for(x=0;x<16;x++) setpageptr(2,A+(x<<11),PRGptr[r]?(&PRGptr[r][((VA+x)&PRGmask2[r])<<11]):0,PRGram[r]); } + X6502_Rebase(); } void FASTAPASS(2) setprg32(uint32 A, uint32 V) @@ -453,6 +458,7 @@ void OpenGenie(void) fn=FCEU_MakeFName(FCEUMKF_GGROM,0,0); fp=fopen(fn,"rb"); + free(fn); if(!fp) { FCEU_PrintError("Error opening Game Genie ROM image!"); @@ -636,6 +642,24 @@ void GeniePower(void) geniestage=2; } +static uint8 *real_pages[16]; + +void GenieSetPages(int restore) +{ + int page; + if (restore) + { + for (page=16; page<32; page++) + Page[page] = real_pages[page-16]; + } + else + { + for (page=16; page<32; page++) { + real_pages[page-16] = Page[page]; + Page[page]=GENIEROM - (page<<11) + ((page&1)<<11); + } + } +} void FCEU_SaveGameSave(CartInfo *LocalHWInfo) {