Devilution
Diablo devolved - magic behind the 1996 computer game
help.cpp
Go to the documentation of this file.
1 
6 #include "all.h"
7 
9 
12 BOOL helpflag;
13 int displayinghelp[22]; /* check, does nothing? */
14 int HelpTop;
15 
16 const char gszHelpText[] = {
17 #ifdef SPAWN
18  "Shareware Diablo Help|"
19  "|"
20  "$Keyboard Shortcuts:|"
21  "Diablo can be played exclusively by using the mouse controls. "
22  "There are times, however, when you may want to use shortcuts to some "
23  "commands by using the keyboard. These shortcuts are listed below:|"
24  "|"
25  "F1: Open the Help Screen|"
26  "Esc: Displays the main menu|"
27  "Tab: Displays the Auto-map|"
28  "Space: Removes any pop-up menus or maps from the play area|"
29  "S: Open Speedbook|"
30  "B: Open Spellbook|"
31  "I: Opens the Inventory screen|"
32  "C: Opens the Character screen|"
33  "Z: Zooms the game screen in and out|"
34  "F: Reduces the brightness of the screen|"
35  "G: Increases the brightness of the screen|"
36  "Q: Opens the Quest log (non-functional in the Shareware version)|"
37  "1 - 8: Use that item from your Belt|"
38  "F5, F6, F7, F8: Sets a hot key for a selected skill or spell|"
39  "Shift + Left Click: Use any weapon without moving|"
40  "|"
41  "|"
42  "$Movement:|"
43  "Movement is controlled by the mouse. The gauntlet on the screen is "
44  "your cursor. Use this to indicate the destination of your character "
45  "and then left-click to move to that area. "
46  "If you hold the mouse button down while moving, the character "
47  "will continue to move in that direction.|"
48  "|"
49  "$Selecting Items:|"
50  "What you can interact with within the game is easily identifiable. "
51  "Move the cursor over any object or creature. If the object can be "
52  "picked up, attacked, activated or used in any way, it will be "
53  "immediately outlined. A description of the highlighted object appears "
54  "in the text area on the control panel.|"
55  "|"
56  "Example: If you select a door and then left-click the character will "
57  "walk to the door and open it. If you left-click on a highlighted "
58  "weapon, the character will walk over to it and put it in his "
59  "inventory. If you left-click on a highlighted creature...|"
60  "|"
61  "$Combat:|"
62  "Combat is initiated by left-clicking on a creature that has been "
63  "highlighted. If your character is equipped with a melee weapon "
64  "(Sword, Mace, Ax, etc.) your character will move to range and attack. "
65  "If your character is equipped with a bow, left-clicking will fire an "
66  "arrow at the highlighted creature. "
67  "Holding down the shift key and then left-clicking allows the "
68  "character to attack without moving.|"
69  "|"
70  "$Picking up Objects:|"
71  "If you left-click on an item - such as a weapon, shield, armor or "
72  "book - your character will move to that item and add it to his "
73  "inventory automatically.|"
74  "|"
75  "Useable items that are small in size - such as a potion or "
76  "scroll - are automatically placed in your 'belt', located at the "
77  "top of the Interface bar . When an item is placed in the belt, "
78  "a small number appears in that box. Items may be used by either "
79  "right-clicking on the item or pressing the corresponding number on "
80  "the keyboard.|"
81  "|"
82  "If you do not have enough room in your inventory or belt for an item "
83  "that you try to pick up, it will fall from your grasp. Open your "
84  "inventory screen and try re-arranging or removing items to carry "
85  "what you really want or need.|"
86  "|"
87  "$Inventory:|"
88  "You can toggle the Inventory screen on and off by clicking the "
89  "INV> button on the control panel. Items may be moved around in "
90  "your inventory by selecting them and then left-clicking to pick "
91  "them up. When you pick up an item while in the inventory screen, "
92  "your cursor changes into the item. You can then place this item into "
93  "empty spaces in your inventory, swap them with other items in your "
94  "inventory or equip them.|"
95  "|"
96  "If you have an item that you no longer wish to carry, simply "
97  "grab the item from your inventory and then left-click in the "
98  "play area to drop it.|"
99  "|"
100  "$Equipping Items:|"
101  "To equip an item, open the inventory screen and pick up the desired "
102  "item, either from play or from your inventory, placing it in the "
103  "appropriate box on the figure in the inventory screen. Weapons and "
104  "shields go into the large spaces to the right or left of the figure. "
105  "Two-handed weapons such as bows and axes preclude the use of a "
106  "shield and will take up both of these large spaces.|"
107  "|"
108  "Cloaks, robes, capes and all other armor must go in the central "
109  "torso slot of the figure. |"
110  "|"
111  "Helmets and caps go in the box over the head of the character.|"
112  "|"
113  "Rings go into the small boxes at the hands of the figure.|"
114  "|"
115  "Amulets go into the small box at the next to the neck of the figure.|"
116  "|"
117  "To change items that your character has equipped, pick up a new "
118  "item and place it on top of the item you wish to remove. Your "
119  "character will automatically swap the items and the cursor will "
120  "now change into the item that was in that box.|"
121  "|"
122  "$Usable Items:|"
123  "Potions, elixirs and books are classified as usable items. These "
124  "items can be used by right-clicking on them in the inventory screen. "
125  "Books are too large to be placed in the belt, but any potions or "
126  "scrolls that are put there can also be used by pressing the "
127  "corresponding number on the keyboard.|"
128  "|"
129  "$Gold:|"
130  "You can select a specific amount of gold to drop by right "
131  "clicking on a pile of gold in your inventory. "
132  "A dialog will appear that allows you to select a specific amount of "
133  "gold to take. When you have entered that number, your cursor will "
134  "change into that amount of gold.|"
135  "|"
136  "$Item Information:|"
137  "Many items in Diablo share certain common attributes. These are "
138  "damage, durability, charges and minimum requirements..|"
139  "|"
140  "Damage: This is represented by a range that indicates the minimum "
141  "and maximum damage that item can inflict. A short sword has a (2-6) "
142  "after its name, meaning it inflicts a minimum of two damage and a "
143  "maximum of six when it hits. Damage can be modified by the quality "
144  "of the weapon, the character's strength and magical effects.|"
145  "|"
146  "Durability: This is the amount of damage that an item can take "
147  "before it is rendered useless. Durability is represented by a "
148  "ratio of current durability to maximum durability. A shield that "
149  "has a durability of 15/20 would still have 15 points of damage it "
150  "could take from use before it was rendered useless. Maximum "
151  "durability can be affected by the quality of the item, enchantments "
152  "or repairs made upon the item. The minimum durability can be raised "
153  "by repairing an item.|"
154  "|"
155  "Charges: Some items have charges associated with them. Charges "
156  "indicate how many times that item can be used to cast the spell or "
157  "affect indicated in its description. Charges are represented by "
158  "a ratio of charges left to maximum charges. A staff that has charges "
159  "listed as 2/5 could be used to cast 2 more spells before it was "
160  "rendered powerless. It could still be used to attack with as a "
161  "physical weapon, however. Maximum charges can be affected by the "
162  "magic or recharges cast upon the item. Minimum charges can be "
163  "raised by recharging the item.|"
164  "|"
165  "Minimum Requirements: These are the minimum requirements that a "
166  "character must meet to wield the item. The more powerful an item is, "
167  "the higher the minimum requirements will be. If a character "
168  "does not meet these requirements, he will be unable to equip the "
169  "item and its name and information will be displayed in red. "
170  "The item artwork will also have a red tint in the Inventory screen.|"
171  "|"
172  "$Items Classes:|"
173  "There are three classes of items in Diablo - Mundane, "
174  "Magic and Unique:|"
175  "|"
176  "Mundane items have no special attributes. Their information is "
177  "displayed in white text.|"
178  "|"
179  "Magic Items are represented by blue names and text descriptions. "
180  "Use the Identify spell or speak to Cain in town to determine their "
181  "exact properties and attributes.|"
182  "|"
183  "Unique items are represented by gold names and text descriptions. "
184  "Use the Identify spell or speak to Cain in town to determine their "
185  "exact properties and attributes.|"
186  "|"
187  "$Skills & Spells:|"
188  "You can access your list of skills and spells by left-clicking on "
189  "the SPELLS button in the interface bar. This 'Spellbook' contains all "
190  "of the skills and spells that your character knows. Spells "
191  "available through staffs are also listed here. Left-clicking on "
192  "the Icon of the spell you wish to ready will place it in the "
193  "'select current spell' icon/area and set it as the current "
194  "readied spell. A readied spell "
195  "may be cast by simply right-clicking in the play area.|"
196  "|"
197  "Left-clicking on the 'select current spell' button will also "
198  "open a 'Speedbook' menu that also allows you to ready a skill "
199  "or spell for use. To use a readied skill or spell, simply "
200  "right-click in the main play area.|"
201  "|"
202  "Skills are the innate abilities of your character. These skills "
203  "are different depending on what class you choose and require no "
204  "mana to use.|"
205  "|"
206  "Warrior:|"
207  "The Warrior has the skill of Repair Items. This allows him to fix "
208  "an item that has been worn by use or is damaged in combat. "
209  "To accomplish this, select the Repair Skill through the "
210  "Spellbook or Speedbook and right-click the mouse as if you were "
211  "casting a spell. Your cursor will change into a Hammer Icon "
212  "that you will use to select the item to be repaired. "
213  "Although Repairing an item in this way will decrease the "
214  "maximum durability of that item, it can be done without leaving "
215  "the labyrinth.|"
216  "|"
217  "The Blacksmith can also repair items for a price. When the "
218  "Blacksmith performs this service, it does decrease the maximum "
219  "durability of the item.|"
220  "|"
221  "Rogue:|"
222  "The Rogue has the skill of Disarm Traps. This allows her to not only "
223  "remove traps, but also acts as a 'sixth sense' that warns her of "
224  "where these trapped items are located. To accomplish this, select "
225  "the Disarm Trap skill through the Spellbook or Speedbook and "
226  "right-click the mouse as if you were casting a spell. "
227  "Your cursor will change into a Targeting Cursor that you will "
228  "use to select the item to be disarmed. The success of this "
229  "attempt is based on the level of the Rogue and the expertise of "
230  "whomever set the trap.|"
231  "|"
232  "Sorcerer:|"
233  "The Sorcerer has the skill of Recharge Staffs. This allows him to "
234  "focus his mana into an staff that has been drained of its magical "
235  "energies. To accomplish this, select the Recharge Staffs skill "
236  "through the Spellbook or Speedbook and right-click the mouse as "
237  "if you were casting a spell. Your cursor will change into a "
238  "Staff Icon that you will use to select the item to be recharged. "
239  "Although Recharging a staff in this way will decrease its maximum "
240  "charges, it can be done without leaving the labyrinth.|"
241  "|"
242  "The Witch can also recharge staffs for a price. When the Witch "
243  "performs this service, it does decrease the maximum charges of the "
244  "item.|"
245  "|"
246  "Spells are magical effects that can be cast from a scroll, "
247  "a staff or memorized from a book. Spells may or may not require "
248  "mana to use and are available to all classes.|"
249  "|"
250  "Spells cast from a scroll cost no mana to use, but are limited "
251  "to only one charge. Casting a spell from a scroll is accomplished "
252  "by either right clicking on the scroll or, if it is located in "
253  "our belt, pressing the corresponding number on the keyboard. "
254  "Scrolls can also be readied in the Speedbook and are represented "
255  "by a red icon/button in the 'select current spell' area.|"
256  "|"
257  "Spells cast from staffs cost no mana to use, but are limited by "
258  "the number of charges available. To cast spells from a staff, "
259  "it must first be equipped. The 'select current spell' icon/button "
260  "will change to indicate that the spell on the staff is currently "
261  "ready to cast. Scrolls can also be readied in the Spellbook or "
262  "Speedbook and are represented by an orange icon/button in the "
263  "'select current spell' area.|"
264  "|"
265  "Spells that are memorized cost mana to cast, but they can be used "
266  "as long as the character has mana to power them. The Warrior "
267  "and Rogue start the game with no memorized spells while "
268  "the sorcerer begins with Firebolt. If the character finds a book "
269  "in the labyrinth, he can memorize the spell written in that book "
270  "by opening the Inventory screen and right-clicking on the book. "
271  "This will make that spell always available to the character for "
272  "casting. Memorized spells can be readied through either the "
273  "Spellbook or Speedbook and are represented by a blue icon/button "
274  "in the 'select current spell' area.|"
275  "|"
276  "$Important note on books:|"
277  "Reading more than one book increases your knowledge of that spell "
278  "and gives you the spell at a higher level. The higher the level "
279  "of a spell the more effective it is.|"
280  "|"
281  "While some spells affect the caster, other spells require a target. "
282  "These targeted spells are cast in the direction that you indicate "
283  "with your cursor on the play area. If you highlight a creature, "
284  "you will cast that spell at that creature. Not all items within "
285  "the labyrinth can be targeted.|"
286  "|"
287  "Example: A fireball spell will travel at the creature or to the "
288  "location you right-click on. A Healing spell will simply add "
289  "health to your character while diminishing his available mana "
290  "and requires no targeting.|"
291  "|"
292  "You can also set a spell or scroll as a Hot Key position for "
293  "instant selection. Start by opening the pop-up menu as described "
294  "in the skill section above. Assign Hot Keys by hitting the "
295  "F5, F6, F7 or F8 keys on your keyboard after scrolling through "
296  "the available spells and highlighting the one you wish to assign. |"
297  "|"
298  "$Health and Mana:|"
299  "The two orbs in the Information Bar display your life and mana. "
300  "The red sphere of fluid on the left side of the control panel "
301  "represents the overall health of your character. When the fluid "
302  "is gone - your character is dead.|"
303  "|"
304  "The blue fluid on the right side of the control panel represents "
305  "your character's available mana. Mana is the magical force used by "
306  "your character to cast spells. When the liquid in the sphere is "
307  "low or depleted, you may be unable to cast some (or all) of your "
308  "spells.|"
309  "|"
310  "$Information Bar:|"
311  "The Information Bar is where you receive detailed information in "
312  "Diablo and interact with much of your surroundings. Here is a "
313  "quick run-down of the control panel areas and their use:|"
314  "|"
315  "CHAR: This button is used to access your Character Statistics screen|"
316  "INV: This button is used to access your Inventory screen|"
317  "Quest: This button displays your Quest Log (inactive in "
318  "Shareware version)|"
319  "Automap: This button activates the mapping overlay|"
320  "Menu: This button activates the game menu screen|"
321  "Spells: This button is used to access your Spellbook|"
322  "Current Spell: This is the spell that has been readied for "
323  "immediate casting|"
324  "Life Orb: This is the amount of health your character currently has|"
325  "Mana Orb: This is the amount of mana your character currently has|"
326  "Multiplayer Message: This activates the Message Area|"
327  "Description Area: This is where any important information about "
328  "creatures or items you can interact with is displayed. "
329  "This is also where you will enter the text you wish to send when "
330  "sending multiplayer messages.|"
331  "|"
332  "$Character Info:|"
333  "Toggle the Character Statistics Screen on and off by clicking the "
334  "<CHAR button on the Information Bar. This screen shows the "
335  "'nuts and bolts' of your character. There are four major attributes "
336  "that dictate how your character progresses in the game.|"
337  "|"
338  "STRENGTH: This is how physically powerful your character is. This "
339  "statistic plays a large part in determining how much damage you "
340  "can do when attacking creatures.|"
341  "|"
342  "MAGIC: This is how attuned your character is with the arcane powers "
343  "of the world. This statistic plays a large part in determining how "
344  "much mana you have available for casting spells.|"
345  "|"
346  "DEXTERITY: This is how quick of foot and hand your character is. "
347  "This statistic plays a large part in determining the chance you "
348  "have to hit creatures in combat.|"
349  "|"
350  "VITALITY: This is how physically fit your character is. This "
351  "statistic plays a large part in determining how much health your "
352  "character has when he is undamaged.|"
353  "|"
354  "$In Game Menu:|"
355  "To activate the Game Menu, click the MENU button on the Information "
356  "Bar. You have three options in this menu:|"
357  "|"
358  "New Game: This exits you from your current game and returns you to "
359  "the Main Menu.|"
360  "|"
361  "Options: This opens the options menu that allows you to "
362  "adjust your music and sound effects settings as well as "
363  "the gamma level of the screen.|"
364  "|"
365  "Quit Diablo: This exits the program. Please note that this "
366  "automatically saves your character.|"
367  "|"
368  "$Auto-map:|"
369  "Your character automatically maps where he has been in the "
370  "labyrinth. To access the auto-map, click the MAP button on the "
371  "Information Bar. You can also press TAB on your keyboard to activate "
372  "the auto-map. Zooming in and out of the map is done with the + and - "
373  "keys while scrolling the map uses the arrow keys.|"
374  "&"
375 #else
376  "$Keyboard Shortcuts:|"
377  "F1: Open Help Screen|"
378  "Esc: Display Main Menu|"
379  "Tab: Display Auto-map|"
380  "Space: Hide all info screens|"
381  "S: Open Speedbook|"
382  "B: Open Spellbook|"
383  "I: Open Inventory screen|"
384  "C: Open Character screen|"
385  "Q: Open Quest log|"
386  "F: Reduce screen brightness|"
387  "G: Increase screen brightness|"
388  "Z: Zoom Game Screen|"
389  "+ / -: Zoom Automap|"
390  "1 - 8: Use Belt item|"
391  "F5, F6, F7, F8: Set hot key for skill or spell|"
392  "Shift + Left Click: Attack without moving|"
393  "|"
394  "$Movement:|"
395  "If you hold the mouse button down while moving, the character "
396  "will continue to move in that direction.|"
397  "|"
398  "$Combat:|"
399  "Holding down the shift key and then left-clicking allows the "
400  "character to attack without moving.|"
401  "|"
402  "$Auto-map:|"
403  "To access the auto-map, click the 'MAP' button on the "
404  "Information Bar or press 'TAB' on the keyboard. Zooming in and "
405  "out of the map is done with the + and - keys. Scrolling the map "
406  "uses the arrow keys.|"
407  "|"
408  "$Picking up Objects:|"
409  "Useable items that are small in size, such as potions or scrolls, "
410  "are automatically placed in your 'belt' located at the top of "
411  "the Interface bar . When an item is placed in the belt, a small "
412  "number appears in that box. Items may be used by either pressing "
413  "the corresponding number or right-clicking on the item.|"
414  "|"
415  "$Gold|"
416  "You can select a specific amount of gold to drop by right "
417  "clicking on a pile of gold in your inventory.|"
418  "|"
419  "$Skills & Spells:|"
420  "You can access your list of skills and spells by left-clicking on "
421  "the 'SPELLS' button in the interface bar. Memorized spells and "
422  "those available through staffs are listed here. Left-clicking on "
423  "the spell you wish to cast will ready the spell. A readied spell "
424  "may be cast by simply right-clicking in the play area.|"
425  "|"
426  "$Using the Speedbook for Spells|"
427  "Left-clicking on the 'readied spell' button will open the 'Speedbook' "
428  "which allows you to select a skill or spell for immediate use. "
429  "To use a readied skill or spell, simply right-click in the main play "
430  "area.|"
431  "|"
432  "$Setting Spell Hotkeys|"
433  "You can assign up to four Hot Keys for skills, spells or scrolls. "
434  "Start by opening the 'speedbook' as described in the section above. "
435  "Press the F5, F6, F7 or F8 keys after highlighting the spell you "
436  "wish to assign.|"
437  "|"
438  "$Spell Books|"
439  "Reading more than one book increases your knowledge of that "
440  "spell, allowing you to cast the spell more effectively.|"
441  "&"
442 #endif
443 };
444 
445 void InitHelp()
446 {
447  helpflag = FALSE;
448  dword_634494 = 0;
449  displayinghelp[0] = 0;
450 }
451 
452 void DrawHelp()
453 {
454  int i, c, w;
455  char col;
456  const char *s;
457 
458  DrawSTextHelp();
459  DrawQTextBack();
460  PrintSString(0, 2, TRUE, "Diablo Help", COL_GOLD, 0);
461  DrawSLine(5);
462 
463  s = gszHelpText;
464 
465  for (i = 0; i < help_select_line; i++) {
466  c = 0;
467  w = 0;
468  while (*s == '\0') {
469  s++;
470  }
471  if (*s == '$') {
472  s++;
473  }
474  if (*s == '&') {
475  continue;
476  }
477  while (*s != '|' && w < 577) {
478  while (*s == '\0') {
479  s++;
480  }
481  tempstr[c] = *s;
482  w += fontkern[fontframe[gbFontTransTbl[(BYTE)tempstr[c]]]] + 1;
483  c++;
484  s++;
485  }
486  if (w >= 577) {
487  c--;
488  while (tempstr[c] != ' ') {
489  s--;
490  c--;
491  }
492  }
493  if (*s == '|') {
494  s++;
495  }
496  }
497  for (i = 7; i < 22; i++) {
498  c = 0;
499  w = 0;
500  while (*s == '\0') {
501  s++;
502  }
503  if (*s == '$') {
504  s++;
505  col = COL_RED;
506  } else {
507  col = COL_WHITE;
508  }
509  if (*s == '&') {
511  continue;
512  }
513  while (*s != '|' && w < 577) {
514  while (*s == '\0') {
515  s++;
516  }
517  tempstr[c] = *s;
518  w += fontkern[fontframe[gbFontTransTbl[(BYTE)tempstr[c]]]] + 1;
519  c++;
520  s++;
521  }
522  if (w >= 577) {
523  c--;
524  while (tempstr[c] != ' ') {
525  s--;
526  c--;
527  }
528  }
529  if (c != 0) {
530  tempstr[c] = '\0';
531  DrawHelpLine(0, i, tempstr, col);
532  }
533  if (*s == '|') {
534  s++;
535  }
536  }
537 
538  PrintSString(0, 23, TRUE, "Press ESC to end or the arrow keys to scroll.", COL_GOLD, 0);
539 }
540 
541 void DrawHelpLine(int always_0, int help_line_nr, char *text, char color)
542 {
543  int sx, sy, width;
544  BYTE c;
545 
546  width = 0;
547  sx = always_0 + 96 + PANEL_LEFT;
548  sy = help_line_nr * 12 + 204;
549  while (*text) {
550  c = gbFontTransTbl[(BYTE)*text];
551  text++;
552  c = fontframe[c];
553  width += fontkern[c] + 1;
554  if (c) {
555  if (width <= 577)
556  PrintChar(sx, sy, c, color);
557  }
558  sx += fontkern[c] + 1;
559  }
560 }
561 
563 {
564  help_select_line = 0;
565  helpflag = TRUE;
566  HelpTop = 5000;
567 }
568 
570 {
571  if (help_select_line > 0)
573 }
574 
576 {
579 }
580 
PrintSString
void PrintSString(int x, int y, BOOL cjustflag, char *str, char col, int val)
Definition: stores.cpp:125
displayinghelp
int displayinghelp[22]
Definition: help.cpp:13
DisplayHelp
void DisplayHelp()
Definition: help.cpp:562
COL_WHITE
@ COL_WHITE
Definition: enums.h:1993
COL_GOLD
@ COL_GOLD
Definition: enums.h:1996
all.h
dword_634494
int dword_634494
Definition: help.cpp:11
HelpScrollUp
void HelpScrollUp()
Definition: help.cpp:569
DrawSLine
void DrawSLine(int y)
Definition: stores.cpp:180
DEVILUTION_END_NAMESPACE
#define DEVILUTION_END_NAMESPACE
Definition: types.h:10
InitHelp
void InitHelp()
Definition: help.cpp:445
DrawQTextBack
void DrawQTextBack()
Definition: minitext.cpp:87
gszHelpText
const char gszHelpText[]
Definition: help.cpp:16
help_select_line
DEVILUTION_BEGIN_NAMESPACE int help_select_line
Definition: help.cpp:10
COL_RED
@ COL_RED
Definition: enums.h:1995
HelpTop
int HelpTop
Definition: help.cpp:14
DrawSTextHelp
void DrawSTextHelp()
Definition: stores.cpp:238
fontkern
const BYTE fontkern[68]
Maps from smaltext.cel frame number to character width.
Definition: control.cpp:81
HelpScrollDown
void HelpScrollDown()
Definition: help.cpp:575
DrawHelpLine
void DrawHelpLine(int always_0, int help_line_nr, char *text, char color)
Definition: help.cpp:541
tempstr
char tempstr[256]
Definition: control.cpp:41
helpflag
BOOL helpflag
Definition: help.cpp:12
DrawHelp
void DrawHelp()
Definition: help.cpp:452
DEVILUTION_BEGIN_NAMESPACE
Definition: sha.cpp:10
PANEL_LEFT
#define PANEL_LEFT
Definition: defs.h:135
PrintChar
void PrintChar(int sx, int sy, int nCel, char col)
Print letter to the back buffer.
Definition: control.cpp:504
fontframe
const BYTE fontframe[128]
Maps from font index to smaltext.cel frame number.
Definition: control.cpp:65
gbFontTransTbl
const BYTE gbFontTransTbl[256]
Maps ASCII character code to font index, as used by the small, medium and large sized fonts; which co...
Definition: control.cpp:106