X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fbakapee.c;h=a5ce9b21cd246fa36e2fac22158dfa202d6a5b26;hb=04fe364b1c5b4fdddca823044c2d584531691af6;hp=0174d3c3bbf56007b70eb9f1b2955426c76fb46b;hpb=320be82ab5e414d1b771b295403218b614ed9d13;p=16.git diff --git a/src/lib/bakapee.c b/src/lib/bakapee.c index 0174d3c3..a5ce9b21 100755 --- a/src/lib/bakapee.c +++ b/src/lib/bakapee.c @@ -1,5 +1,5 @@ /* Project 16 Source Code~ - * Copyright (C) 2012-2017 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover + * Copyright (C) 2012-2021 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover * * This file is part of Project 16. * @@ -22,10 +22,9 @@ #include "src/lib/bakapee.h" -struct glob_game_vars *ggvv; //static word far* clockw= (word far*) 0x046C; /* 18.2hz clock */ -char global_temp_status_text[512]; -char global_temp_status_text2[512]; +//char global_temp_status_text[512]; +//char global_temp_status_text2[512]; //========================================================================== @@ -54,22 +53,147 @@ char global_temp_status_text2[512]; */ //extern ControlInfo c; -#define PIXPOSX gvar->video.page[0].sw/2 -#define PIXPOSY gvar->video.page[0].sh/2 - +//#define PIXPOSX gvar->video.page[0].sw/2 +//#define PIXPOSY gvar->video.page[0].sh/2 +#ifdef BAKAFIZZUNSIGNED boolean baka_FizzleFade (unsigned source, unsigned dest, unsigned width, unsigned height, unsigned frames, boolean abortable, global_game_variables_t *gvar) { word p,pixperframe; unsigned drawofs,pagedelta; byte mask,maskb[8] = {1,2,4,8}; + unsigned x,y,frame; + long rndval; + word screenseg; +#ifdef __WATCOMC__ + unsigned esorig;//,q; +#endif + + pagedelta = dest-source; + rndval = 1; +#ifdef __WATCOMC__ + esorig = 0;// q = 16; +#endif + x = y = 0; + pixperframe = (dword)(gvar->video.page[0].width*gvar->video.page[0].height)/frames;//64000/(dword)frames; + screenseg = SCREENSEG; + +// IN_StartAck (gvar); + +// modexClearRegion(&(gvar->video.page[0]), 0, 0, gvar->video.page[0].width, gvar->video.page[0].height, 0); +// modexClearRegion(&(gvar->video.page[1]), 0, 0, gvar->video.page[0].width, gvar->video.page[0].height, 15); + +#ifdef __WATCOMC__ + __asm { + mov [esorig],es + } +#endif +// TimeCount= + frame=0; + do // while (1) + { + if (abortable && kbhit())//IN_CheckAck (gvar) ) + return true; + + __asm { + mov es,[screenseg] + } + + for (p=0;pwidth || y>height) +// if ((x>width || y>height) && (xvideo.ofs.ylookup[y]) + (x>>2); + drawofs = source+(y*gvar->video.page[0].stridew) + (x>>2); +/* +sprintf(global_temp_status_text, "draw - %Fp", drawofs); +modexprint(&(gvar->video.page[0]), PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8; +sprintf(global_temp_status_text, "pdet - %Fp", pagedelta); +modexprint(&(gvar->video.page[0]), PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8; +sprintf(global_temp_status_text, "srce - %Fp", source); +modexprint(&(gvar->video.page[0]), PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8; +sprintf(global_temp_status_text, "dest - %Fp", dest); +modexprint(&(gvar->video.page[0]), PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q=16; +*/ + + // + // copy one pixel + // + mask = x&3; + VGAREADMAP(mask); + mask = maskb[mask]; + VGAMAPMASK(mask); + + __asm { + mov di,[drawofs] + mov al,[es:di] + add di,[pagedelta] + mov [es:di],al + } + + if (rndval == 1) // entire sequence has been completed + return false; + } + frame++; +//-- while (TimeCountdata); dest = ((word)destpage->data); pagedelta = dest-source; rndval = 1; esorig = 0; q = 16; x = y = 0;//destpage->dx; - pixperframe = /*76800*/64000/(dword)frames; + pixperframe = 76800/(dword)frames; // IN_StartAck (); @@ -88,7 +212,7 @@ boolean baka_FizzleFade (unsigned source, unsigned dest, unsigned width, unsigne do // while (1) { sprintf(global_temp_status_text, "%u", frame); -modexprint(&(gvar->video.page[0]), PIXPOSX, PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); +modexprint(destpage, PIXPOSX, PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); if (abortable && kbhit())//IN_CheckAck () ) return true; @@ -136,25 +260,30 @@ noxor: continue; drawofs = source+(gvar->video.ofs.ylookup[y]) + (x>>2); sprintf(global_temp_status_text, "draw - %Fp", drawofs); -modexprint(&(gvar->video.page[0]), PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8; +modexprint(destpage, PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8; sprintf(global_temp_status_text, "pdet - %Fp", pagedelta); -modexprint(&(gvar->video.page[0]), PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8; +modexprint(destpage, PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8; +sprintf(global_temp_status_text, "srcp - %Fp", sourcepage->data); +modexprint(destpage, PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8; +sprintf(global_temp_status_text, "desp - %Fp", destpage->data); +modexprint(destpage, PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8; sprintf(global_temp_status_text, "srce - %Fp", source); -modexprint(&(gvar->video.page[0]), PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8; +modexprint(destpage, PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q+=8; sprintf(global_temp_status_text, "dest - %Fp", dest); -modexprint(&(gvar->video.page[0]), PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q=16; +modexprint(destpage, PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text); q=16; // // copy one pixel // -//* +/* mask = x&3; VGAREADMAP(mask); mask = maskb[mask]; VGAMAPMASK(mask); -//*/ +/*/ // modexputPixel(&(gvar->video.page[0]), x, y, rand()); // VL_Plot (x, y, 15, &(gvar->video.ofs)); + modexCopyPageRegion(destpage, sourcepage, x, y, x, y, 4, 4); __asm { mov di,[drawofs] @@ -174,6 +303,7 @@ modexprint(&(gvar->video.page[0]), PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_te } return false; } +#endif #if 0 boolean baka_FizzleFade (page_t *sourcepage, page_t *destpage, unsigned width, unsigned height, unsigned frames, boolean abortable, global_game_variables_t *gvar) @@ -296,13 +426,53 @@ modexprint(destpage, PIXPOSX, q+PIXPOSY, 1, 0, 47, 0, 1, global_temp_status_text return false; } #endif -/* clrstdin() clear any leftover chars tha may be in stdin stream */ +// clrstdin() clear any leftover chars tha may be in stdin stream // void clrstdin() { int ch = 0; while( ( ch = getchar() ) != '\n' && ch != EOF ); } +//=========================================================================== + +/* +==================== += += TL_DosLibStartup += +==================== +*/ + +void TL_DosLibStartup(global_game_variables_t *gvar) +{ + if(gvar->DLStarted) + return; + + // DOSLIB: check our environment + probe_dos(); + + // DOSLIB: what CPU are we using? + // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. + // So this code by itself shouldn't care too much what CPU it's running on. Except that other + // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for + // the CPU to carry out tasks. --J.C. + cpu_probe(); + + // DOSLIB: check for VGA + if (!probe_vga()) { + printf("VGA probe failed\n"); + return; + } + // hardware must be VGA or higher! + if (!(vga_state.vga_flags & VGA_IS_VGA)) { + printf("This program requires VGA or higher graphics hardware\n"); + return; + } + + textInit(); + gvar->DLStarted = true; +} + //color ‚Ä‚·‚Æ void colortest(page_t *page, bakapee_t *pee) { @@ -572,11 +742,15 @@ void ding(page_t *page, bakapee_t *pee, word q) colorz(page, pee); modexprint(page, page->sw/2, page->sh/2, 1, 0, 47, 0, 1, "bakapi"); break; - case 9: - baka_FizzleFade (ggvv->video.ofs.bufferofs, ggvv->video.ofs.displayofs, vga_state.vga_width, vga_state.vga_height, 70, true, ggvv); -// modexprint(page, page->sw/2, page->sh/2, 1, 0, 47, 0, 1, "bakapi start"); -// if(!baka_FizzleFade ((unsigned)page, (unsigned)page, page->width, page->height, 70, false, ggvv)) - break; +/* case 9: + modexClearRegion(&(ggvv->video.page[0]), 0, 0, ggvv->video.page[0].width/2, ggvv->video.page[0].height/2, 15); +#ifdef BAKAFIZZUNSIGNED +// baka_FizzleFade (ggvv->video.ofs.bufferofs, ggvv->video.ofs.displayofs, vga_state.vga_width, vga_state.vga_height, 70, true, ggvv); + baka_FizzleFade (ggvv->video.ofs.bufferofs, ggvv->video.ofs.displayofs, ggvv->video.page[0].width, ggvv->video.page[0].height, 70, true, ggvv); +#else + baka_FizzleFade (&ggvv->video.page[1], &ggvv->video.page[0], vga_state.vga_width, vga_state.vga_height, 70, true, ggvv); +#endif + break;*/ case 10: ssd(page, pee, q); /*printf("%d\n", pee->coor);*/ break;