From cc362040d00d6398f963e92a787a73bc99038e45 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Fri, 31 Jul 2015 03:21:32 -0500 Subject: [PATCH] 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 --- scroll.exe | Bin 126339 -> 126322 bytes src/lib/16_head.h | 382 +++++++++++++++++++++++++++-------------------------- src/lib/scroll16.c | 9 +- src/lib/timer.c | 56 ++++---- src/lib/timer.h | 59 ++++----- src/scroll.c | 5 +- 6 files changed, 256 insertions(+), 255 deletions(-) diff --git a/scroll.exe b/scroll.exe index 11b50b5c4458395b0a27d6e0981aaac9dae154e3..7de0e452a3bdf713e7adfb807e8431aff5fc442c 100644 GIT binary patch delta 28238 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 delta 28778 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 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 */ -- 2.11.0