1 /*****************************************************************************\ 2 Snes9x - Portable Super Nintendo Entertainment System (TM) emulator. 3 This file is licensed under the Snes9x License. 4 For further information, consult the LICENSE file in the root directory. 5 \*****************************************************************************/ 6 7 #ifndef _MOVIE_H_ 8 #define _MOVIE_H_ 9 10 #define MOVIE_OPT_FROM_SNAPSHOT 0 11 #define MOVIE_OPT_FROM_RESET (1 << 0) 12 #define MOVIE_OPT_PAL (1 << 1) 13 #define MOVIE_OPT_NOSAVEDATA (1 << 2) 14 #define MOVIE_SYNC_DATA_EXISTS 0x01 15 #define MOVIE_SYNC_OBSOLETE 0x02 16 #define MOVIE_SYNC_VOLUMEENVX 0x08 17 #define MOVIE_SYNC_FAKEMUTE 0x10 18 #define MOVIE_SYNC_HASROMINFO 0x40 19 #define MOVIE_SYNC_NOCPUSHUTDOWN 0x80 20 #define MOVIE_MAX_METADATA 512 21 22 #define CONTROLLER_DATA_SIZE 2 23 #define MOUSE_DATA_SIZE 5 24 #define SCOPE_DATA_SIZE 6 25 #define JUSTIFIER_DATA_SIZE 11 26 27 struct MovieInfo 28 { 29 time_t TimeCreated; 30 uint32 Version; 31 uint32 LengthFrames; 32 uint32 LengthSamples; 33 uint32 RerecordCount; 34 uint8 Opts; 35 uint8 ControllersMask; 36 uint8 SyncFlags; 37 bool8 ReadOnly; 38 uint8 PortType[2]; 39 wchar_t Metadata[MOVIE_MAX_METADATA]; 40 uint32 ROMCRC32; 41 char ROMName[23]; 42 }; 43 44 // methods used by the user-interface code 45 int S9xMovieOpen (const char *, bool8); 46 int S9xMovieCreate (const char *, uint8, uint8, const wchar_t *, int); 47 int S9xMovieGetInfo (const char *, struct MovieInfo *); 48 void S9xMovieStop (bool8); 49 void S9xMovieToggleRecState (void); 50 void S9xMovieToggleFrameDisplay (void); 51 const char * S9xChooseMovieFilename (bool8); 52 53 // methods used by the emulation 54 void S9xMovieInit (void); 55 void S9xMovieShutdown (void); 56 void S9xMovieUpdate (bool a = true); 57 void S9xMovieUpdateOnReset (void); 58 void S9xUpdateFrameCounter (int o = 0); 59 void S9xMovieFreeze (uint8 **, uint32 *); 60 int S9xMovieUnfreeze (uint8 *, uint32); 61 62 // accessor functions 63 bool8 S9xMovieActive (void); 64 bool8 S9xMoviePlaying (void); 65 bool8 S9xMovieRecording (void); 66 bool8 S9xMovieReadOnly (void); 67 uint8 S9xMovieControllers (void); 68 uint32 S9xMovieGetId (void); 69 uint32 S9xMovieGetLength (void); 70 uint32 S9xMovieGetFrameCounter (void); 71 72 uint16 MovieGetJoypad (int); 73 void MovieSetJoypad (int, uint16); 74 bool MovieGetMouse (int, uint8 d[MOUSE_DATA_SIZE]); 75 void MovieSetMouse (int, uint8 d[MOUSE_DATA_SIZE], bool); 76 bool MovieGetScope (int, uint8 d[SCOPE_DATA_SIZE]); 77 void MovieSetScope (int, uint8 d[SCOPE_DATA_SIZE]); 78 bool MovieGetJustifier (int, uint8 d[JUSTIFIER_DATA_SIZE]); 79 void MovieSetJustifier (int, uint8 d[JUSTIFIER_DATA_SIZE]); 80 81 #endif 82