ScummVM API documentation
eden.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef CRYO_EDEN_H
23 #define CRYO_EDEN_H
24 
25 #include "common/file.h"
26 #include "common/savefile.h"
27 #include "common/serializer.h"
28 
29 #include "cryo/sound.h"
30 #include "cryo/defs.h"
31 
32 enum Direction {
33  kCryoNorth = 0,
34  kCryoEast = 1,
35  kCryoSouth = 2,
36  kCryoWest = 3
37 };
38 
39 namespace Cryo {
40 
41 class CryoEngine;
42 class EdenGraphics;
43 
44 class EdenGame {
45 private:
46 
47  EdenGraphics *_graphics;
48 
49 public:
50  EdenGame(CryoEngine *vm);
51  ~EdenGame();
52 
53  void run();
54  object_t *getObjectPtr(int16 id);
55  void showObjects();
56  void saveFriezes();
57  void useBank(int16 bank);
58  void musicspy();
59  void fademusica0(int16 delay);
60  void wait(int howlong);
61  bool isObjectHere(int16 id);
62  void display();
63 
64  void setMouseCenterX(uint16 xpos);
65  void setMouseCenterY(uint16 ypos);
66 
67  void stopMusic();
68 
69  uint16 getMouseCenterX();
70  uint16 getMouseCenterY();
71 
72  bool dialoscansvmas(Dialog *dial);
73  void musique();
74  void preloadDialogs(int16 vid);
75  Common::SeekableReadStream *loadSubStream(uint16 num);
76  bool personIsTalking();
77  bool animationIsActive();
78  byte *getImageDesc();
79  byte *getPlaceRawBuf();
80  byte getActionCursor(byte value);
81  int16 getNumTextLines();
82  int16 getScrollPos();
83  /*
84  * Identify person based on current video number
85  */
86  perso_t *personSubtitles();
87 
88  int16 getGameIconY(int16 index);
89  int16 getGameIconX(int16 index);
90 
91  byte *getGameDialogs();
92 
93  bool getSpecialTextMode();
94  void setSpecialTextMode(bool value);
95 
96  void setCursorSaved(bool cursorSaved);
97  bool getCursorSaved();
98  bool getNoPalette();
99  int16 getCurBankNum();
100  byte *getCurKeepBuf();
101  byte *getBankData();
102  int16 getCurPosX();
103  void setCurPosX(int16 xpos);
104  int16 getCurPosY();
105  void setCurPosY(int16 ypos);
106  byte *getGlowBuffer();
107  void setMusicFade(byte value);
108  bool isMouseHeld();
109  void setMouseHeld();
110  void setMouseNotHeld();
111 
112  global_t *_globals; // TODO: Make private and use getters
113  CryoEngine *_vm;
114 
115 private:
116  void removeConsole();
117  void scroll();
118  void resetScroll();
119  void scrollFrescoes();
120  void displayFrescoes();
121  void gametofresques();
122  void doFrescoes();
123  void actionEndFrescoes();
124  void scrollMirror();
125  void scrollPanel();
126  void displayFollower(Follower *follower, int16 x, int16 y);
127  void characterInMirror();
128  void gameToMirror(byte arg1);
129  void flipMode();
130  void quitMirror();
131  void clictimbre();
132  void actionClickValleyPlan();
133  void gotoPlace(Goto *go);
134  void deplaval(uint16 roomNum);
135  void move(Direction dir);
136  void move2(Direction dir);
137  void actionDinoBlow();
138  void actionPlateMonk();
139  void actionGraaFrescoe();
140  void actionLascFrescoe();
141  void actionPushStone();
142  void actionMummyHead();
143  void actionSkelettonHead();
144  void actionSkelettonMoorkong();
145  void actionChoose();
146  void handleDinaDialog();
147  void handleKingDialog();
148  void actionKingDialog1();
149  void actionKingDialog2();
150  void actionKingDialog3();
151  void actionGetKnife();
152  void actionGetPrism();
153  void actionGetMushroom();
154  void actionGetBadMushroom();
155  void actionGetGold();
156  void actionGetFullNest();
157  void actionGetEmptyNest();
158  void actionGetHorn();
159  void actionGetSunStone();
160  void actionGetEgg();
161  void actionGetTablet();
162  void actionLookLake();
163  void actionGotoHall();
164  void actionLabyrinthTurnAround();
165  void actionGotoFullNest();
166  void actionGotoVal();
167  void actionVisit();
168  void actionFinal();
169  void actionMoveNorth();
170  void actionMoveEast();
171  void actionMoveSouth();
172  void actionMoveWest();
173 
174  void afficher128();
175 
176 
177  void restoreFriezes();
178 
179  void useMainBank();
180  void useCharacterBank();
181 
182  void drawTopScreen();
183  void displayValleyMap();
184  void displayMapMark(int16 index, int16 location);
185  void displayAdamMapMark(int16 location);
186  void restoreAdamMapMark();
187  void saveAdamMapMark(int16 x, int16 y);
188  bool istrice(int16 roomNum);
189  bool istyran(int16 roomNum);
190  void istyranval(Area *area);
191  char getDirection(perso_t *perso);
192  bool canMoveThere(char loc, perso_t *perso);
193  void scramble1(uint8 elem[4]);
194  void scramble2(uint8 elem[4]);
195  void scrambleDirections();
196  bool naitredino(char persoType);
197  void newCitadel(char area, int16 level, Room *room);
198  void evolveCitadel(int16 level);
199  void destroyCitadelRoom(int16 roomNum);
200  void narratorBuildCitadel();
201  void citadelFalls(char level);
202  void buildCitadel();
203  void moveDino(perso_t *perso);
204  void moveAllDino();
205  void newValley();
206  char whereIsCita();
207  bool isCita(int16 loc);
208  void placeVava(Area *area);
209  void vivredino();
210  void vivreval(int16 areaNum);
211  void handleDay();
212  void addTime(int16 t);
213  void animCharacter();
214  void getanimrnd();
215  void addanim();
216  void removeMouthSprite();
217  void AnimEndCharacter();
218  void setCharacterSprite(byte *spr);
219  void displayCharacter1();
220  void displayCharacter();
221  void ef_perso();
222  void loadCharacter(perso_t *perso);
223  void loadCurrCharacter();
224  void fin_perso();
225  void no_perso();
226  void closeCharacterScreen();
227  void displayBackgroundFollower();
228  void displayNoFollower(int16 bank);
229  void displayCharacterBackground1();
230  void displayCharacterBackground();
231  void setCharacterIcon();
232  void showCharacter();
233  void displayCharacterPanel();
234  void getDataSync();
235  int16 readFrameNumber();
236  void waitEndSpeak();
237  void my_bulle();
238  void my_pr_bulle();
239  void drawSubtitleChar(byte c, byte color, int16 width);
240 
241  void patchSentence();
242  void vavapers();
243  void citadelle();
244  void selectZone();
245  void showEvents1();
246  void showEvents();
247  void parle_mfin();
248  void parlemoi_normal();
249  void parle_moi();
250  void initCharacterPointers(perso_t *perso);
251  void perso1(perso_t *perso);
252  void perso_normal(perso_t *perso);
253  void handleCharacterDialog(int16 pers);
254  void actionKing();
255  void actionDina();
256  void actionThoo();
257  void actionMonk();
258  void actionTormentor();
259  void actionMessenger();
260  void actionMango();
261  void actionEve();
262  void actionAzia();
263  void actionMammi();
264  void actionGuards();
265  void actionBamboo();
266  void actionKabuka();
267  void actionFisher();
268  void actionDino();
269  void actionTyran();
270  void actionMorkus();
271  void comment();
272  void actionAdam();
273  void setChoiceYes();
274  void setChoiceNo();
275  bool isAnswerYes();
276  void specialMushroom(perso_t *perso);
277  void specialEmptyNest(perso_t *perso);
278  void specialNestWithEggs(perso_t *perso);
279  void specialApple(perso_t *perso);
280  void specialGold(perso_t *perso);
281  void specialPrism(perso_t *perso);
282  void specialTalisman(perso_t *perso);
283  void specialMask(perso_t *perso);
284  void specialBag(perso_t *perso);
285  void specialTrumpet(perso_t *perso);
286  void specialWeapons(perso_t *perso);
287  void specialInstrument(perso_t *perso);
288  void specialEgg(perso_t *perso);
289  void tyranDies(perso_t *perso);
290  void specialObjects(perso_t *perso, char objid);
291  void dialautoon();
292  void dialautooff();
293  void follow();
294  void dialonfollow();
295  void abortDialogue();
296  void subHandleNarrator();
297  void handleNarrator();
298  void checkPhraseFile();
299  byte *getPhrase(int16 id);
300  void actionGotoMap();
301  void record();
302  bool dial_scan(Dialog *dial);
303 
304  bool dialogEvent(perso_t *perso);
305  void characterStayHere();
306  void endDeath(int16 vid);
307  void chronoEvent();
308  void setChrono(int16 t);
309 
310 
311  void verifh(byte *ptr);
312  void openbigfile();
313  void closebigfile();
314  void loadRawFile(uint16 num, byte *buffer);
315  void loadIconFile(uint16 num, Icon *buffer);
316  void loadRoomFile(uint16 num, Room *buffer);
317  int loadSound(uint16 num);
318  void convertMacToPC();
319  void loadpermfiles();
320  bool ReadDataSyncVOC(unsigned int num);
321  bool ReadDataSync(uint16 num);
322  void loadpartoffile(uint16 num, void *buffer, int32 pos, int32 len);
323  void expandHSQ(byte *input, byte *output);
324  void addInfo(byte info);
325  void unlockInfo();
326  void nextInfo();
327  void removeInfo(byte info);
328  void updateInfoList();
329  void initGlobals();
330 
331  void closeRoom();
332  void displayPlace();
333  void loadPlace(int16 num);
334  void specialoutside();
335  void specialout();
336  void specialin();
337  void animpiece();
338  void getdino(Room *room);
339  Room *getRoom(int16 loc);
340  void initPlace(int16 roomNum);
341  void maj2();
342  void updateRoom1(int16 roomNum);
343  void updateRoom(uint16 roomNum);
344  void allocateBuffers();
345  void freebuf();
346  void EmergencyExit();
347  void edmain();
348  void intro();
349  void enterGame();
350  void signon(const char *s);
351  void FRDevents();
352  Icon *scan_icon_list(int16 x, int16 y, int16 index);
353  void updateCursor();
354  void mouse();
355 
356  void startmusique(byte num);
357 
358  int loadmusicfile(int16 num);
359  void persovox();
360  void endCharacterSpeech();
361  void fademusicup();
362 
363  void countObjects();
364  void winObject(int16 id);
365  void loseObject(int16 id);
366  void lostObject();
367 
368  void objectmain(int16 id);
369  void getObject(int16 id);
370  void putObject();
371  void newObject(int16 id, int16 arg2);
372  void giveobjectal(int16 id);
373  void giveObject();
374  void actionTakeObject();
375  void newMushroom();
376  void newEmptyNest();
377  void newNestWithEggs();
378  void newGold();
379  void gotoPanel();
380  void noclicpanel();
381  void generique();
382  void cancel2();
383  void testvoice();
384  void load();
385  void initafterload();
386  void save();
387  void desktopcolors();
388  void panelrestart();
389  void reallyquit();
390  void confirmer(char mode, char yesId);
391  void confirmYes();
392  void confirmNo();
393  void restart();
394  void edenQuit();
395  void choseSubtitleOption();
396  void changeVolume();
397  void changervol();
398  void newvol(byte *volptr, int16 delta);
399  void playtape();
400  void rewindtape();
401  void moveTapeCursor();
402  void displayTapeCursor();
403  void forwardTape();
404  void stopTape();
405  void clickTapeCursor();
406  void displayPanel();
407  void displayLanguage();
408  void displayVolCursor(int16 x, int16 vol1, int16 vol2);
409  void displayCursors();
410  void selectCursor(int itemId);
411  void displayTopPanel();
412  void displayResult();
413  void restrictCursorArea(int16 xmin, int16 xmax, int16 ymin, int16 ymax);
414  void edenShudown();
415  void habitants(perso_t *perso);
416  void suiveurs(perso_t *perso);
417  void evenements(perso_t *perso);
418  void followme(perso_t *perso);
419  void rangermammi(perso_t *perso, Room *room);
420  void perso_ici(int16 action);
421  void setCharacterHere();
422  void faire_suivre(int16 roomNum);
423  void AddCharacterToParty();
424  void addToParty(int16 index);
425  void removeCharacterFromParty();
426  void removeFromParty(int16 index);
427  void handleEloiDeparture();
428  bool checkEloiReturn();
429  void handleEloiReturn();
430  void incPhase();
431  void phase113();
432  void phase130();
433  void phase161();
434  void phase226();
435  void phase257();
436  void phase353();
437  void phase369();
438  void phase371();
439  void phase385();
440  void phase418();
441  void phase433();
442  void phase434();
443  void phase513();
444  void phase514();
445  void phase529();
446  void phase545();
447  void phase561();
448  void bigphase1();
449  void bigphase();
450  void phase16();
451  void phase32();
452  void phase48();
453  void phase64();
454  void phase80();
455  void phase96();
456  void phase112();
457  void phase128();
458  void phase144();
459  void phase160();
460  void phase176();
461  void phase192();
462  void phase208();
463  void phase224();
464  void phase240();
465  void phase256();
466  void phase272();
467  void phase288();
468  void phase304();
469  void phase320();
470  void phase336();
471  void phase352();
472  void phase368();
473  void phase384();
474  void phase400();
475  void phase416();
476  void phase432();
477  void phase448();
478  void phase464();
479  void phase480();
480  void phase496();
481  void phase512();
482  void phase528();
483  void phase544();
484  void phase560();
485  void saveGame(char *name);
486  void loadrestart();
487  void loadgame(char *name);
488  void syncGame(Common::Serializer s);
489  void syncGlobalPointers(Common::Serializer s);
490  void syncGlobalValues(Common::Serializer s);
491  void syncCitadelRoomPointers(Common::Serializer s);
492  void syncTapePointers(Common::Serializer s);
493  char testCondition(int16 index);
494  uint16 operAdd(uint16 v1, uint16 v2);
495  uint16 operSub(uint16 v1, uint16 v2);
496  uint16 operLogicalAnd(uint16 v1, uint16 v2);
497  uint16 operLogicalOr(uint16 v1, uint16 v2);
498  uint16 operIsEqual(uint16 v1, uint16 v2);
499  uint16 operIsSmaller(uint16 v1, uint16 v2);
500  uint16 operIsGreater(uint16 v1, uint16 v2);
501  uint16 operIsDifferent(uint16 v1, uint16 v2);
502  uint16 operIsSmallerOrEqual(uint16 v1, uint16 v2);
503  uint16 operIsGreaterOrEqual(uint16 v1, uint16 v2);
504  uint16 operFalse(uint16 v1, uint16 v2);
505  uint16 operation(byte op, uint16 v1, uint16 v2);
506  uint16 fetchValue();
507  uint8 getByteVar(uint16 offset);
508  uint16 getWordVar(uint16 offset);
509  void actionNop();
510  void initSinCosTable();
511  void makeMatriceFix();
512  void projectionFix(Cube *cube, int n);
513  void initCubeMac();
514  void engineMac();
515  void displayObject(Cube *cube);
516  void loadMap(int file_id, byte *buffer);
517  void NEWcharge_objet_mob(Cube *cube, int fileNum, byte *texturePtr);
518  void DELETEcharge_objet_mob(Cube *cubep);
519  static int nextVal(char **ptr, char *error);
520  void selectMap(int16 num);
521  void Eden_dep_and_rot();
522  void restoreZDEP();
523  void displayPolygoneMapping(Cube *cube, CubeFace *face);
524  void drawMappingLine(int16 r3, int16 r4, int16 r5, int16 r6, int16 r7, int16 r8, int16 r9, int16 r10, int16 *lines);
525  void displayMappingLine(int16 r3, int16 r4, byte *target, byte *texture);
526  void LostEdenMac_InitPrefs();
527 
528  void initCubePC();
529  void enginePC();
530  void selectPCMap(int16 num);
531 
532  void makeTables();
533  void getSinCosTables(unsigned short angle, signed char **cos_table, signed char **sin_table);
534  void rotatePoint(XYZ *point, XYZ *rpoint);
535  void mapPoint(XYZ *point, short *x, short *y);
536  short calcFaceArea(XYZ *face);
537  void paintPixel(XYZ *point, unsigned char pixel);
538  void paintFace0(XYZ *point);
539  void paintFace1(XYZ *point);
540  void paintFace2(XYZ *point);
541  void paintFace3(XYZ *point);
542  void paintFace4(XYZ *point);
543  void paintFace5(XYZ *point);
544  void paintFaces();
545  void renderCube();
546 
547  void incAngleX(int step);
548  void decAngleX();
549  void incAngleY(int step);
550  void decAngleY();
551  void incZoom();
552  void decZoom();
553 
554  CubeCursor *_pcCursor;
555 
556  int16 tab1[30];
557  int16 tab2[30];
558  int8 tab3[36][71];
559  int16 _angleX, _angleY, _angleZ, _zoomZ, _zoomZStep;
560 
561  int8 *_cosX, *_sinX;
562  int8 *_cosY, *_sinY;
563  int8 *_cosZ, *_sinZ;
564 
565  uint8 *_face[6], *_newface[6];
566  int16 _faceSkip;
567 
568  uint8 _cursor[40 * 40];
569  uint8 *_cursorCenter;
570 
571  byte _ownObjects[128];
572 
573 private:
574  int16 _scrollPos;
575  int16 _oldScrollPos;
576  bool _frescoTalk;
577  byte _oldPix[8];
578  Common::Point _adamMapMarkPos;
579  byte _cursKeepBuf[2500];
580  bool _torchCursor;
581  int16 _curBankNum;
582  bool _paletteUpdateRequired;
583  bool _cursorSaved;
584  bool _backgroundSaved;
585  byte *_bankData;
586  perso_t *_tyranPtr;
587  int _lastAnimFrameNumb;
588  int _curAnimFrameNumb;
589  int _lastAnimTicks;
590  int16 _numAnimFrames;
591  int16 _maxPersoDesc;
592  int16 _numImgDesc;
593  bool _restartAnimation;
594  bool _animationActive;
595  byte _animationDelay;
596  byte _animationIndex;
597  byte _lastAnimationIndex;
598 
599  byte *dword_30724;
600  byte *dword_30728; //TODO: rename - something amim-related
601  byte *_mouthAnimations;
602  byte *_animationTable;
603  byte _imageDesc[512];
604  byte *_characterBankData;
605  int16 _numTextLines;
606  byte _sentenceBuffer[400];
607  byte phraseIconsBuffer[10];
608  byte _sentenceCoordsBuffer[22];
609  byte *_textOutPtr;
610  byte *textout;
611  object_t *_curSpecialObject;
612  bool _lastDialogChoice;
613  bool parlemoiNormalFlag;
614 
615  bool _closeCharacterDialog;
616  int dword_30B04;
617 
618  char _lastPhrasesFile;
619  byte _dialogSkipFlags;
620 
621  byte *_voiceSamplesBuffer; //TODO: sound sample buffer
622  Common::File _bigfile;
623  byte _infoList[16];
624  byte *_mainBankBuf;
625  byte *_musicBuf;
626  byte *_gameLipsync;
627  byte *_gamePhrases;
628  byte *_gameDialogs; //TODO: rename to dialogs?
629  byte *_gameConditions;
630  byte *_placeRawBuf; //TODO: fixme
631  byte *_bankDataBuf;
632  Icon *_gameIcons;
633  Room *_gameRooms;
634  PakHeaderNode *_bigfileHeader;
635  byte *_glowBuffer;
636 
637  byte *_gameFont; //TODO: rename to font?
638 
639  uint16 _mouseCenterX;
640  uint16 _mouseCenterY;
641  bool _bufferAllocationErrorFl;
642  bool _quitFlag2;
643  bool _quitFlag3;
644  bool _gameStarted;
645  bool _soundAllocated;
646 
647  CSoundChannel *_musicChannel;
648  CSoundChannel *_voiceChannel;
649 
650  int _demoCurrentTicks;
651  int _demoStartTicks;
652  int _currentTime;
653  int16 _cirsorPanX;
654  int16 _inventoryScrollDelay;
655  int16 _cursorPosX;
656  int16 _cursorPosY;
657  int16 _currCursor;
658  Icon *_currSpot;
659  Icon *_curSpot2;
660  bool _mouseHeld;
661  bool _normalCursor;
662 
663  bool _specialTextMode;
664  int _voiceSamplesSize; //TODO: perso vox sample data len
665  int16 _musicRightVol;
666  int16 _musicLeftVol;
667 
668  bool _animateTalking;
669  bool _personTalking;
670  byte _musicFadeFlag;
671 
672  char _musicSequencePos;
673  bool _musicPlayingFlag;
674 
675  byte *_musicSamplesPtr;
676  byte *_musicPatternsPtr; //TODO: sndblock_t ?
677  byte *_musSequencePtr;
678  bool _musicEnabledFlag;
679  uint16 *_currentObjectLocation;
680  bool byte_31D64;
681 
682  bool _noPalette;
683  bool _gameLoaded;
684 #define MAX_TAPES 16
685  tape_t _tapes[MAX_TAPES];
686  byte _confirmMode;
687  byte *_curSliderValuePtr;
688  byte _lastMenuItemIdLo;
689  int16 _lastTapeRoomNum;
690  int16 _curSliderX;
691  int16 _curSliderY;
692  int16 _destinationRoom;
693  int16 word_31E7A; // CHECKME: Unused?
694 
695  int16 word_378CC; // TODO: set by CLComputer_Init to 0
696  int16 word_378CE; // CHECKME: Unused
697 
698  int _invIconsCount;
699  int _invIconsBase;
700  int _roomIconsBase;
701 
703  int16 _cosTable[361];
704  int16 _sinTable[361];
705  int _passMat31, _passMat21, _passMat11;
706  int _passMat32, _passMat22, _passMat12;
707  int _passMat33, _passMat23, _passMat13;
708  int16 _rotationAngleY; // CHECKME: USeless?
709  int16 _rotationAngleX, _rotationAngleZ;
710  float _translationY, _translationX; // CHECKME: Useless?
711  Cube _cube;
712  int16 _cursCurPCMap;
713  int16 _lines[200 * 8];
714  byte _cubeTexture[0x4000];
715  int _cubeFaces;
716  uint32 _cursorOldTick, _cursorNewTick;
717  byte *_codePtr;
718 
719  uint8 tab_2CB1E[8][4];
720 
721  const unsigned int kMaxMusicSize; // largest .mus file size
722 
723  // Loaded from cryo.dat
724  Follower _followerList[15];
725  byte _labyrinthPath[70];
726  char _dinoSpeedForCitadelLevel[16];
727  char _tabletView[12];
728  char _personRoomBankTable[84]; // special character backgrounds for specific rooms
729 
730  // Loaded from cryo.dat - Area transition descriptors
731  Goto _gotos[130];
732  object_t _objects[42];
733  uint16 _objectLocations[45];
734  perso_t _persons[58];
735  Citadel _citadelList[7];
736 
737  // Loaded from cryo.dat
738  Common::Rect _characterRects[19];
739  byte _characterArray[20][5];
740  Area _areasTable[12];
741  int16 tab_2CEF0[64];
742  int16 tab_2CF70[64];
743  byte _actionCursors[299];
744  byte _mapMode[12];
745  byte _cubeTextureCoords[3][6 * 2 * 3 * 2];
746 
747  int32 _translationZ;
748  int8 _zDirection; // 1 (up) or -1 (down)
749 
750  // Torch/glow related
751  int16 _torchTick;
752  int16 _glowIndex;
753  int16 _torchCurIndex;
754 
755  int _cursCenter;
756 };
757 
758 }
759 
760 #endif
Definition: defs.h:777
Definition: defs.h:805
Definition: defs.h:828
Definition: defs.h:832
Definition: cryo.h:53
Definition: defs.h:383
Definition: defs.h:597
Definition: rect.h:144
Definition: sound.h:34
Definition: defs.h:404
Definition: stream.h:745
Definition: defs.h:414
Definition: serializer.h:79
Definition: defs.h:392
Definition: defs.h:340
Definition: eden_graphics.h:32
Definition: defs.h:309
Definition: file.h:47
Definition: defs.h:821
Definition: rect.h:45
Definition: defs.h:435
void NORETURN_PRE error(MSVC_PRINTF const char *s,...) GCC_PRINTF(1
Definition: defs.h:376
Definition: eden.h:44
Definition: defs.h:768
Definition: cryo.h:41
Definition: defs.h:473