genblitter diff for wip4.. this should be even faster.. -GnoStiC/bronx. Richard Drummond wrote:
HiOn Monday 26 March 2007 07:52, Mustafa TUFAN wrote:thanks to the following small patch to genblitter.c, i've gained ~3 fps.. (on gp2x/psp)Thanks. I'll try that out here. Cheers, Rich
--- genblitter.c Wed Mar 28 04:27:18 2007 +++ genblitter.c Fri Mar 30 16:27:25 2007 @@ -93,11 +93,15 @@ #endif if (a_is_on) printf("uae_u32 preva = 0;\n"); if (b_is_on) printf("uae_u32 prevb = 0, srcb = b->bltbhold;\n"); - printf("uae_u32 srcc = b->bltcdat;\n"); + if (c_is_on) printf("uae_u32 srcc = b->bltcdat;\n"); printf("uae_u32 dstd=0;\n"); printf("uaecptr dstp = 0;\n"); printf("for (j = b->vblitsize; j--; ) {\n"); - printf("\tfor (i = 0; i < b->hblitsize; i++) {\n\t\tuae_u32 bltadat, srca;\n\n"); + if (a_is_on) { + printf("\tfor (i = 0; i < b->hblitsize; i++) {\n\t\tuae_u32 bltadat, srca;\n\n"); + } else { + printf("\tfor (i = b->hblitsize; i--; ) {\n\t\tuae_u32 bltadat, srca;\n\n"); + } if (c_is_on) printf("\t\tif (ptc) { srcc = chipmem_wget (ptc); ptc += 2; }\n"); if (b_is_on) printf("\t\tif (ptb) {\n\t\t\tuae_u32 bltbdat = blt_info.bltbdat = chipmem_wget (ptb); ptb += 2;\n"); if (b_is_on) printf("\t\t\tsrcb = (((uae_u32)prevb << 16) | bltbdat) >> b->blitbshift;\n"); @@ -116,8 +120,8 @@ if (c_is_on) printf("\tif (ptc) ptc += b->bltcmod;\n"); printf("\tif (ptd) ptd += b->bltdmod;\n"); printf("}\n"); - if (b_is_on) printf("b->bltbhold = srcb;\n"); - printf("b->bltcdat = srcc;\n"); + if (b_is_on) printf("\tb->bltbhold = srcb;\n"); + if (c_is_on) printf("\tb->bltcdat = srcc;\n"); printf("\t\tif (dstp) chipmem_wput (dstp, dstd);\n"); #if 0 printf("}\n"); @@ -170,11 +174,15 @@ #endif if (a_is_on) printf("uae_u32 preva = 0;\n"); if (b_is_on) printf("uae_u32 prevb = 0, srcb = b->bltbhold;\n"); - printf("uae_u32 srcc = b->bltcdat;\n"); + if (c_is_on) printf("uae_u32 srcc = b->bltcdat;\n"); printf("uae_u32 dstd=0;\n"); printf("uaecptr dstp = 0;\n"); printf("for (j = b->vblitsize; j--; ) {\n"); - printf("\tfor (i = 0; i < b->hblitsize; i++) {\n\t\tuae_u32 bltadat, srca;\n"); + if (a_is_on) { + printf("\tfor (i = 0; i < b->hblitsize; i++) {\n\t\tuae_u32 bltadat, srca;\n"); + } else { + printf("\tfor (i = b->hblitsize; i--; ) {\n\t\tuae_u32 bltadat, srca;\n"); + } if (c_is_on) printf("\t\tif (ptc) { srcc = chipmem_wget (ptc); ptc -= 2; }\n"); if (b_is_on) printf("\t\tif (ptb) {\n\t\t\tuae_u32 bltbdat = blt_info.bltbdat = chipmem_wget (ptb); ptb -= 2;\n"); if (b_is_on) printf("\t\t\tsrcb = ((bltbdat << 16) | prevb) >> b->blitdownbshift;\n"); @@ -193,8 +201,8 @@ if (c_is_on) printf("\tif (ptc) ptc -= b->bltcmod;\n"); printf("\tif (ptd) ptd -= b->bltdmod;\n"); printf("}\n"); - if (b_is_on) printf("b->bltbhold = srcb;\n"); - printf("b->bltcdat = srcc;\n"); + if (b_is_on) printf("\tb->bltbhold = srcb;\n"); + if (c_is_on) printf("\tb->bltcdat = srcc;\n"); printf("\t\tif (dstp) chipmem_wput (dstp, dstd);\n"); #if 0 printf("}\n"); @@ -268,4 +276,3 @@ } return 0; } -