From 8f70c7ea84e602a2bdf0d24655b0910a6cdf4270 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sun, 15 Oct 2000 23:56:00 -0400 Subject: [PATCH] v 2.9.10 --- README | 531 +++++++++++++++++++---------------- svmwgraph/curses_svmwgraph.c | 8 +- svmwgraph/sdl_svmwgraph.c | 44 +++ svmwgraph/sdl_svmwgraph.h | 1 + svmwgraph/vmw_setup.c | 6 +- 5 files changed, 337 insertions(+), 253 deletions(-) diff --git a/README b/README index c793e58..c0bee20 100644 --- a/README +++ b/README @@ -1,248 +1,283 @@ - -#####| #####| #| #| ####| #####| #| #| ####| #####| #| #| - #| #| #| ##|##| #| #| #| #| ##|##| #| #| #| ##|##| - #| #| #| #|#|#| ####| #| #| #|#|#| ####| ####| #|#|#| - #| #| #| #| #| #| #| #| #| #| #| #| #| #| #| #| - #| #####| #| #| ####| #####| #| #| ####| #####| #| #| - - AND THE INVASION OF THE INANIMATE OBJECTS - - by - - Vince Weaver - -Version 2.9.10 ---------------------------------------------------------------------- - -Contents --------- - 1.0 COMPILING INSTRUCTIONS - 2.0 SYSTEM REQUIREMENTS - 3.0 THE STORY - 4.0 GAME PLAY - 5.0 SAVING/LOADING GAMES - 6.0 HISTORY - 7.0 ACKNOWLEDGEMENTS - 8.0 PRAISE/ACCOMPLISHMENTS - - - 1.0 Compiling Instructions ---------------------------------------------------------------------- - -Sorry, there is no "configure" file as of yet. - -You need the SDL game development library, 1.1.4 or newer: - http://www.libsdl.org/download-1.1.html - -You also need the "SDL_mixer library" from - http://www.libsdl.org/projects/SDL_mixer/index.html - -To compile SDL_Mixer you need the smpeg library: - http://www.lokigames.com/development/smpeg.php3 - -You also need a recent ncurses library, but that should come with - your distribution hopefully. - -Then a "make" should compile it. - - - 2.0 System Requirements ---------------------------------------------------------------------- - Reccommended Minimum: - 486 66Mhz/ 8MB Ram, 1Meg disk space - - The game was originally written on a 386 33Mhz under DOS. - It has been tested to run fine on my 486 75Mhz laptop - w 12Mb ram and 8bpp display. - - The game has not been verified to run on 64 bit or big-endian machines. - - - 3.0 THE STORY ---------------------------------------------------------------------- - - To understand the game, pick the "Story" option off of the - main menu. This part of the game took a lot of time in - itself, and is fun to read. - - The "Audio Error!" is not a real error. I just saved myself - the trouble of recording a voice-track for the game. As many - friends have said, "That's cheating!" but anyway unless I had - a lot of time and a CD-ROM, it is not practical. - - Anyway in the story, any key will speed up most scenes, and - escape will quit the whole thing. - - 4.0 GAME PLAY - -------------------------------------------------------------------- - To begin the game, select "NEW GAME" at the main menu. - - A little humorous movie will show; press to skip. - - The game itself is pretty simplistic as of yet. Basically - shoot the things coming at you. The arrow keys manuever... - the manuevering takes a little bit of practice to master. - Space shoots. You can shoot up to two missiles at once. - "S" toggles sound. "P" pauses. If the game play is too fast, - try the "+" and "-" keys to adjust. Sorry, if it runs too - slow at the onset, then your computer is too slow. - - The first level culminates with a "boss" character. Read the - story and see what happens. The dialog will clue you into - what's happening. - - The second level is now totally finished. Be sure to save - your games whenever you start a new level! - - Levels three and four are currently under development. In - level three, use the arrow keys to "walk" around. The space - bar will fire a weapon if you've picked one up. To activate/ - pick up things, walk into them. - - Level four is similar to level two. (Actually they are based - on the same game engine). They will be finished by version 2.5. - - An undocumented featue: when your score reaches a multiple of - 400 your shields are increased by one. - - Basic Summary of Keyboard Commands: - - ARROWS Manuever - SPACE Fires - Exits - P Pauses - S Toggles sound on/off - + Slows down game speed - - Increases game speed - F1 Shows help message - F2 Saves the Game (see "SAVING/LOADING GAMES") - - 5.0 SAVING/ LOADING GAMES ---------------------------------------------------------------------- - You can save games. However the only part that is saved is - how you begin the level. Therefore there is no real purpose - to saving your game until you reach level two. - - This might seem annoying, but at this point it is the only - practical way to implement saved games. - - - 6.0 HISTORY ---------------------------------------------------------------------- - - Ever since I have had a computer, starting with an Apple IIe - I've always been attempting to write video games. - - Starting around the beginning of high school I actually started - creating ones that were actuallys semi-fun to play. The first - was "s3fight", a space game in CGA mode in gwbasic. Then I - moved on to QBASIC. And then to Turbo Pascal. I wrote a game - called "Under Water Trouble" which was a submarine game - using the .BGI interface. It never ran fast enough [though it - is great fun on a modern machine]. My next game was a - "spacewars" clone, but it too ran a bit too slow, as well as - another game AITAS [Adventures in Time and Space] - - About this time, in 1993, I was an exchange student in - Hildesheim, Germany. And the nice people there showed be - Turbo Pascal 6.0 [which had in-line assembly] and a series - of text files called the PCGPE [PC Game Programmer Encyclopedia]. - - With this new found source of Pascal graphics routines, I started - modifying the "flying toaster" demo to instead draw a spaceship. - And thus was born TB1. - - From the look of the game you can see it is heavily modified after - early-90s share-ware games. I wrote some of the ugliest - Pascal and ix86 assembly you ever saw. But it usually worked. - - During this time I hadn't found the internet yet. I was still - hanging out at local BBS's. But then, my Dad got an e-mail account - and with it access to lynx, and I found the WWW. I found - a Pascal SoundBlaster library written by Ethan Brodsky, who was - close to my age, and suddenly TB1 had sound. By the time I graduated - from high schoool in 1996 the game is much as you see it now - [levels 1-3]. - - Unfortunately, once I got to college things changed. I finally - got my own computer, and gradually I used Linux more and more. - Despite my initial work on the Free Pascal Compiler, I became - convinced the C was the one true language, and Linux the one - true platform. Working on TB1 under dosemu was a pain, - and development stopped. - - In 1998 I gradually ported the game to GGI, but the interface - was ever-changing, and again I ran out of time. - - But finally, in the year 2000, I decided that I would port tb1 - so I could play w it under linux. And so I have. And - hopefully I will finish all 10 levels, and people will play - it for ages to come ;) - - - 7.0 ACKNOWLEDGEMENTS ---------------------------------------------------------------------- - - The following are for the DOS version. I'll add linux ones later. - - I would like to thank many people who helped on this project. - - Ethan Brodsky for his excelent sound blaster routines. - Get them at http://www.pobox.com/~ebrodsky/smix/smix.html - There would be no sound blaster sound without them. - - The authors of PCGPE. This program started out as a - "flying toaster" demonstration from the Asphixia - VGA tutorials. I gradually replaced most of their code, - but I still use their putpixel, waitretrace, setmcga and - settext routines. - - I would also like to thank all my friends who have supported - me, especially Gus Thompson, because she went to Spain and - gave me time to work on this. Also Marie Prosser for - inspiration, and she also went away for three weeks - allowing me to work on this. Thanks to Nick Attanasio - who actually plays this game a lot, and whose comments - have hastened work on level 3. - -8.0 PRAISE/ACCOMPLISHMENTS OF TOM BOMBEM -___________________________________________________________________ - - Supposedly it will be on one of Pacific Hi-Tech's - "Gamehead" CD's. We'll see. - - A German book company has offered to put it in a CD included - with a Shareware Games book. - - Now Praise: - - - "I just like it when it says 'Ahhh... Mr. Bombem.'" - ----Greg Grabowski, Bel Air, MD - - "It's simplicity reminded me of the early computer - shooters... Kind of nostalgic... But the nice - side [is] the very clever cinematic text." - ---->> Delance << - - "The game is well designed but does not fit - our current product line." - ----Apogee Software Productions - - -Remember: Watch for the newest version of Tom Bombem... and have fun. - - Vince Weaver 16 October 2000 23:05:59 EDT - - - - - - - - - - - - - + +#####| #####| #| #| ####| #####| #| #| ####| #####| #| #| + #| #| #| ##|##| #| #| #| #| ##|##| #| #| #| ##|##| + #| #| #| #|#|#| ####| #| #| #|#|#| ####| ####| #|#|#| + #| #| #| #| #| #| #| #| #| #| #| #| #| #| #| #| + #| #####| #| #| ####| #####| #| #| ####| #####| #| #| + + AND THE INVASION OF THE INANIMATE OBJECTS + + by + + Vince Weaver + +Version 2.9.10 +--------------------------------------------------------------------- + +Contents +-------- + 1.0 COMPILING INSTRUCTIONS + 2.0 SYSTEM REQUIREMENTS + 3.0 STARTING THE GAME + 4.0 THE STORY + 5.0 GAME PLAY + 6.0 SAVING/LOADING GAMES + 7.0 HISTORY + 8.0 ACKNOWLEDGEMENTS + 9.0 PRAISE/ACCOMPLISHMENTS + + + 1.0 Compiling Instructions +--------------------------------------------------------------------- + +Sorry, there is no "configure" file as of yet. + +If you have SDL or ncurses in non-standard places, you'll + have to edit the Makefiles. + +You need the SDL game development library, 1.1.4 or newer: + http://www.libsdl.org/download-1.1.html + +You also need the "SDL_mixer library" from + http://www.libsdl.org/projects/SDL_mixer/index.html + +To compile SDL_Mixer you need the smpeg library: + http://www.lokigames.com/development/smpeg.php3 + +You also need a recent ncurses library, but that should come with + your distribution hopefully. + +Then a "make" should compile it. + + + 2.0 System Requirements +--------------------------------------------------------------------- + Reccommended Minimum: + 486 66Mhz/ 8MB Ram, 1Meg disk space + + The game was originally written on a 386 33Mhz under DOS. + It has been tested to run fine on my 486 75Mhz laptop + w 12Mb ram and 8bpp display. + + The game has not been verified to run on 64 bit or big-endian machines. + + + 3.0 STARTING THE GAME +--------------------------------------------------------------------- + + tb1 [-curses] [-double] [-fullscreen] [-nosound] [-version] [-?] + + [-curses] : sets the game to run in curses [that is, text] mode. + it is actually playable on a 80x25 screen! + [Although you want color for best results]. + It looks particularly nice in an Eterm with a + small font dragged across the whole screen. You + want to become familiar with the menu-interface + before you try this though. + + [-double] : Double the size of the game on screen. This + is good if you have a high-resolution monitor + and the 320x200 of TB1 is way too small. + It is, 4 times slower, however. + Also look into using the -fullscreen option. + + [-fullscreen] : Attempts to play the game fullscreen. For + best results you probably want to use this in + conjunction to the -double option. + + [-nosound] : Start the game with no sound. + + [-help] : Display the command line options + + + 4.0 THE STORY +--------------------------------------------------------------------- + + To understand the game, pick the "Story" option off of the + main menu. This part of the game took a lot of time in + itself, and is fun to read. + + The "Audio Error!" is not a real error. I just saved myself + the trouble of recording a voice-track for the game. As many + friends have said, "That's cheating!" but anyway unless I had + a lot of time and a CD-ROM, it is not practical. + + Anyway in the story, any key will speed up most scenes, and + escape will quit the whole thing. + + + 5.0 GAME PLAY + -------------------------------------------------------------------- + To begin the game, select "NEW GAME" at the main menu. + + A little humorous movie will show; press to skip. + + The game itself is pretty simplistic as of yet. Basically + shoot the things coming at you. The arrow keys manuever... + the manuevering takes a little bit of practice to master. + Space shoots. You can shoot up to two missiles at once. + "S" toggles sound. "P" pauses. If the game play is too fast, + try the "+" and "-" keys to adjust. Sorry, if it runs too + slow at the onset, then your computer is too slow. + + The first level culminates with a "boss" character. Read the + story and see what happens. The dialog will clue you into + what's happening. + + The second level is now totally finished. Be sure to save + your games whenever you start a new level! + + Levels three and four are currently under development. In + level three, use the arrow keys to "walk" around. The space + bar will fire a weapon if you've picked one up. To activate/ + pick up things, walk into them. + + Level four is similar to level two. (Actually they are based + on the same game engine). They will be finished by version 2.5. + + An undocumented featue: when your score reaches a multiple of + 400 your shields are increased by one. + + Basic Summary of Keyboard Commands: + + ARROWS Manuever + SPACE Fires + Exits + P Pauses + S Toggles sound on/off + + Slows down game speed + - Increases game speed + F1 Shows help message + F2 Saves the Game (see "SAVING/LOADING GAMES") + + + 6.0 SAVING/ LOADING GAMES +--------------------------------------------------------------------- + You can save games. However the only part that is saved is + how you begin the level. Therefore there is no real purpose + to saving your game until you reach level two. + + This might seem annoying, but at this point it is the only + practical way to implement saved games. + + + 7.0 HISTORY +--------------------------------------------------------------------- + + Ever since I have had a computer, starting with an Apple IIe + I've always been attempting to write video games. + + Starting around the beginning of high school I actually started + creating ones that were actuallys semi-fun to play. The first + was "s3fight", a space game in CGA mode in gwbasic. Then I + moved on to QBASIC. And then to Turbo Pascal. I wrote a game + called "Under Water Trouble" which was a submarine game + using the .BGI interface. It never ran fast enough [though it + is great fun on a modern machine]. My next game was a + "spacewars" clone, but it too ran a bit too slow, as well as + another game AITAS [Adventures in Time and Space] + + About this time, in 1993, I was an exchange student in + Hildesheim, Germany. And the nice people there showed be + Turbo Pascal 6.0 [which had in-line assembly] and a series + of text files called the PCGPE [PC Game Programmer Encyclopedia]. + + With this new found source of Pascal graphics routines, I started + modifying the "flying toaster" demo to instead draw a spaceship. + And thus was born TB1. + + From the look of the game you can see it is heavily modified after + early-90s share-ware games. I wrote some of the ugliest + Pascal and ix86 assembly you ever saw. But it usually worked. + + During this time I hadn't found the internet yet. I was still + hanging out at local BBS's. But then, my Dad got an e-mail account + and with it access to lynx, and I found the WWW. I found + a Pascal SoundBlaster library written by Ethan Brodsky, who was + close to my age, and suddenly TB1 had sound. By the time I graduated + from high schoool in 1996 the game is much as you see it now + [levels 1-3]. + + Unfortunately, once I got to college things changed. I finally + got my own computer, and gradually I used Linux more and more. + Despite my initial work on the Free Pascal Compiler, I became + convinced the C was the one true language, and Linux the one + true platform. Working on TB1 under dosemu was a pain, + and development stopped. + + In 1998 I gradually ported the game to GGI, but the interface + was ever-changing, and again I ran out of time. + + But finally, in the year 2000, I decided that I would port tb1 + so I could play w it under linux. And so I have. And + hopefully I will finish all 10 levels, and people will play + it for ages to come ;) + + + 8.0 ACKNOWLEDGEMENTS +--------------------------------------------------------------------- + + The following are for the DOS version. I'll add linux ones later. + + I would like to thank many people who helped on this project. + + Ethan Brodsky for his excelent sound blaster routines. + Get them at http://www.pobox.com/~ebrodsky/smix/smix.html + There would be no sound blaster sound without them. + + The authors of PCGPE. This program started out as a + "flying toaster" demonstration from the Asphixia + VGA tutorials. I gradually replaced most of their code, + but I still use their putpixel, waitretrace, setmcga and + settext routines. + + I would also like to thank all my friends who have supported + me, especially Gus Thompson, because she went to Spain and + gave me time to work on this. Also Marie Prosser for + inspiration, and she also went away for three weeks + allowing me to work on this. Thanks to Nick Attanasio + who actually plays this game a lot, and whose comments + have hastened work on level 3. + + + 9.0 PRAISE/ACCOMPLISHMENTS OF TOM BOMBEM +___________________________________________________________________ + + Supposedly it will be on one of Pacific Hi-Tech's + "Gamehead" CD's. We'll see. + + A German book company has offered to put it in a CD included + with a Shareware Games book. + + Now Praise: + + + "I just like it when it says 'Ahhh... Mr. Bombem.'" + ----Greg Grabowski, Bel Air, MD + + "It's simplicity reminded me of the early computer + shooters... Kind of nostalgic... But the nice + side [is] the very clever cinematic text." + ---->> Delance << + + "The game is well designed but does not fit + our current product line." + ----Apogee Software Productions + + +Remember: Watch for the newest version of Tom Bombem... and have fun. + + Vince Weaver 16 October 2000 23:05:59 EDT + + + + + + + + + + + + + diff --git a/svmwgraph/curses_svmwgraph.c b/svmwgraph/curses_svmwgraph.c index 5cb9a67..f547012 100644 --- a/svmwgraph/curses_svmwgraph.c +++ b/svmwgraph/curses_svmwgraph.c @@ -84,7 +84,7 @@ void lookup_color(int r,int g,int b,int i) { int bitmask; - FILE *fff; +// FILE *fff; /* Black */ if ((r<85) && (g<85) && (b<85)) { @@ -318,9 +318,9 @@ void lookup_color(int r,int g,int b,int i) { } - fff=fopen("temp.temp","a"); - fprintf(fff,"%i: %i %i %i\n",i,r,g,b); - fclose(fff); +// fff=fopen("temp.temp","a"); +// fprintf(fff,"%i: %i %i %i\n",i,r,g,b); +// fclose(fff); /* When we aren't sure what we are */ bitmask=0; diff --git a/svmwgraph/sdl_svmwgraph.c b/svmwgraph/sdl_svmwgraph.c index 2ba11ed..41fd022 100644 --- a/svmwgraph/sdl_svmwgraph.c +++ b/svmwgraph/sdl_svmwgraph.c @@ -199,6 +199,50 @@ void SDL_NoScale8bpp_BlitMem(vmwSVMWGraphState *target_p, vmwVisual *source) { } +void SDL_Double8bpp_BlitMem(vmwSVMWGraphState *target_p, vmwVisual *source) { + + int x,y; + + unsigned char *s_pointer,*t_pointer; + + SDL_Surface *target; + + target=(SDL_Surface *)target_p->output_screen; + + if ( SDL_MUSTLOCK(target) ) { + if ( SDL_LockSurface(target) < 0 ) + return; + } + + s_pointer=source->memory; + t_pointer=((Uint8 *)target->pixels); + + for (y=0;yysize;y++) { + for (x=0;xxsize;x++) { + /* i=0, j=0 */ + *((Uint8 *)(t_pointer))=*(s_pointer); + /* i=1, j=0 */ + *((Uint8 *)(t_pointer+(target_p->xsize)))=*(s_pointer); + /* i=0, j=1 */ + *((Uint8 *)(t_pointer+1))=*(s_pointer); + /* i=1, j=1 */ + *((Uint8 *)(t_pointer+1+target_p->xsize))=*(s_pointer); + s_pointer++; t_pointer+=2; + } + t_pointer+=target_p->xsize; + } + + /* Update the display */ + if ( SDL_MUSTLOCK(target) ) { + SDL_UnlockSurface(target); + } + + /* Write this out to the screen */ + SDL_UpdateRect(target, 0, 0, target_p->xsize, target_p->ysize); + +} + + void SDL_clearKeyboardBuffer() { SDL_Event event; while (SDL_PollEvent(&event)) { diff --git a/svmwgraph/sdl_svmwgraph.h b/svmwgraph/sdl_svmwgraph.h index b3d7a89..25bb2d7 100644 --- a/svmwgraph/sdl_svmwgraph.h +++ b/svmwgraph/sdl_svmwgraph.h @@ -8,6 +8,7 @@ void SDL_flushPalette(vmwSVMWGraphState *state); void SDL_NoScale16bpp_BlitMem(vmwSVMWGraphState *target, vmwVisual *source); void SDL_Double16bpp_BlitMem(vmwSVMWGraphState *target_p, vmwVisual *source); void SDL_NoScale8bpp_BlitMem(vmwSVMWGraphState *target, vmwVisual *source); +void SDL_Double8bpp_BlitMem(vmwSVMWGraphState *target, vmwVisual *source); void SDL_clearKeyboardBuffer(); int SDL_getInput(); void SDL_closeGraphics(); diff --git a/svmwgraph/vmw_setup.c b/svmwgraph/vmw_setup.c index 9e674e5..b32410a 100644 --- a/svmwgraph/vmw_setup.c +++ b/svmwgraph/vmw_setup.c @@ -80,7 +80,11 @@ vmwSVMWGraphState *vmwSetupSVMWGraph(int display_type,int xsize,int ysize, break; case VMW_SDLTARGET: if (temp_state->bpp==8) { - vmwBlitMemToDisplay=SDL_NoScale8bpp_BlitMem; + if (scale==1) { + vmwBlitMemToDisplay=SDL_NoScale8bpp_BlitMem; + } else { + vmwBlitMemToDisplay=SDL_Double8bpp_BlitMem; + } } if (temp_state->bpp>=16) { if (scale==1) {