home *** CD-ROM | disk | FTP | other *** search
/ Season's Greetings & Games Unlimited / UGOLD_cd2.iso / minerva / history.log next >
Text File  |  1993-09-16  |  17KB  |  330 lines

  1. /*************************************************************************/
  2. /* NOTE: started from source of Blowup in nic.funet.fi *******************/
  3. /* log ********************************************************************
  4.  
  5. Coding:
  6. - error messages into own function, re-outlined code, _lots_ of comments
  7. - rewrote command line argument handler and fixed fatal startup bug
  8. - less cryptic variable names (struct members and macros had equal names)
  9. - clear upper left corner for starting place
  10. - header file
  11. - (SQUARE).marked overflow fixed (not bug, but question of principle)
  12. - removed open_near_squares() since I couldn't understand it
  13. - struct bit-fields (use less memory)
  14. - split some functions to smaller and more specialized ones
  15. - fixed (finally) a serious bug in counting safe squares
  16. - added keyboard control for cursor (my mouse got broken...)
  17. - lots of defines to make it easy to move fields (buttons) around
  18. - game options (3 sizes, 4 levels)
  19. - keyboard shortcuts
  20. - removed command line options (temporarily)
  21. - status flags
  22. - redundant error checking "just in case"
  23. - radio buttons functional
  24. - time checking into own function to let time progress all the time
  25. - split code to several files (too big to compile in one piece)
  26. - added possibility to CHEAT, always noticed and marked as CHEATing (now..)
  27. - quit and new buttons functional
  28. - open_near_squares() back, different approach, same idea (game too easy now)
  29. - command line options back
  30. - control from status word to several flags
  31. - dialogs functional
  32. - keep only common dialog image to save memory
  33. - stack overflow when reveal in easy+large -> double stack size
  34. - keyboard buffer fills up too fast, thanx to "keep cursor inside minefield"..
  35. - rewrote command line handling and error/exit routines
  36. - generic function handle_dialog() works!
  37. . pointer to structure, whose member is a pointer to array of static void
  38.   function pointers, and this is passed as an argument from outside of file :-)
  39. - menubar and menus functional
  40. - hierarchical submenus 1. level functional (some really wasteful code..)
  41. - memory allocation problems: some fatal, all mysterious
  42. - Hall of Fame dialog lookalike
  43. - removed most of status bar to make menus more important
  44. - First software review session! Some nice feedback and suggestions
  45. - icon drawing functions take now absolute coordinates -> replace old w/macros
  46. - unite all 3 functions that checked keyboard input
  47. - get rid of memory allocation problem by not allocating memory
  48. . free everything as soon as possible == before smthng else is allocated
  49. . don't try to free memory, which you didn't allocate!!
  50. - optimized menu code and reduced structures by half
  51. - more memory management (pre-allocated template memory + flags)
  52. - save settings between sessions
  53. - highscore functional
  54. - cheating enabled - not marked as cheating for testing purposes
  55. - "portable" ANSI C RNG
  56. - can't change country settings, not even w/direct BIOS call..
  57. - trouble in redefining colors
  58. . red and brown are same color in my color editor!?!
  59.   (actually brown doesn't function and red is used in place of both)
  60. . setting 16 16-color pages gives 4 color pages
  61. . setting 4 64-color pages gives 1 color page
  62. - HAA! Now remember this: when totally mysterious, weird and unpossibly
  63.   crashes happen, increase stack size!!!
  64. - can't test from compiler due lack of memory (anything related to score)
  65. - compiler used to optimize my pseudo Result Generator Algorithm away. Fixed.
  66. - check for read-only diskettes -> lots of trouble
  67. - Thanx Harri! First BETA-tester ;-)
  68. . added flag to prevent creation of mines.def and mines.hof files
  69. . some noise added: 4 beeps
  70. - amount of extended memory (still needs to get free/used)
  71. - easier system-generated scores (too easy now.. how to please everybody?)
  72. - I printed all the code, removed some redundant code and fixed some bugs
  73. . remember: mpage changed all TAB -> CR == restarted printing at 1st column
  74. . (FLAGS)now structure to 14 unsigned ints. Faster code, uses more memory.
  75. . fixed bug in restoring last used level. Would've never occured since it
  76.   is 2 bit field and all possibilities are used, but still it was a bug..
  77. . fixed bug in handling Score dialog w/keyboard. I forgot to enable it.
  78. . found out why Score got zeroed sometimes.. real stupid, counting lenght
  79.   of string instead of size of memory buffer. Fixed.
  80. - "Ask, and it shall be given to you"
  81. . 2 ways to reset score: all via menu and some via button in Score Dialog
  82. . all levels now easier
  83. . statusbar is now 3 buttons, shift reverses operation in size/level
  84. - small changes
  85. . SHADOW no more part of dialog
  86. . cursor centering faster
  87. . fixed debug detection of changed amount of free memory (finally)
  88. - between summer holiday and Finnish army refreshment camp
  89. . one or two flags
  90. . mark default button (Bug: draws over cursor. Fix: don't use moving line)
  91. . Mac cursor + blown-up cursors
  92. . superclick by stepping on opened square (unsafe)
  93. . statusbar now works w/mouse only: step forward and mark backward
  94. . more general radiobutton grouping/handling
  95. . default button
  96. - BUG2: pressing ESC while menu is open.. disabled.
  97. - new ToDo list (lots to do :)
  98. - more general menu creation
  99. - superclick now safe, auto-stepping and auto-marking.. too easy to play
  100. - BUG2: ESC works correctly with all menus
  101. . it's so incredible simple I wonder, if it really works..
  102. - generic check_text_input() for getting user input
  103. - color editor finally works (crossing my fingers..)
  104. . palette saved in a file and read at start up
  105. . take 2: when mysterious and weird errors happen, REBUILD the whole PROJECT
  106. . sleep it over and try again next morning.. well, later same day actually :)
  107. . edit one file at a time and if you redefine a structure REBUILD all PROJECT
  108.  
  109. Graphics:
  110. - tested 2-page drawing -> faster, but max available resolution decreased
  111. - enable mouse for full screen all the time -> lots of trouble! (fixed)
  112. . keep mouse always in sight == allowed area smaller than screen
  113. . mouse routines in assembler just for the fun of it..
  114. . mouse available for the whole program execution time
  115. - support only VGA 640x480x16
  116. - speedup screen update w/runtime square templates and specialized functions,
  117.   removed unnecessary drawing on screen and prohibit writing over cursor
  118. . program response time should be now fast enough
  119. - buttons in statusblock for fast selecting
  120. - identify keyboard shortcut keys in button names (color, highlight)
  121. - smooth working radio buttons (no flicker, works even with keyboard)
  122. . now Mac compatible (not selected, maybe selected, selected)
  123. - try to speed graphics with code from Richard F. Ferraro's book (video.asm)
  124. - new and quit buttons
  125. - new colors for mine numbers (bright to dark)
  126. - possibility to check the minefield layout for testing purposes
  127. - save and restore old screen background color (just in case)
  128. - dialogs have shadow to make them look 3D
  129. . raise up front to catch attention
  130. - changed solid background to interleaved to stress eyes less
  131. - cursor flickers no more (mouse_hide for longer periods)
  132. - can choose either lefthanded or righthanded cursor
  133. - it sure is hard to make menus:
  134. . 3D mine amount numbers
  135. . new flags (different shapes for color blind people)
  136. . different looks (metal, grass, sea)
  137. - when using keyboard to move cursor, keep it inside minefield
  138. . shift+arrow keys can move cursor outside
  139. - menubar and menus look and behave pretty well..
  140. . all 3D
  141. . popup hierarchical submenus
  142. - separate help menu + many new and bigger help dialogs
  143. - status block at top of screen (better now)
  144. - bigger squares -> smaller max minefield area
  145. - always center minefield
  146. - radio buttons in highscore work now with mouse and keyboard
  147. - lots of and even more small cosmetics fixes while writing The Report
  148. - second and last Review (lots of to fix):
  149. . visualize mouse buttons w/mouse pictures
  150. . OK button to dialogs (== only exit)
  151. . menus to work with keyboard (how OS/2 works?)
  152. . enter user name in DOS text mode to get a _blinking_ cursor
  153. . help dialog items in order of usage (?)
  154. - Marking dialog final (first version)
  155. - OK button into Score dialog
  156. - Postcard dialog final
  157. . pixel image of Finland as a stamp
  158. - "About This PC" dialog
  159. . current country (27 different)
  160. . RAM memory bar
  161. - rewrote About, Credits, Rules dialogs
  162. - delay in score dialog, when pressing the Exit button w/keyboard
  163. - submenus work now as expected, not as I preferred
  164. - Thanx Harri! First BETA-tester ;-)
  165. - a real nasty looking bug when using menus w/mouse and keyboard. Fixed.
  166. - sticky menus (should be optional)
  167. . changed code in 3 places, remember when restoring normal menus
  168. - active menu item marked (only one per menu, only in submenus)
  169. - mouse moves closer to 1:1 resolution and faster (too slippery?)
  170. - first BUG(!) report (Björn Karlsen) - MineValue justification fixed
  171. - exploding mines damage cursor
  172. - options dialog + some new options for it + all old enabled
  173. - something small but visual for 1.0d release
  174. . new score highligted on HighScore dialog
  175. . Sea exterior has waves
  176. . 2nd credits dialog
  177. . safe superclick shows squares, which were about to be stepped/marked
  178. - Color editor
  179. . BGI calls to get it done fast (changing palette slow == misses function)
  180. . sliders not fully functional
  181. . should do getcolor() inside sample window
  182. . undoc feature: mark_button while pressing Default == sum colors to Gray Scale
  183. - it's raining so I can't cycle to university to upload 1.0d..
  184. . inactive horizontal bar in menu to separate dangerous/group items
  185. . in statusbar "Mines" title should've been and is now "Flags"
  186. . Hint: moves cursor on safe square. Asking adds time (squares/10), will
  187.   randomly search (squares/10) time and then in order from bottom right
  188.   corner one row at a time.. still raining..
  189. . fixed a bug w/pressing mouse buttons w/keyboard (ctrl-left/ctrl-right)
  190.  
  191. To-Do:
  192. Version 1.0
  193. - menus to work with keyboard (close!)
  194. - startup screen (320x200x256 GIF, external)
  195. - logout screen == nag (postcard dialog) (exit w/8 bit on didn't work ?!?)
  196. - better sounds == tunes (2 requests, one for no sounds at all)
  197. - yet again the ******** Random Score Generator algorithm...
  198. . user can control the random score difficulty (shift/alt)
  199. - save last used Record name into mines.def
  200. - HighScore and Defaults files are created in current directory
  201. . get that PSP specs and allow 2 possibilities: current vs. program dir
  202.   (in case someone runs this from CD disk or read-only network)
  203. . does PSP work in OS/2? Windows 3.x/NT (Nice Try :)?
  204. . some other user-defined directory
  205. - faster get/putimage() (Ferraro)
  206. - software cursor drawing and movement (ISR) (2 requests)
  207. - maybe own mouse device driver..
  208. . "Logitech Mouse Programmer's Reference Manual" has serial I/O timing and
  209.   somewhere I saw the port data bit by bit
  210. . beware Microsoft Mouse Programmer's Reference! I checked it <shudder>.
  211. . howabout How to Build a Better Mousetrap? Try to check reviews
  212. - Icon and .pif files for Windows users <sigh>
  213.  
  214. Version 2.0
  215. - add the other minesweeper games:
  216. . unix: try to get from top-left to bottom-right
  217. . Gung-Ho (exploded mine == +5 sec)
  218. . only flag mines (now: only find safe)
  219. . check every square (to make the selection complete)
  220. . find only mines == apples, hedgehogs etc. (empty square == +2 secs)
  221. - Roman, Japanese, Chinese, Indian etc. numerals (anybody want?)
  222. - screen dump into file (PCX)
  223. - used OS identification (== 2 lines 4 OS) (dos,4dos,OS/2,Win,NT)
  224. - highscore result error checking and crypting
  225. - CRC checking to prevent virus infections
  226.  
  227. Version 3.0 (The Ultimate version)
  228. - print directly a screen snapshot
  229. . color, shades of gray, PostScript.. laser vs. matrix printer
  230. - more menu type options: tear-off+floating (the difficult one)
  231. - multilingual (separate language files + default build-in)
  232. . Pioneeripeli Suomen Armeijan Pioneerikoululle (Kouvola)
  233. - get rid of BGI libraries
  234. - own font (6x6 and 8x8) + writing routines (Ferraro)
  235. - change to text mode when requesting user name (8bit font)
  236. . save plane 2
  237. - you should see through dialog shadows
  238. - cycle cursor color (done, but how to keep it not-black-nor-even-too-dark)
  239. - continuous background music (LPT sounds and/or some soundcards)
  240. . volume control: silent, low, medium, loud (control w/PC impossible?)
  241. . VOC
  242. - for superVGAs extra huge play area 1024x768x16
  243. - automatic solving
  244. - for more see "mines.all"
  245.  
  246. Bugs:
  247. - only 7 bit font in graphics mode == no Scandinavian characters
  248. - keyboard and mouse together at the same time -> still unwanted operations ?
  249. - biosmemory() returns false data under DESQview says
  250.   Dr.James T.Smith: "Advanced Turbo C" page 30
  251. - fprintf doesn't detect write-protected diskettes, so I got into trouble:
  252. . I use INT13 AH=10 to check, if drive is ready
  253. . don't know if partition is on first hd (0x80) or second hd (0x81)
  254. . need to study partition table, I saw sample code in some magazine..
  255. . at the moment no harddisk read-access checked, use -f flag to prevent
  256.   file creation, if necessary
  257. - can't write on 720k floppy !?!
  258. - too slow main loop: w/fast mouse mouse_up detected in wrong square
  259. . use ISR
  260.  
  261. Graphical User Interface:
  262. There's no standard for graphical DOS programs, so I can make it just right!
  263.  
  264. Study rivalling programs for "common" features:
  265.  
  266. Mine Field 1.0.1 (Macintosh) (John Lindal 1992)
  267. Mine Sweeper 1.0 (Macintosh) (William Edward Woody 1991)
  268. Mind Mines 1.2.2 (Macintosh)
  269. MacMines 1.0 (Macintosh) (Cary Torkelson 1991)
  270. Bombs 2.2 (Macintosh) (Christer Ericson 1991)
  271. Saddam's Revenge 1.1a (Macintosh) (David B. Zwiefelhofer 1991)
  272. Mines 1.01 (Macintosh) (Daniel T. Griscom 1988)
  273. Hexmines 1.1 (Macintosh) (Ingemar Ragnemalm 1992)
  274. Mines (SunTools) (Tom Anderson) (I know it exist, but haven't seen)
  275. xbomb 1.2 (X11) (Matthew Merzbacher 1992) (read man page)
  276. xtmines 1.2 (X11) (Timothy K. Tsai 1992) (read man page)
  277. Mine Find 1.0 (DOS) (Edward Hengin 1993)
  278. Minesweeper 3.1 (MS Windows 3.1 1992)
  279.  
  280. menubar: all but one had this (Mine Find had only buttons)
  281.     Info (About, Preferences, Help)
  282.     Game (New Game, Highscores, Sound, Quit)
  283.     Level (Easy, Intermadiate, Hard, Impossible, Custom)
  284. buttons: for fast select (Mine Find, Saddam's Revenge)
  285. status_block: number of mines to be found and used time
  286. icons: visualize game objects and actions (step, flags, mine, blowup, Saddam)
  287. colors: backgroud    (blue: cool, water)
  288.     minefield    (gray: neutral)
  289.     warning flag    (red: danger, stop, heat)
  290.     "possible flag"    (green: safe, go, alive)
  291.     mine        (black: unknown, threat)
  292.     number of mines nearby    (gradate from safe to danger)
  293. sound: explosions, laugh (Saddam's Revenge!), step/mark square
  294. animation: Saddam's Revenge, explositions
  295.  
  296. Object of game:
  297. - to get from top left corner to lower right corner
  298. - to find all mines (identify every square)
  299. - to find all safe places
  300.  
  301. Other observations:
  302. - HexMines has a different minefield layout (how about 3D..)
  303. - xtmines has 3 granades to explode mines and 10 levels of playing
  304. - all need mouse
  305. - some can have several simultaneous games
  306.  
  307. Tony Rubin: "User Interface Design for Computer Systems"
  308.  
  309. - Lower cost PC based colour systems often offer only sixteen fixed colours,
  310. in two rangers of eight, one brighter than the other. Only the darker range
  311. can be used as a background.
  312. - ways in which colour can help on a screen
  313. 1. emphasise the format and partitioning of information on screens eg. make
  314.    title stand out or make scrollbars and icon easier to differentiate
  315. 2. draw attention to significant information such as warnings or a single
  316.    target item to be detected
  317. 3. categorise information: by colour coding similar items, related information
  318.    of interest can be easily be grouped by the user
  319. 4. locate information at different positions of quantitative scale, eg.
  320.    gradation from blue yellows oranges to red could indicate temperature
  321. 5. associate headings with information, as on a graph key for example
  322. - don't rely on colour coding alone: redundant coding
  323.  . position, size, spatial pattern, temporal pattern, color
  324.  . London Underground map (black and white versus color)
  325.  . few distinct colors minimizes color confusion as redundant coding, too
  326.  . some users are color deficient and will have trouble discriminating some
  327.    colour combinations. Using redundant coding w/pattern, shape, size and
  328.    contrast will be useful if not essential to them
  329. **************************************************************************/
  330.