Added mac levels info
[fp-git.git] / poprecog / poprecog.h
1 /*  Poprecog - Prince Of Persia Screenshots Recognizer
2                 Copyright (C) 2005 Princed Development Team
3
4                 This program is free software; you can redistribute it and/or modify
5                 it under the terms of the GNU General Public License as published by
6                 the Free Software Foundation; either version 2 of the License, or
7                 (at your option) any later version.
8
9                 This program is distributed in the hope that it will be useful,
10                 but WITHOUT ANY WARRANTY; without even the implied warranty of
11                 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12                 GNU General Public License for more details.
13
14                 You should have received a copy of the GNU General Public License
15                 along with this program; if not, write to the Free Software
16                 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
18                 The authors of this program may be contacted at http://forum.princed.com.ar
19 */
20
21 /*
22 poprecog.c: Prince of Persia Screenshots Recognizer
23 ¯¯¯¯¯¯¯¯¯¯
24
25  Author: peter_k <peter@princed.com.ar>
26
27 */
28
29 /* Defines */
30 #ifndef WIN32
31 #define UNIX
32 #endif
33
34 #include <sys/types.h>
35 #include <sys/stat.h>
36
37 #ifndef WIN32
38         #define defmkdir(a) mkdir (a,(mode_t)0755)
39         #define osIndepGetCharacter() getchar()
40         #define SEPS "/"
41         #define SEPC '/'
42 #else
43         #include <direct.h> /* mkdir */ 
44         #define defmkdir(a) mkdir (a)
45         #define osIndepGetCharacter() getche()
46         #define SEPS "\\"
47         #define SEPC '\\'
48 #endif
49
50 /* Text Defines */
51 #define MAX_DIRS 9999
52 #define MAX_SCREENSHOTS 99999
53 #define MAX_IMAGES 999999
54 #define MAX_RECOGNIZED_ITEMS 999999
55 #define NUMBER_OF_CONTROL_PIXELS 5
56
57 /* about */
58 #define POPRECOG_URL "http://www.princed.com.ar"
59 #define POPRECOG_ABOUT "\
60 Prince of Persia Screenshots Recognizer\n\
61 (c) Copyright 2005 Princed Development Team\n\
62 Programmed by peter_k\n" POPRECOG_URL "\n\n"
63
64 /* steps */
65 #define POPRECOG_STEP1 "\
66 Step 1. Type dir where screenshots are stored.\nThis should be 320x200 bmp files with 256 colour palette.\n"
67
68 #define POPRECOG_STEP2 "\n\
69 Step 2. Type dirs where are stored bitmaps to recognize.\n\
70 Please type in this format: [dirname] [max images on screenshot][ENTER].\n\
71 When you'll finish type END[ENTER].\n"
72
73 #define POPRECOG_STEP3 "\n\
74 Step 3. Type number of maximum layers\n\
75 HINT:\n\
76 If you'll type 0, poprecog will automatically detect the number of layers,\n\
77 but it is not recommended for tiles, walls, cinematic etc.\n"
78
79 #define POPRECOG_STEP4 "\n\
80 Step 4. Type the number of bitmap debug method\n\
81  0 - don't create bitmap debug files\n\
82  1 - colour recognized things (expext not important) + additional info\n\
83  2 - show recognized things (expect not important) + additional info\n\
84  4 - pink EVERY recognized thing (320x200)\n\
85  8 - only show recognized (expect not important; 320x200)\n\
86 15 - create every bitmap file from top list\n"
87
88 #define POPRECOG_STEP5 "\n\
89 Step 5. Type output dir, in which you'll see recognized things\n"
90
91 /* other texts */
92 #define POPRECOG_RECOGNIZING         "\nRecognizing %s (shot %d of %d)\n"
93 #define POPRECOG_RECOGNIZING2        "Recognizing %s\n"
94 #define POPRECOG_CHECKING_LAYER      "Checking layer nr. %d"
95 #define POPRECOG_DONE                "Done"
96 #define POPRECOG_FOUND               "Found %s d %c l %d x %d y %d w %d h %d fpx %d fpy %d\n"
97 #define POPRECOG_SUMMARY             "%d recognized images in about %d seconds\n"
98 #define POPRECOG_ERROR_CANNOT_OPEN   "ERROR: Cannot open %s\nProgram terminated\n"
99 #define POPRECOG_LOADING             "Loading bitmaps from dir %s\n"
100 #define POPRECOG_END_SUMMARY         "\nRecognized %d frames in about %ld seconds\n"    
101 #define POPRECOG_RELEASING_MEMORY    "Releasing memory\n"
102 #define POPRECOG_TYPE_STH            "Type something and press ENTER key...\n"
103 #define POPRECOG_DEBUG_HEADER        "%s (%d/%d)"
104 #define POPRECOG_DEBUG_RECOGNIZED_NR "Recognized number: %d"
105 #define POPRECOG_DEBUG_FIRST         "P(%d;%d) D%c L%d"
106 #define POPRECOG_DEBUG_SECOND        "D(%d;%d) Per:%d%%"
107
108 /* debug methods */
109 #define colour_flag 0x0001
110 #define show_flag   0x0002
111 #define trans_flag  0x0004
112 #define movie_flag  0x0008
113 #define hasFlag(a) (optDebugMethod&(a))
114 #define setFlag(a) optDebugMethod|=(a)
115
116 /* for match function */
117 #define equalsIgnoreCase(a,b) (((a)==(b))||((('A'<=((a)&0xdf)&&((a)&0xdf)<='Z'))&& !((a)^(b))&0xdf))