X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Fscroll.c;h=b71dfb1f7b48caeba292e27f3b61d7cf62057da7;hb=a6dac9aacc0353763dc564afda8b57848afc3e0b;hp=e638df1b06c0677b09dce6d45fe3b32e956024a8;hpb=4423bda56aab2192f037bec035a3412153b2b3a7;p=16.git diff --git a/src/scroll.c b/src/scroll.c index e638df1b..b71dfb1f 100755 --- a/src/scroll.c +++ b/src/scroll.c @@ -22,26 +22,22 @@ #include "src/lib/scroll16.h" #include "src/lib/16_timer.h" -#include "src/lib/wcpu/wcpu.h" +#include "src/lib/16_dbg.h" -//#define FADE +#define FADE #define MODEX //this is for mode x initiating -//word far *clock= (word far*) 0x046C; /* 18.2hz clock */ -//bitmap_t *p; -global_game_variables_t gvar; +//bitmap_t p; static map_t map; -player_t player[MaxPlayers]; map_view_t mv[4]; //word pn=0; //i forgot ww float t; sword bakapee; pan_t pan; //debugswitches -boolean panswitch=0; +boolean panswitch=0;//1 //extern boolean pageflipflop=1; unsigned int i; - const char *cpus; //static int persist_aniframe = 0; /* gonna be increased to 1 before being used, so 0 is ok for default */ //map_view_db_t pgid[4]; @@ -56,44 +52,15 @@ boolean panswitch=0; void main(int argc, char *argv[]) { - byte *mesg=malloc(sizeof(dword)); - + static global_game_variables_t gvar; + static player_t player[MaxPlayers]; if(argv[1]) bakapee = atoi(argv[1]); else bakapee = 1; - // 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; - } - - if (_DEBUG_INIT() == 0) { -#ifdef DEBUGSERIAL - printf("WARNING: Failed to initialize DEBUG output\n"); -#endif - } - _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log - _DEBUGF("Serial debug output printf test %u %u %u\n",1U,2U,3U); + Startup16(&gvar); pan.pn=1; - start_timer(&gvar); - /* create the map */ fprintf(stderr, "testing map load~ "); loadmap("data/test.map", &map); @@ -107,8 +74,8 @@ void main(int argc, char *argv[]) //mappalptr = map.tiles->btdata->palette; /* data */ - player[0].data = malloc(48*128); //TODO use exmm - *player[0].data = bitmapLoadPcx("data/chikyuu.pcx"); // load sprite + player[0].data = malloc(72*128); //TODO use exmm + *player[0].data = bitmapLoadPcx("data/chikyuu.pcx", &gvar); // load sprite /* create the planar buffer */ ////++++ (player[0].data) = *planar_buf_from_bitmap(&p); @@ -118,9 +85,7 @@ void main(int argc, char *argv[]) #endif /* input! */ - IN_Startup(); - IN_Default(0,&player,ctrl_Joystick); - //IN_Default(1,&player,ctrl_Joystick); + IN_Default(0,&player,ctrl_Keyboard1); /* save the palette */ #ifdef MODEX @@ -160,25 +125,15 @@ void main(int argc, char *argv[]) /* setup camera and screen~ */ modexHiganbanaPageSetup(&gvar.video); - for(i=0;idata, mv[0].page->data, mv[0].page->pagesize); - //TODO: put player in starting position of spot - //default player position on the viewable map - player[0].tx = mv[0].tx + mv[0].page->tilemidposscreenx; - player[0].ty = mv[0].ty + mv[0].page->tilemidposscreeny; + playerXYpos(0, 0, &player, &mv, 0); IN_initplayer(&player, 0); - //IN_initplayer(&player, 1); #ifndef SPRITE modexClearRegion(mv[0].page, player[0].x, player[0].y-TILEWH, 16, 32, 15); @@ -220,11 +175,11 @@ void main(int argc, char *argv[]) //when player[0].tx or player[0].ty == 0 or player[0].tx == 20 or player[0].ty == 15 then stop because that is edge of map and you do not want to walk of the map //player movement - IN_ReadControl(0,&player); + IN_ReadControl(0, &player); if(!panswitch){ - walk(mv, player, 0); + walk(mv, &player, 0); }else{ - panpagemanual(mv, player, 0); + panPageManual(mv, &player, 0); //printf(" player[0].q: %d", player[0].q); printf(" player[0].d: %d\n", player[0].d); } @@ -250,15 +205,15 @@ void main(int argc, char *argv[]) } //p #ifdef MODEX #ifdef FADE - if(IN_KeyDown(24)){ modexPalUpdate0(gpal); paloffset=0; modexpdump(mv[0].page); modexpdump(mv[1].page); IN_UserInput(1,1); } - if(IN_KeyDown(22)){ + if(IN_KeyDown(24)){ modexPalUpdate0(gpal); paloffset=0; modexpdump(mv[0].page); modexpdump(mv[1].page); IN_UserInput(1,1); } //p + /*if(IN_KeyDown(22)){ paloffset=0; modexPalBlack(); modexPalUpdate(player[0].data, &paloffset, 0, 0); printf("1paloffset = %d\n", paloffset/3); modexPalUpdate(map.tiles->data, &paloffset, 0, 0); printf("2paloffset = %d\n", paloffset/3); modexpdump(mv[0].page); modexpdump(mv[1].page); IN_UserInput(1,1); - } + }*/ #endif #endif //pan switch @@ -290,10 +245,11 @@ void main(int argc, char *argv[]) } if(IN_KeyDown(66)) //f8 { -// modexDrawSprite(mv[0].page, 16, 16, p); - modexDrawSprite(mv[0].page, 32+48, 16, (player[0].data)); +// modexDrawSprite(mv[0].page, 16, 16, &p); + modexDrawSprite(mv[0].page, 32+72, 16, (player[0].data)); } - //TODO fmemtest into page + FUNCTIONKEYFUNCTIONS; + // fmemtest into page /*if(IN_KeyDown(4+1)) //4 { pg=1; @@ -302,8 +258,11 @@ void main(int argc, char *argv[]) }*/ //9 - if(IN_KeyDown(10)){ modexPalOverscan(rand()%56); modexPalUpdate1(dpal); IN_UserInput(1,1); } - //if(IN_KeyDown(11)){ modexPalOverscan(15); } +#ifdef FADE + if(IN_KeyDown(10)){ modexPalOverscan(rand()%56); modexPalUpdate1(dpal); IN_UserInput(1,1); } +#endif + if(IN_KeyDown(sc_R)){ modexPalOverscan(rand()%56); } //r + if((player[0].q==1) && !(player[0].x%TILEWH==0 && player[0].y%TILEWH==0)) break; //incase things go out of sync! } @@ -317,49 +276,11 @@ void main(int argc, char *argv[]) #endif VGAmodeX(0, 1, &gvar); #endif - IN_Shutdown(); + Shutdown16(&gvar); printf("\nProject 16 scroll.exe. This is just a test file!\n"); printf("version %s\n", VERSION); - printf("tx: %d ", mv[0].tx); - printf("ty: %d\n", mv[0].ty); - printf("\n"); - printf("player vars:\n"); - printf(" x: %d", player[0].x); printf(" y: %d\n", player[0].y); - //if(player[0].hp==0) printf("%d wwww\n", player[0].y+8); - //else printf("\nplayer[0].y: %d\n", player[0].y); - printf(" tx: %d", player[0].tx); printf(" ty: %d\n", player[0].ty); - printf(" triggx: %d", player[0].triggerx); printf(" triggy: %d\n", player[0].triggery); - printf(" hp: %d", (player[0].hp)); printf(" q: %d", player[0].q); printf(" player.info.dir: %d", player[0].info.dir); printf(" player.d: %d ", player[0].d); - printf(" pdir=%d\n", player[0].pdir); - printf(" tile data value at player trigger position: %d\n\n", mv[0].map->data[(player[0].triggerx-1)+(map.width*(player[0].triggery-1))]); -// printf("palette offset: %d\n", paloffset/3); -//++++ printf("Total used: %zu\n", oldfreemem-GetFreeSize()); -//++++ printf("Total free: %zu\n", GetFreeSize()); -//not used now printf("temporary player sprite 0: http://www.pixiv.net/member_illust.php?mode=medium&illust_id=45556867\n"); -//not used now printf("temporary player sprite 1: http://www.pixiv.net/member_illust.php?mode=medium&illust_id=44606385\n"); - printf("Virtual Screen: %dx", gvar.video.page[0].width); printf("%d ", gvar.video.page[0].height); - printf("Screen: %dx", gvar.video.page[0].sw); printf("%d\n", gvar.video.page[0].sh); - printf("virtual tile resolution: %dx", gvar.video.page[0].tilesw); printf("%d ", gvar.video.page[0].tilesh); - printf("tile resolution: %dx", gvar.video.page[0].tw); printf("%d\n", gvar.video.page[0].th); - printf("middle tile position: %dx", gvar.video.page[0].tilemidposscreenx); printf("%d\n", gvar.video.page[0].tilemidposscreeny); - modexprintmeminfo(&gvar.video); - //printf("mv[%u].tx: %d", pan.pn, mv[pan.pn].tx); printf(" mv[%u].ty: %d ", pan.pn, mv[pan.pn].ty); - printf("gvar.video.p=%u ", gvar.video.p); printf("gvar.video.r=%u ", gvar.video.r); - printf("pageflipflop=%u\n", pageflipflop); - //0000printf("\ngvar.video.tickclk=%f\n", gvar.video.tickclk); - //0000printf("gvar.video.clk=%f", gvar.video.clk); - printf("\n"); - //printf("map.width=%d map.height=%d map.data[0]=%d\n", mv[0].map->width, mv[0].map->height, mv[0].map->data[0]); - - printf("\n"); - switch(detectcpu()) - { - case 0: cpus = "8086/8088 or 186/88"; break; - case 1: cpus = "286"; break; - case 2: cpus = "386 or newer"; break; - default: cpus = "internal error"; break; - } - printf("detected CPU type: %s\n", cpus); + SCROLLEXITMESG; + WCPU_cpufpumesg(); #ifdef MODEX #ifdef FADE modexFadeOn(4, dpal);