From: sparky4 Date: Fri, 31 Jul 2015 08:21:32 +0000 (-0500) Subject: i want to make an FPS system X-Git-Url: http://4ch.mooo.com/gitweb/?a=commitdiff_plain;h=cc362040d00d6398f963e92a787a73bc99038e45;p=16.git i want to make an FPS system modified: scroll.exe modified: src/lib/16_head.h modified: src/lib/scroll16.c modified: src/lib/timer.c modified: src/lib/timer.h modified: src/scroll.c --- diff --git a/scroll.exe b/scroll.exe index 11b50b5c..7de0e452 100644 Binary files a/scroll.exe and b/scroll.exe differ diff --git a/src/lib/16_head.h b/src/lib/16_head.h index db6c4262..3589a821 100644 --- a/src/lib/16_head.h +++ b/src/lib/16_head.h @@ -1,200 +1,202 @@ -/* Project 16 Source Code~ - * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669 - * - * This file is part of Project 16. - * - * Project 16 is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * Project 16 is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see , or - * write to the Free Software Foundation, Inc., 51 Franklin Street, - * Fifth Floor, Boston, MA 02110-1301 USA. - * - */ - -#if !defined(__LARGE__) && !defined(__COMPACT__) && !defined(__HUGE__) -#error Invalid memory model for compiling project 16 -#endif - -#if !defined(__i86__) && defined(__i386__) -#error i8088 only -#endif - -#ifndef _LIBHEAD_H_ -#define _LIBHEAD_H_ -#include -#include -#include -#include // just for wait -#include // just for wait -#include -#include -#include +/* Project 16 Source Code~ + * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669 + * + * This file is part of Project 16. + * + * Project 16 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Project 16 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see , or + * write to the Free Software Foundation, Inc., 51 Franklin Street, + * Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#if !defined(__LARGE__) && !defined(__COMPACT__) && !defined(__HUGE__) +#error Invalid memory model for compiling project 16 +#endif + +#if !defined(__i86__) && defined(__i386__) +#error i8088 only +#endif + +#ifndef _LIBHEAD_H_ +#define _LIBHEAD_H_ +#include +#include +#include +#include // just for wait +#include // just for wait +#include +#include +#include #include #include -#include -#include -#include -#include "src/lib/nyan/kitten.h" -#include "src/lib/types.h" - -struct list { - struct list __based(__self) *next; - int value; -}; - -/* Control codes for all keys on the keyboard */ -//here temperarly -/* -#define KEY_A (0x1E) -#define KEY_B (0x30) -#define KEY_C (0x2E) -#define KEY_D (0x20) -#define KEY_E (0x12) -#define KEY_F (0x21) -#define KEY_G (0x22) -#define KEY_H (0x23) -#define KEY_I (0x17) -#define KEY_J (0x24) -#define KEY_K (0x25) -#define KEY_L (0x26) -#define KEY_M (0x32) -#define KEY_N (0x31) -#define KEY_O (0x18) -#define KEY_P (0x19) -#define KEY_Q (0x10) -#define KEY_R (0x13) -#define KEY_S (0x1F) -#define KEY_T (0x14) -#define KEY_U (0x16) -#define KEY_V (0x2F) -#define KEY_W (0x11) -#define KEY_X (0x2D) -#define KEY_Y (0x15) -#define KEY_Z (0x2C) -#define KEY_1 (0x02) -#define KEY_2 (0x03) -#define KEY_3 (0x04) -#define KEY_4 (0x05) -#define KEY_5 (0x06) -#define KEY_6 (0x07) -#define KEY_7 (0x08) -#define KEY_8 (0x09) -#define KEY_9 (0x0A) -#define KEY_0 (0x0B) -#define KEY_DASH (0x0C) // -_ -#define KEY_EQUAL (0x0D) // =+ -#define KEY_LBRACKET (0x1A) // [{ -#define KEY_RBRACKET (0x1B) // ]} -#define KEY_SEMICOLON (0x27) // ;: -#define KEY_RQUOTE (0x28) // '" -#define KEY_LQUOTE (0x29) // `~ -#define KEY_PERIOD (0x33) // .> -#define KEY_COMMA (0x34) // ,< -#define KEY_SLASH (0x35) // /? -#define KEY_BACKSLASH (0x2B) // \| -#define KEY_F1 (0x3B) -#define KEY_F2 (0x3C) -#define KEY_F3 (0x3D) -#define KEY_F4 (0x3E) -#define KEY_F5 (0x3F) -#define KEY_F6 (0x40) -#define KEY_F7 (0x41) -#define KEY_F8 (0x42) -#define KEY_F9 (0x43) -#define KEY_F10 (0x44) -#define KEY_ESC (0x01) -#define KEY_BACKSPACE (0x0E) -#define KEY_TAB (0x0F) -#define KEY_ENTER (0x1C) -#define KEY_CONTROL (0x1D) -#define KEY_LSHIFT (0x2A) -#define KEY_RSHIFT (0x36) -#define KEY_PRTSC (0x37) -#define KEY_ALT (0x38) -#define KEY_SPACE (0x39) -#define KEY_CAPSLOCK (0x3A) -#define KEY_NUMLOCK (0x45) -#define KEY_SCROLLLOCK (0x46) -#define KEY_HOME (0x47) -#define KEY_UP (0x48) -#define KEY_PGUP (0x49) -#define KEY_MINUS (0x4A) -#define KEY_LEFT (0x4B) -#define KEY_CENTER (0x4C) -#define KEY_RIGHT (0x4D) -#define KEY_PLUS (0x4E) -#define KEY_END (0x4F) -#define KEY_DOWN (0x50) -#define KEY_PGDOWN (0x51) -#define KEY_INS (0x52) -#define KEY_DEL (0x53) - -#define KEY_LWIN (0x73) -#define KEY_RWIN (0x74) -#define KEY_MENU (0x75) -*/ - -static dword far* clockdw= (dword far*) 0x046C; /* 18.2hz clock */ -//static dword clockdw=0; -extern int profilehandle,debughandle; //make it into game global - -#define __DEBUG__ - -//#define _SEGU(__p) ((unsigned)((unsigned long)(void __huge*)(__p) >> 16)) - -#define nil ((void *)0) - +#include +#include +#include +#include "src/lib/nyan/kitten.h" +#include "src/lib/types.h" + +struct list { + struct list __based(__self) *next; + int value; +}; + +/* Control codes for all keys on the keyboard */ +//here temperarly +/* +#define KEY_A (0x1E) +#define KEY_B (0x30) +#define KEY_C (0x2E) +#define KEY_D (0x20) +#define KEY_E (0x12) +#define KEY_F (0x21) +#define KEY_G (0x22) +#define KEY_H (0x23) +#define KEY_I (0x17) +#define KEY_J (0x24) +#define KEY_K (0x25) +#define KEY_L (0x26) +#define KEY_M (0x32) +#define KEY_N (0x31) +#define KEY_O (0x18) +#define KEY_P (0x19) +#define KEY_Q (0x10) +#define KEY_R (0x13) +#define KEY_S (0x1F) +#define KEY_T (0x14) +#define KEY_U (0x16) +#define KEY_V (0x2F) +#define KEY_W (0x11) +#define KEY_X (0x2D) +#define KEY_Y (0x15) +#define KEY_Z (0x2C) +#define KEY_1 (0x02) +#define KEY_2 (0x03) +#define KEY_3 (0x04) +#define KEY_4 (0x05) +#define KEY_5 (0x06) +#define KEY_6 (0x07) +#define KEY_7 (0x08) +#define KEY_8 (0x09) +#define KEY_9 (0x0A) +#define KEY_0 (0x0B) +#define KEY_DASH (0x0C) // -_ +#define KEY_EQUAL (0x0D) // =+ +#define KEY_LBRACKET (0x1A) // [{ +#define KEY_RBRACKET (0x1B) // ]} +#define KEY_SEMICOLON (0x27) // ;: +#define KEY_RQUOTE (0x28) // '" +#define KEY_LQUOTE (0x29) // `~ +#define KEY_PERIOD (0x33) // .> +#define KEY_COMMA (0x34) // ,< +#define KEY_SLASH (0x35) // /? +#define KEY_BACKSLASH (0x2B) // \| +#define KEY_F1 (0x3B) +#define KEY_F2 (0x3C) +#define KEY_F3 (0x3D) +#define KEY_F4 (0x3E) +#define KEY_F5 (0x3F) +#define KEY_F6 (0x40) +#define KEY_F7 (0x41) +#define KEY_F8 (0x42) +#define KEY_F9 (0x43) +#define KEY_F10 (0x44) +#define KEY_ESC (0x01) +#define KEY_BACKSPACE (0x0E) +#define KEY_TAB (0x0F) +#define KEY_ENTER (0x1C) +#define KEY_CONTROL (0x1D) +#define KEY_LSHIFT (0x2A) +#define KEY_RSHIFT (0x36) +#define KEY_PRTSC (0x37) +#define KEY_ALT (0x38) +#define KEY_SPACE (0x39) +#define KEY_CAPSLOCK (0x3A) +#define KEY_NUMLOCK (0x45) +#define KEY_SCROLLLOCK (0x46) +#define KEY_HOME (0x47) +#define KEY_UP (0x48) +#define KEY_PGUP (0x49) +#define KEY_MINUS (0x4A) +#define KEY_LEFT (0x4B) +#define KEY_CENTER (0x4C) +#define KEY_RIGHT (0x4D) +#define KEY_PLUS (0x4E) +#define KEY_END (0x4F) +#define KEY_DOWN (0x50) +#define KEY_PGDOWN (0x51) +#define KEY_INS (0x52) +#define KEY_DEL (0x53) + +#define KEY_LWIN (0x73) +#define KEY_RWIN (0x74) +#define KEY_MENU (0x75) +*/ + +static dword far* clockdw= (dword far*) 0x046C; /* 18.2hz clock */ +//static dword clockdw=0; +extern int profilehandle,debughandle; //make it into game global + +#define __DEBUG__ + +//#define _SEGU(__p) ((unsigned)((unsigned long)(void __huge*)(__p) >> 16)) + +#define nil ((void *)0) + #define peekb(segm,ofs) (*(byte far*)MK_FP((segm),(ofs))) #define peekw(segm,ofs) (*(word far*)MK_FP((segm),(ofs))) #define pokeb(segm,ofs,value) (peekb((segm),(ofs)) = (byte)(value)) #define pokew(segm,ofs,value) (peekw((segm),(ofs)) = (word)(value)) - -typedef union REGPACK regs_t; -//typedef struct SREGS sregs_t; -//sregs_t sregs; -typedef enum {false,true} boolean; -//I hope this is correct! -typedef void __based(__self) * memptr; -//typedef sregs.w.es * memptr -//typedef __segment * memptr; -//typedef fenp.op_ptr_seg * memptr; -typedef struct + +typedef union REGPACK regs_t; +//typedef struct SREGS sregs_t; +//sregs_t sregs; +typedef enum {false,true} boolean; +//I hope this is correct! +typedef void __based(__self) * memptr; +//typedef sregs.w.es * memptr +//typedef __segment * memptr; +//typedef fenp.op_ptr_seg * memptr; +typedef struct { - int old_mode; //old video mode before game! - word frames_per_second; - clock_t t; + int old_mode; //old video mode before game! + word frames_per_second; + clock_t t; + dword tiku; + word far* clock; } global_game_variables_t; - + /* local function */ -void wait(clock_t wait); -void __near* LargestFreeBlock(size_t* Size); -size_t _coreleft(void); -void far* LargestFarFreeBlock(size_t* Size); -size_t _farcoreleft(void); -void huge* LargestHugeFreeBlock(size_t* Size); -size_t _hugecoreleft(void); -//void __based(__self)* LargestBasedFreeBlock(size_t* Size); -//size_t _basedcoreleft(void); -size_t GetFreeSize(void); -size_t GetFarFreeSize(void); -size_t GetNearFreeSize(void); -long int filesize(FILE *fp); -void print_normal_entry(char *text, dword total, dword used, dword free); -void convert(const char *format, dword num); -void heapdump(void); -void heapstat(int heap_status); -int US_CheckParm(char *parm,char **strings); - +void wait(clock_t wait); +void __near* LargestFreeBlock(size_t* Size); +size_t _coreleft(void); +void far* LargestFarFreeBlock(size_t* Size); +size_t _farcoreleft(void); +void huge* LargestHugeFreeBlock(size_t* Size); +size_t _hugecoreleft(void); +//void __based(__self)* LargestBasedFreeBlock(size_t* Size); +//size_t _basedcoreleft(void); +size_t GetFreeSize(void); +size_t GetFarFreeSize(void); +size_t GetNearFreeSize(void); +long int filesize(FILE *fp); +void print_normal_entry(char *text, dword total, dword used, dword free); +void convert(const char *format, dword num); +void heapdump(void); +void heapstat(int heap_status); +int US_CheckParm(char *parm,char **strings); + extern void CA_OpenDebug (void); -extern void CA_CloseDebug (void); - -#endif/*_LIBHEAD_H_*/ +extern void CA_CloseDebug (void); + +#endif/*_LIBHEAD_H_*/ diff --git a/src/lib/scroll16.c b/src/lib/scroll16.c index 2a2eaea5..eb19f8f5 100644 --- a/src/lib/scroll16.c +++ b/src/lib/scroll16.c @@ -469,7 +469,7 @@ mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y) modexDrawBmpRegion(page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data)); break; case 1: - modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, (t->debug_data[i])); + modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, (t->debug_data[i])+1); //modexprintbig(page, x, y, 1, 15, 0, (t->debug_data)); /*for(texty=0; texty<2; texty++) { @@ -584,14 +584,13 @@ void shinku(page_t *page, global_game_variables_t *gv) word col = 15; word bgcol = 0; word type = 1; - dword far* clockdww= (dword far*) 0x046C; /* 18.2hz clock */ if(elapsed_timer(gv) >= (1.0 / gv->frames_per_second)) { pee = malloc(sizeof(double)); - sprintf(pee, "%f", ((*clockdww-(gv->t)) /18.2)); + sprintf(pee, "%f", ((*gv->clock) /18.2)); modexprint(page, x, y, type, col, bgcol, pee); - sprintf(pee, "%f", elapsed_timer(gv)); - modexprint(page, x, y+8, type, col, bgcol, pee); + //sprintf(pee, "%f", /*gv->tiku/*/time_in_seconds(gv)); + //modexprint(page, x, y+8, type, col, bgcol, pee); } } diff --git a/src/lib/timer.c b/src/lib/timer.c index 3adc37b0..69dd5e9f 100644 --- a/src/lib/timer.c +++ b/src/lib/timer.c @@ -1,34 +1,36 @@ -/* Project 16 Source Code~ - * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669 - * - * This file is part of Project 16. - * - * Project 16 is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * Project 16 is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see , or - * write to the Free Software Foundation, Inc., 51 Franklin Street, - * Fifth Floor, Boston, MA 02110-1301 USA. - * - */ - -#include "src/lib/timer.h" - +/* Project 16 Source Code~ + * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669 + * + * This file is part of Project 16. + * + * Project 16 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Project 16 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see , or + * write to the Free Software Foundation, Inc., 51 Franklin Street, + * Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#include "src/lib/timer.h" + clock_t start_timer(global_game_variables_t *gv) { //time(&(this->t)); gv->t = clock(); + gv->tiku = 0; + gv->clock = (word far*) 0x046C; /* 18.2hz clock */ return gv->t; -} - +} + double elapsed_timer(global_game_variables_t *gv) { return (clock() - gv->t) / CLOCKS_PER_SEC; @@ -42,4 +44,4 @@ double elapsed_timer(global_game_variables_t *gv) double time_in_seconds(time_t in_t) { return (in_t) / CLOCKS_PER_SEC; -} +} diff --git a/src/lib/timer.h b/src/lib/timer.h index fae0ebe0..8f9619b2 100644 --- a/src/lib/timer.h +++ b/src/lib/timer.h @@ -1,33 +1,32 @@ -/* Project 16 Source Code~ - * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669 - * - * This file is part of Project 16. - * - * Project 16 is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * Project 16 is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see , or - * write to the Free Software Foundation, Inc., 51 Franklin Street, - * Fifth Floor, Boston, MA 02110-1301 USA. - * - */ - +/* Project 16 Source Code~ + * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669 + * + * This file is part of Project 16. + * + * Project 16 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Project 16 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see , or + * write to the Free Software Foundation, Inc., 51 Franklin Street, + * Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + #ifndef _TIMER_H_ -#define _TIMER_H_ -#include "src/lib/16_head.h" - +#define _TIMER_H_ +#include "src/lib/16_head.h" + clock_t start_timer(global_game_variables_t *gv); -double elapsed_timer(global_game_variables_t *gv); -//double elapsed_timer(global_game_variables_t *gv) +double elapsed_timer(global_game_variables_t *gv); +//double time_in_seconds(global_game_variables_t *gv); double time_in_seconds(time_t in_t); -//clock_t _time(); - -#endif + +#endif diff --git a/src/scroll.c b/src/scroll.c index ceb42e5c..b8065566 100644 --- a/src/scroll.c +++ b/src/scroll.c @@ -31,7 +31,6 @@ void main() { - dword tiku = 0; // word panswitch=0, panq=1, pand=0; global_game_variables_t gvar; word panpagenum=0; //for panning! @@ -188,7 +187,7 @@ void main() #endif while(!IN_KeyDown(sc_Escape) && player[0].hp>0) { - sprintf(mesg, "%lu", tiku); + sprintf(mesg, "%lu", gvar.tiku); modexprint(mv[1].page, 16, 16, 1, 15, 0, mesg); shinku(mv[1].page, &gvar); IN_ReadControl(0,&player); @@ -356,7 +355,7 @@ void main() if((player[0].q==1) && !(player[0].x%TILEWH==0 && player[0].y%TILEWH==0)) break; //incase things go out of sync! - tiku++; + gvar.tiku++; } /* fade back to text mode */