//=========================================================================== // @file readme // // @name Brick Game Simulator // // @author Lynx // @startdate 16/10/2002 // @firstreleasedate 25/10/2002 // @thisreleasedate 24/12/2002 // // @url http://bgs.sf.net // @email emulynx@users.sourceforge.net //=========================================================================== //=========================================================================== // General Info //=========================================================================== This is a Win32 binary distribution of Brick Game Simulator version 0.7 (RC-1). bgs requires SDL runtime libraries. SDL is available at http://www.libsdl.org. SDL requires DirectX (at least 3.0). If you don't have it please visit http://www.microsoft.com/directx/ SDL is distributed under the terms of the GNU LGPL license (http://www.gnu.org/copyleft/lesser.html). This program 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 2 of the License, or (at your option) any later version. This program 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. Portions of particle system are used from pengswim: A game of swimming and eating Copyright (C) 2002 Michael J. Edwards and OneArmedMan LLC which is also distrubuted under the terms of the GPL. "The Warsaw Tetris" is classic Atari800 game made by Arkadiusz Lukszo in 1989. I've used their modified background and partially color pallete with numeric font for "Warsaw Skin" (no, i'm not trying to simulate their tetris version YET). Default score rules are taken from cheap chinese handneld "Brick Game 8in1". "little T" graphics and game rules are courtesy of iERiS & Co. GcukBlocks skin is courtesy based on GcukBlocks, GPL tetris clone. Graphics from Brick/JK skin are courtesy of JK (http://??) //=========================================================================== // Release notes //=========================================================================== This release is christmas release candidate for version 0.7. It has a few minor glitches which doesn't prevent the game to be enjoyed. 1) If you are using WinAPI interface, you'll get screen with 19 missing lines at the bottom of the screen. To fix that glitch please use: bgs -nogui -game gamename If you want to change skins in "-nogui" mode, try to use 0-9 keys (not on the numpad). 2) Controls are jerky. If you'll try to push left/down+some other key you'll get weird result. This is a known issue which will be (hopefully) fixed in bgs 0.7 final. 3) You have to !!!DROP!!! figure (SPACE BUTTON) to start the game (sometimes). That glitch appeared just yesterday that's why I have no idea where it came from and how long will it take me to trace it (has to do something with timers). 4) Some of the skins do not have some features (pause in iERiS skin) and some of them are just unfinished but are too cool to left behind the scenes. And no, "R" key isn't for reset yet. You should use enter for now. //=========================================================================== // Request //=========================================================================== IF ANYONE HAS HANDHELD "BRICK GAME" (CHEAP CHINESE TETRIS) AND HAS DIGITAL CAMERA - PLEASE CONTACT ME!!! As of now following people contributed their "BRICK GAME" screenshots: 0) Me, Lynx - awfull quality (scanned black 8in1 discolight version) *1) Axel - awesome quality scanned "brick game". This one is the best as of now. 2) piroJOKE - nice quality, medium size (some weird brick game, never saw anything like that). 3) http://dendyushka.narod.ru Nice quality (light grey 9999in1). //=========================================================================== // bgs history //=========================================================================== Once upon a time iERiS (member of (ex?)scene.lv team) went crazy and said: "HEY! Let's make a Tetris clone using C and SDL library!". I called that idea a CTC (Crossplatform Tetris Compo). iERiS himself made one nice oldschool tetris clone which actually wasn't completely finished - it features only basic gameplay with several levels. GFX is oldschool and very neat. But it doesn't have intro/outro screens which makes game incomplete and unfinished ;) At that time I had some mock-ups of my tetris clone but I never thought that I'll finish it and implement all these features! I just wanted to make small oldschool atari tetris clone. As you can see, now it's quite much more than small tetris. I'm trying to make bgs as modular as possible. I hope that I'll make quite fine engine which will allow any tetris clone to be ported to it. Right now it has basic features and finished "infinite" gameplay but everything else will definately come soon since project moves really fast. //=========================================================================== // How to (step by step) //=========================================================================== Win32: Run bgs.exe and enjoy. Other: 1) Get the package, unpack it. 2) To start the game with specific skin type: bgs -game skindir 3) If you want something else, type bgs -help and open stdout.txt (information will be printed to console soon) Enjoy. //=========================================================================== // Controls //=========================================================================== LEFT/RIGHT - arrow keys for figure movement UP,RCTRL - rotate figure DEL,KP_INS - rotate figure A/D - CW/CCW rotation (experimental) DOWN - force moving of figure down SPACE - drop figure ENTER - reset game G - enable/disable grid T - enable/disable figure statistics D - enable/disable "next figure" doublesizing (if available) N - enable/disable next figure hint R - enable/disable "next figure" random coloring (funky) O - enable/disable particle engine (beta) F - enable/disable window frame P - pause/unpause 0 - internal skin 1-9 - external skins (available through GUI too) ESC/F1 - boss mode (wip) F3 - fullscreen/windowed mode F10 - quit F11 - screenshot (.bmp in same directory as bgs.exe) //=========================================================================== // Bugs //=========================================================================== Please submit any bugs you'll find which aren't mentioned in release notes. //=========================================================================== // Revision History //=========================================================================== 0.6991 - 24.12.02 - 18:48 0.6990 - 24.12.02 - 3:24 Indian mango nectar release. [diary] Long time no update! I was so busy with work (which is as usually full of surprises), real life and... bgs that I didn't have time to update readme. After I've posted job ad on sf.net I've received 8 emails about site design, 2 mails about skin development and one stupid mail saying something like "HEI MEN NOBODI HAS DOS NOV!". I replied to all of the site designers with basic idea - go to videolan.org and movies.times.lv (Hi, Silencer!) and make me a simple site. Since then nobody replied back except some megaw00t kid who was saying "HEY I'LL GET 2TB RAID AND IT'LL COST ME $$$ AN HOUR TO GET IT WORKING". At least he said that he might design something when bgs will be ported to *nix. Ok, let's move to other skin designer. He's from blueorange.com. He's cool. He's very cool. blueorange.com designed some sgi subsite, made ad campaign for sega.com, created some VERY cool looking bag design for adobe, created mcafee.com logo, etc... I couldn't imagine that some designing god might really answer my job ad. He did 3 skins in 3 days. 3 awesome skins which will be included in xmas release. Well, I'm happy that my project gets a bit popular - 6 downloads of old bgs release. Let's move to changes... [/diary] - Fixed several dozens of bugs. - Implemented something like clocks. If anybody is interested in putting clock in his future skin he might use that alpha feature to reserve some space for it. - Fixed colorkeys. - New variables: * "bonus" is now an array (4 values for import), * different colorkeys (3 values for import) * "internaltext" (enable/disable signs like "Scores:" (used in default skin only for now)) * "particleon" (switched off by default) * "loggingon" and "debug" really work now * "clockon", "timex", "timey" * "scores_zeroed" (makes scores look like "00100" instead of "100") * "linestats1-4" instead of "linestats1/2/3/4+x/y" - "-nogui", "-debug", "-logging" really work now - No more crashes if somebody will try to load default skin after start with default skin. - Found the reason of all slowdowns in gcukblocks. 24bit mode is very slow and absolutely not recommended for storing/displaying anything. - One draw_pixel routing for all things inside engine. I have alternative variants but seems that current one is fastest one and very compact. - "brick game simulation" was renamed to "brick game simulator" couple of days ago. - Whole bunch of control keys for enabling/disabling of menus, effects, etc. - Perfect hardcoded skin featuring most of the effects. I made it symmetric and added some cool internal text. - Small figures under figurestats are doublesized. - Figurestats are fixed, no more jumping several pixels up-down (had to do something with float). - Scores are 5 digit by default. All of the spaces are replaced to zeroes by "scores_zeroed". - Particles work in all bpps, they are using draw_pixel. - z figures are rotated in slightly other way in array so they will look cool in internal figurestats mode. - Lot's of skins. I've started to work on ccs, fixed a couple of other stuff... [diary] omg, it's 4:04. sleep, fool! [/diary] 0.6983 - 19.12.02 - 0:25 RASA Kefiirs 0.5kg 2.0%-) release. [diary] Today was a fine day when I succeeded in finishing many things. I found l33t 44 font pack from "consolecoder@hotmail.com" which contains wide variety of oldschool fonts from Amiga/C64/etc. I've finally integrated some GOOD font and squished last couple of font related bugs. I'll definately need to find some 20-128 bitmap font or to covert some of these to bitmaps. I've also integrated autogenerated drop speed adjustment menu into OpenConfig code. That's a bit wrong but I'm not sure where to put it for now. I've spent 1 and half hour trying to implement new control system similar to CDVST. Well, I found out that such system works great in any kind of scrollers (pixel-by-pixel movement), but not in tetris. I've also found a problem with particles disappearing after glass is half full. Since keyboard handling was removed from SDL_WaitEvent loop, it was not possible to push SDLK_DOWN using timer. I've tried to achieve that by copy-pasting SDLK_DOWN code into timer callback function and it didn't worked as I expected. Figures were falling to the bottom of glass and staying there. I've removed CheckCollisions from every place except one, removed cycling on floor and it worked almost perfect. When I tried to put back SDL_WaitEvent loop something broke and I had to restore bgs.c from backup. Whatever, that one works just fine. I lost time and wasn't able to work with structures again. Grr. I finally found a way to use LEFT/RIGHT + DOWN combination. I had to combine both ways, see source, it's combination of waitevent and getkeystate. I had to create custom user event and handler for moving figure down so pushing down would not interfere with pushdown callback. [/diary] - New (20-128 ASCII chars) integrated font. - Fix to dN-font.c convertor which prevented to convert most of fonts correctly. - New autogenerated speed menu. 0.6982 - 18.12.02 - 3:33 Hofmeister Schinken cheesy release. [diary] Today was a hard day. I was very sleepy cause I underestimated my knowledges and tried to split bgs.c into several pieces yesterday. It was useless waste of time for now. I came to work and found that some russian idiots are advertising their web development studio on sourceforge through email. "YOU WILL BE SURPRISED HOW LOW OUR PRICES COULD BE". Haha! I had to buy new network card since g'old ACCTON from brandname Compaq box died after 2 years of non-stop work. I wonder how much gigs it passed through itself... Oh wait, that wasn't Compaq box ;) Compaqs never die that fast. Anyway, I've got new RTL8139 card (I like using standard chipsets whenever it's possible) and downloaded all the new mail. Well, then I had serious non-stop work-and-talk session for couple of hours but later I was surprised that someone else except .ru idiots responded to my design request. I've told him everything I want (simple page like http://videolan.org with only 1 logo). I also received email from GCUKBlocks author. He said that it's fine to use everything I want and asked for permission to use porions of my project. Oh well, it's open source - why should I resist :D In eCafe I spent more than 2 hours researching Atari related stuff and found several nice atari fonts. I've also contributed my Atari XC12 and LDW1050 manual skans to one guy who has really nice site where I was downloading all the megademo images last year for PHAT1. I also found some nice docs and faqs about Atari and was too excited to look for other fonts. I even got Atari800 source. BUT WHEN I GOT HOME and started to rewrite my font functions I found out: 1) emuos.h font from Atari800 has 4 codepages. In ATASCII (Atari ASCII). Fuck me, what a shame. I was struggling with that file for half an hour rewriting functions to make it display something. Well, It worked but ATASCII is way too different from ASCII that's why I would need to write ATASCII2ASCII function. WHY THE HELL DO I NEED SUCH FUNCTION IN BRICK GAME SIMULATOR?!?! I've searched all my harddrive for any 8x8 fonts and found NONE except Apple II fonts. Fuck, not-another-codepage. I wrote dN-font tool to convert fonts from .fnt (plain byte-by-byte format) to something similar to XBM. Since I haven't found any XBMs on my hd... Fuck, where did they go? WHERE'S MY DEVBASE WITH ALL STUFF?!? Ah, screw it. I've tried to convert some of the VIC/Printer/C64 fonts to my format and found that they not only have wrong codepage (this one is closer to pc though) BUT they feature negative numbers in file. Very nice, I wonder if there's something wrong with my converter. But it works perfect on Atari fonts... Ah, screw it. [/diary] - Restored everything from 2 day old backup. - DrawDigits() function is upgraded to show any letter you want. [diary] I wonder if external font support is really screwed up... And btw - it wouldn't be that easy to integrate /* Fireworks demo written by Dave Ashley */ since it's way complicated for current particle system. I'll try to bug Saint about fire routines since he has article on his site about that stuff. FUCK, IT'S 4AM AGAIN. NO, I"LL NOT MISS A CHANCE TO COPY THAT README TO FLOPPY!!!!!!!!!!! ehm, I just saw this in my stderr: DirectDrawSurface3::Flip: DirectDraw is still drawing I wonder if it's fullscreen<->window switching problem. Zzzzzzzzzzzzzzzzzzz [/diary] 0.6981 - 17.12.02 - 2:06 Multifruit juice release. [diary] Monday started with crazy hurry. "One more function and I'll go sleep" never works as you know. That's why I was sleeping only 7 hours. I forgot to copy that readme file with yesterday's diary and was't able to post all the interesting stuff on forum. Anyway, I wanted to send emails to all people who made all the projects which I was playing with yesterday. But my email client expired and I had to... ;) I've contacted Luka (GNU Robbo author) and we were talking for entire day discussing his project. Then I've contacted trailblazer author and reported about success win32 port. After my network card started to work slowly I've asked admin to open access to internet on my computer. I went to #SDL @ openprojects.net and discussed several SDL things. As usually, people were very friendly but I was kicked once for copy-pasting 10 lines of code ;) nomorecopypasting.com. eh? Then I went to VK and started to mess with SourceForge.Net. I've classified bgs & Romov.Net and then I've even created basic webpage, made a release and wrote some news on http://bgs.sf.net. I've also added bgs.lynx.lv and bgs.dotnet.lv aliases to sf.net host. SF.Net system is very nice but it's almost impossible to work with it in Mozilla - every time when I was trying to submit some form I was logged out :( I've posted several job ads (gfx/theme guys, gui developer for non win32 platform and somebody else) and added besjonok as "All-purpose monkey" :) I've spent some time updating my profile with skills and then tried to make small webpage for http://romovnet.sf.net but it was late and I had to go home. [/quote] - Improved WaitFrame(). Thanks goes to #SDL guys for a basic idea. gltron said that SDL_Frame(1) is safe to use. - That bug was fixed after I've implemented new MainLoop() routine: If you'll push ESC in fullscreen mode and then try to restore app screen will be black (doh, not again!). SDL_Flip is called but nothing is shown. It might be SDL_ACTIVE... problem, need to debug (printf). - Wrote wrappers for all gfx functions to make them more portable. 0.698 - 16.12.02 - 4:03 What a release! [diary] I've spent entire day (starting from night) researching different source codes and getting ideas for major rewrite of main cycle. I've succeeded in compiling "GNU Robbo" (http://gnurobbo.sf.net) for Win32 platform and made a lot researches in "Robbo" area (it's very nice sokoban-with-action game from Atari created by Avalon (.pl) in 1989). I was working on it almost 4 hours.Then I moved to other usefull stuff. I've compiled trailblazer-0.9 by Paul Robson (http://trailblazer.sf.net) which shows what 18kb without any graphics can produce (doh, it's not a democompo, i know that any 4k demo could be much kewler but don't forget that it's C not ASM). Then I accidentaly opened pengswim-0.3.0. I wasn't able to compile it since I brought sources on floppy without libs and gfx but I found AWESOME particle system. I tried it and got some bubbles on screen. "Uhm, Neat!". After playing a bit with it I understaood that major loop rewrite is absolutely MUST to continue further development. I moved to series of parallax demos by David Olofson and didn't find what I've expected - he was using simple SDL_Delay(1) (WHICH IS NOT CORRECT WAY TO DO IT). Then I played a bit with Snipe2d (orbital sniper game made for 48h game compo by Jari Komppa aka Sol (http://iki.fi/sol)). It features a very UNREAL zoom routine which I might even use for some crazy block demolition on some skin. I wonder if I could port it from C++ to C. I skipped smoothscroll-1.1 since it's GL stuff, skipped metris-20021102-1 after 10 minutes of unsuccessfull compile (missing some files as usually and it's C++, baby), skipped ltris (!!!Need2Check!!!) and played a bit with some BombMan by 2002 Andrzej Pływaczyk. It was something I really was searching for but THE THING RAN AT 2fps on my puter so I skipped it (it used SDL_Delay anyway). But Bombman is cool and I'll come back to it when I'll try to write something similar. And then I found my LAST FILE which was perfect (last thing is always like that). It was "Certain Death Via Space Things" by Phoenix Kokido (http://kokido.sf.net). It explained ALL stuff which I needed. I got his Wait_Frame() routine and INSTANTLY bgs started to show and update particles and other stuff as I wanted! I rewrote some particle stuff since it was created for pinguin fishing game and got some nice basic particles. And then... [/diary] - WaitFrame() based on GetTicks featuring FPS limit. - Particle system with 2 nice effects. - HandlePause() is not needed anymore. - ShowPause() has some internal changes which should allow nogfx skins to be more leet than ever. - MainLoop() instead of Handleehmsomething(). I still have a lot of things to rewrite there: - SDL_GetKeyState(NULL); looks cool and allows to handle custom key configs really easy. I need to doublecheck cdvst for that. - I tried to get two button things working "left/right + down" but couldn't make it :( I think with keystate rewrite it would be much easier. - I'm not sure about all drop timers. They should be replaced with Tick-based checks. But now they work neat even in pause mode which is better than it was before. Somehow all of the stuff stops in that pause=1 mode and isn't reseted after pause=0 (before - you are dropping a figure with space, pushing pause and unpausing game. figure is not falling - it's moving with standard speed). [diary] What else can I say? It's a major beta release. Now I need to move all of the variables into structures (I have lotsa neat examples and it should be really easy anyway). After timers will be punished I'll make that auto generated speed menu in GUI and even think about +/- keys for increasing/decreasing speed. FPS limit changer should be implemented too. I also want to get sources for Atari800 emulator and find if they have A800 font builtin in the same format as I need. That will save entire day of drawing and converting fonts. I should also finish font drawing routine, check if new draw_pixel is better than old DrawPixel and leave only one routine since particle engine uses it's own routine too (doh). I also want to get WinAPI for mingw32. Major rewrite of config files is badly needed - X-Mas is coming. I also need to finish at least one CCS brick game skin. Custom controls is MUST, ingame clocks (could be used for level/speed increase), other scoring stuff like scores for dropping figure etc/////////////////////////////////////////////////////////// I wrote that piece in 45 minutes. zzzzzzzzzzZZZZZZZZZZZZ! But I still need to say THANKS to Axel which revived that project with his harddrive! [/diary] 0.69751 - 15.12.02 Triis siveentini release. - None of the .rc files are locked after scanning. I wonder why .rc file after SkinSkanner(file) is locked... - "Rescan" feature is fixed. 0.6975 - 14.12.02 Rimi pastry release. - Implemented new font loading algorithm. Before: 00111100 01111110 01100110 01100110 01100110 01100110 01111110 00111100 Now: 60, 126, 102, 102, 102, 102, 126, 60 .exe file is 5kb smaller! PS Olschool algorithms (I was using that one on my Atari65XE for creating big icons) r0x! - Added "rescan skins" feature in GUI. - Added protection from reading broken skins (if line doesn't have "=" inside it just gets ignored). - Sorry, you can't use ":" as argument delimeter in configs anymore. I'm going to try using libconfuse in feature if you want it that much. 0.6974 - 13.12.02 - 20:16 Traffic release. This one goes to public! - Skin selection from GUI works. Well, to set wID yourself you need to add MIIM_ID bit to MENUITEMINFO->fMask. 0.6973 - 13.12.02 - 16:10 Friday, The 13th release. - Default skin is almost done. - Neat boxes are drawn using DrawBox() (featuring shadows and borders) Missing features: border w/h/color, shadow offset/color. - Internal font (digits only now)! - Pause is shown as 54073 (paose) in internal skin mode. - Internal skin has small figures under every figure stats line :) - Pause handling is now fixed. Too bad it makes all other keys (except skin loaders) disabled. - "skan for skins" is available through "Skin" menu. It doesn't delete old skins yet (I don't need how to get their wIDs). - Moved all the variables outside .c file to .h! Second try was much better! 0.6972 - 13.12.02 - 0:36 Mango Lemon Pineapple nectar release. - Universal handler for skin loading using numbers (not on keypad) is finished. I wonder why it loads same skin TWICE after pushing button 1 time ... - Well, I thought that symbol # for comments is better than semicolon. Is it me or I like linux ;) ? I'm thinking about using library confuse-1.2.2 if my parser will not be good enough. - SetDefaults is almost ready. - Aha, if you'll just check for event.key.keysym.sym>=49 without checking for event.type == SDL_KEYDOWN it'll do everything twice (KEYDOWN & KEYUP). - First step for importing arrays. Well, that's easy but I need easy way to manage multiple line values (like figure arrays). - Figures could be random colored and have random colored pieces. (r button). Looks funky :) 0.6971 - 12.12.02 - 23:51 Danish bacon-cheese release. - Finally, 3rd revision of trim function (all the credits flew away to Saint) - InsertMenuItem works. All of the found skins appear in skin menu inside GUI (wow, that was really easy). - Started to implement universal handler for skin loading through keyboard and GUI. WinAPI is annoying thing. What the fuck is MENUITEMINFO.wID and why it's automatically generated by Windoze? Why hardcoded menu element access check like "wParam == 40100" works but "wParam > 40100" for generated menu items with InsertMenuItem does not? It's not obvious, m$ sux0rz?!? - Code cleanups 0.6970 - 11.12.02 Wow, one harddrive is alive! BUT dotNet is shutting down... - Integrated skin skanner into main code. The only missing thing is check for "empty" arg2 which might crash bgs in case of some incorrect skin. Too bad my MSDN is missing "InsertMenuItem" RTFM :( - Second revision of trim function (thanks goes to Saint!). It doesn't work the way we expected :( - More debug information is written to stdout file. 0.6784 WIP xx.1x.02 - G-Loc 2 WIP: - Hurray, "X" button works for closing a window! 24.11.02 - 15:43AM Maracuja nectar release. - Added CCW rotation code. And mapped it to D button for now (A-CW, D-CCW). - Started to research handheld tetris. Speed 0 has 300ms speed! 23.11.02 - 11:40AM Peanut release. - Directory skanner. Finds skins! 21.11.02 - 22:49PM Spicy tomato release. - Found a way to pass multidimensional array to function. Thanks, Saint! - Well, seems that since align routine became AlignFigureArray(int source_array[4][4]) you would not be able to cycle on floor anymore! - Aha, gotcha! Fixed memory leak. HEAP[bgs.exe]: Invalid Address specified to RtlFreeHeap( 820000, 8201d8 ) It happened when I was trying to unload (I wonder why I was doing it?) empty surfaces. 21.11.02 - 1:28AM Apple juice release. - Using memcpy for 1:1 copying of arrays instead of annoying 3 line for code. - Made function for displaying numbers/text on the screen. DrawInfo started to look like big pile of cloned garbage! - Randomly rotated generated figures. I cheated and RotateFigure receives some global source_array, operates it and returns nextfig or tempfig on exit. - 2=D (No, that's not a crazy smile! I just remapped buttons.) - Title Screen, Game Over screen. These are MUST for "complete" game. 0.67831 - 19 Nov 1:22PM RC-1 - Fixed all skin problems. 0.6783 - 19 Nov 0:36AM Since I'm still drunk I'm doing really crazy shit: - Stats were disappearing again after figurestatstotalh < figurestats[max]. I just removed brackets in figurestatscoef formula and now it's working fine. - Splitted bgs.c into bgs.c and bgs.h. More splitting coming today... - New variable - "realheight". You can compile executable with GLASS_HEIGHT set to whatever you wish and then set real height in skin. For example max height used in skin right now is 23. I've compiled bgs with GLASS_HEIGHT set to 23 and added "realheight=20" to all other skins which have height 20 to use only 20 first cells. Such quick hack would allow not to think about using dynamic arrays with malloc()s for quite a bit. - Some code cleanups. 0.6782 - 18 Nov 2:16AM Latvian Indepen_d"a"nce Day. - I'm independent from MSVC from now on ;) Using Dev-C++ from now on - it's IDE is much better, it's free and mingw generates smaller executables. I was planning to do that for a long time but documentation digging took me a bit longer than i though. I was too lazy to download it :D - Implementing level system (Hi, ugly Tetroid). - Screenshots support. Press F12. 0.6781 - 17 Nov 1:26PM - Fixed several config files. They contain all the values we have now. - Fixed a bug which would fill your top lines with the same line as zero line if you had 0 line partially filled and tried to remove any other line. - Improved pause handling. Drawback is that all of your timers are stopped every time you call pause and set to default values when you are out of pause. As far as I understand there's no way of getting timer state - Fixed nextmultix/nexymultiy issue. Now you can make doublesizing look any way you want. I'm thinking about renaming it to nextresizing since you can make figure fit into something like 16x32. - Fixed major problem: "When you'll fill entire glass sometimes you'll not lose but instead receive clipped figure which becomes original figure after rotation. Something is wrong with collision detection!" Problem wasn't about the collision detection but about the way new (and next) figures were generated. - Added "byeon" and "byefile" vars. That's the screen which will be shown after pushing quit key. It's using ShowAndWait function (first function using pointers & references!) with Delay set to 2 seconds. I'm thinking about adding delay values for these screens to config files. - Wrote function MyLoadBMP. Very neat thingie - allows you to load file to surface and set transparency and alpha at once. 0.678 - 15 Nov 6:54PM Curses. - Using old collision detection engine. Should allow to "cycle figures on the floor forever" :( Previous release allowed to drop figures through floor thus making them to disappear. - Renamed a lot of variables, added a lot of variables to config file. 0.677 - 15 Nov 1:08PM Almost a release. - Coloured the figures same way as Tetris Plus does. Looks too shiny. - 0 warnings. - Implemented multiy. Seems that it's not working. - Fixed the the most worrying thing (concept of figure rotation handling and collision). Before: "You can rotate L and I figure for infinite time. Just wait till it will reach _FLOOR_ and try to rotate it twice (it will go up). You can make it hang there using that feature for infinite time. Damn." Now it's working the way it should be. - Implemented basic figure texturing. Check jaleco theme. - Implemented support for catching of most important init variables from command line. - Wrote a parser for config files. - Implemented skin support from external configs (.rc) It's possible to "skin" these things atm: * Screen init settings * Scoring rules * Ingame GFX (including bitmaps) Check any .rc file inside theme directory to see how it works. - Created 3 basic skins. More to come soon. They are beta ;) 0.674 - 13 Nov 2:51AM - When you were dropping a figure bgs started to manually move down your figure with delay 5 (+~30) ms. Now it just sets drop timer to speed divided by drop speed coefficient. That fix allows to control figure while it's falling! However this is causing unexpected problems in 256 color mode - please check buglist. But anyway - it really improves gameplay. - Fixed "floating" stats. Forgot to put () in statscoef calculations. - All same-type-figures always have same colors (in future - textures). e.g. I,Z or whatever will always be the same color on screen as other I/Z. This is much better - you can see parts of your removed figures. - If you don't have any bmp skins for tetris it will work fine anyway - fixed some "do not clear screen" glitches. 0.673 - 9 Nov - Changed controls. Lots of people were confused with F3/F4 - that was actually same control as used on Atari. - bgs should work fine on cards which do not have framebuffer (well, at least SDL manual says it will update entire screen instead of flipping buffers in that case). - Played a bit with sound. No, it's not available yet. And I still can't competely understand how it works. - New skin from JK. - New feature - F is used to remove frame and header from windowed mode. 0.67 - Fixed stats bug (stats was disappearing after 52 figures since stats field height is 52 and after 53/52 result was not float) - Fixed stats bug (Z&L/Z&L flipped figure count was saved incorrectly) No more software flipping on L/Z - now they are flipped in array. Strange, but it fixed the problem. 0.667 - If you'll push pause, then go to fullscreen now it will be updated. - Added SDLK_KP0, SDLK_RCTRL, SDLK_DELETE to rotate figure. - Fixed Warsaw skin - it was showing incorrect buttons for Pause/Screen. 0.666 - Renumbered releases. Now it's 0.666 since that last release had 3 bugs which I accidentaly added. It was repacked 3 times :D - Fixed score bug (if you'll get >32768 your entire stat will reset) - Tested 320x200 instead of 320x240 (inspired by shadez from IRCNET @ #scene.ee) That aspect ratio sucks :) 0.0998 - Added ability to switch fullscreen/windowed modes in pause mode. - Fixed bug which showed garbage on some videocards. 0.0997 - Fixed black screen bug which appeared after you go to fullscreen, push ESC, then go back to app. 0.0996 - Fixed bg.bmp - some incorrect button mappings. - Possibly fixed some cursor problems after switching to fullscreen. //=========================================================================== // ToDo //=========================================================================== ToDo: 0.8 - !!! Use structures since code becomes unreadable with hundreds of vars. !!! - Solve mystery with 16-32 disappearing lines in WinAPI mode. - Optional "neat" scrolling. - HighScoring. - Add speeds according to current skin variables into Speed submenu (needs fix, should be generated for default skin too) - Fix clocks. - glassopacity, glasscolor? - Advanced scoring system: * Scores for moving the figure down. * Bonus for dropping the figure. - Add features to show "scores left till next level", "lines left till next level" (and may be even rand() them so they would make a perfect basic "level mode". - It should be possible to import colors for "simple" themes like warsaw from config files. 0.9 - !!! MULTILAYER GFX SYSTEM. Skins already get too complicated. !!! - Move all gfx to one file. It should allow designers to use one file with lot of layers. - More nice particles. - FPS? - Implement level support (levels are increased every 100 lines now) and include something as example. - Import figure shapes set from chinese handheld tetris! - Multi directories for skins - Implement filling of "level" progress indicator in warsaw & jaleco skins. - Boss mode (wip). 1.0 - Skin config should be loaded once to memory and then parsed. That way it would be possible to store variable names in special associative array and use SetVariable(arg1, arg2); (switch(arg1): case... or if...) to load/save/reset variables. ______Or may be not?_____ - Use confuse 1.2.x library for config parser? - Some other modes including "Time Trial", "Level Mode"... - It should be possible to "skin" anything you want: * Controls * Figures * Sounds - Sound. - Clean code. - Make code really cross platform. Wanted: Linux, MacOSX, DOS, BeOS. - Documentation. - Mouse? while ( !stable ) { Test(); ReleaseRC(); } Well, that finished todo list will force bgs version to reach number 1.0! With all finished cool stuff you'll be able to simulate your own tetris clone. Later I'll think about moving to C++. It'll give us complete freedom. Anyway here's the list of planned stuff. I don't have idea when I'll do it. - Windowed mode resizing using SDL_image? - Dynamic resizing of tetris glass. (C) - 2 player VS support (C), story mode (C++), puzzle mode (C). - Animated game field and figures (C++/C). - Background music (C). - Ingame gfx GUI (C). Far future... - Mods for game rules. How about Puyo Puyo, Columns, Dr. Mario? (Seems real after digging ClanLib. Lua rocks.) - Netplay? (Seems even more real with new high level lib for SDL_net!) //=========================================================================== // Questions //=========================================================================== - How can I check if some surface contains something inside or is really empty? //=========================================================================== // Ideas //=========================================================================== - one type figures should be same color. what about stats? - funky figure rendering/shading //=========================================================================== // Credits //=========================================================================== - Saint (http://saint.dotnet.lv) Help with basic C stuff, figure rotation code, trim code, testing, pointing that gfx routines should use doublebuffering, unsuccessfull GUI development advices ;) - Dmitry (GS) Pointer & reference stuff, advices on fixing float number related stuff. - Janis (http://vavoom.sf.net) strtok() explanation and a lot of other neat coding advices. - iERiS For great idea of making "Tetris compo" and giving some great ideas. I've also made skin "little T" out of his "little T" game ;) - Axel Reminded about int < 32768 (score bug), wrong repack reminder, pause/fullscreen bug finding and saving the day by giving me small harddrive when all of my hds crashed, making best tetris scan. - M P Zuckman (http://blueorange.com) Awesome design skills. Several skins including lcd, xmas, commie... - mikejedw (http://pengswim.sourceforge.net/) Great particle engine. - Codac Home (http://portabledev.ferradj.net/) Great 8x8 fonts from consoledev@hotmail.com! - JK (http://) First real skin (Brick/JK)! - Pit (?@yahoo.com) dotNet.lv logos - Phoenix Kokido (http://kokido.sf.net) For his awesome "Certain Death Via Space Things" game which explained really a LOT of things to me. //=========================================================================== // Thanks goes to... //=========================================================================== - Vecais Kvakers (http://www.kvakers.lv) For patience, discounts and other stuff. I would never have so much CDR(W)s full of sources without them. - Q-Ball (http://q-ball.times.lv) For testing on his GeForce 2 MX400. Don't use SDL_ANYFORMAT flag! - Atari800 team (http://atari800.sf.net) For their internal OS font. - Radek Shterba (http://www.infos.cz/raster/) For TCHEKO & CAPEK fonts from Atari. - Useless For beeing absolutely useless.