Subversion Repositories Games.Carmageddon

Rev

Rev 1 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #include <stddef.h>
  2. #include <stdint.h>
  3.  
  4. #define SMACKTRACK1 0x02000 // Play audio track 1
  5. #define SMACKTRACK2 0x04000 // Play audio track 2
  6. #define SMACKTRACK3 0x08000 // Play audio track 3
  7. #define SMACKTRACK4 0x10000 // Play audio track 4
  8. #define SMACKTRACK5 0x20000 // Play audio track 5
  9. #define SMACKTRACK6 0x40000 // Play audio track 6
  10. #define SMACKTRACK7 0x80000 // Play audio track 7
  11. #define SMACKTRACKS (SMACKTRACK1 | SMACKTRACK2 | SMACKTRACK3 | SMACKTRACK4 | SMACKTRACK5 | SMACKTRACK6 | SMACKTRACK7)
  12. #define SMACKAUTOEXTRA 0xffffffff
  13.  
  14. typedef struct SmackTag {
  15.     unsigned long Version;
  16.     unsigned long Width;
  17.     unsigned long Height;
  18.     unsigned long Frames;
  19.     unsigned long MSPerFrame;
  20.     unsigned long SmackerType;
  21.     unsigned long LargestInTrack[7];
  22.     unsigned long tablesize;
  23.     unsigned long codesize;
  24.     unsigned long absize;
  25.     unsigned long detailsize;
  26.     unsigned long typesize;
  27.     unsigned long TrackType[7];
  28.     unsigned long extra;
  29.     unsigned long NewPalette;
  30.     unsigned char Palette[772];
  31.     unsigned long PalType;
  32.     unsigned long FrameNum;
  33.     unsigned long FrameSize;
  34.     unsigned long SndSize;
  35.     unsigned long LastRectx;
  36.     unsigned long LastRecty;
  37.     unsigned long LastRectw;
  38.     unsigned long LastRecth;
  39.     unsigned long OpenFlags;
  40.     unsigned long LeftOfs;
  41.     unsigned long TopOfs;
  42.     unsigned long ReadError;
  43.     unsigned long addr32;
  44.  
  45.     // added by dethrace
  46.     void* smk_handle; // opaque pointer to the libsmacker instance
  47.     int audio_sample_rate;
  48.     int audio_frame_size_in_bytes; // TODO: consider using SndSize for storage instead?
  49.     void* audio_paged_buffer; // opaque pointer to a miniaudio ma_paged_audio_buffer struct
  50.     void* audio_paged_buffer_data; // opaque pointer to a miniaudio ma_paged_audio_buffer_data struct
  51.     void* audio_converter; // opaque pointerto a miniaudio ma_data_converter struct
  52.     void* audio_track; // opaque pointer to a miniaudio ma_sound struct
  53. } Smack;
  54.  
  55. Smack* SmackOpen(const char* name, uint32_t flags, uint32_t extrabuf);
  56. int SmackSoundUseDirectSound(void* dd); // NULL mean create instance (apparently)
  57. void SmackToBuffer(Smack* smack, uint32_t left, uint32_t top, uint32_t pitch, uint32_t destheight, void* buf, uint32_t flags);
  58. uint32_t SmackDoFrame(Smack* smack);
  59. void SmackNextFrame(Smack* smack);
  60. uint32_t SmackWait(Smack* smack);
  61. void SmackClose(Smack* smack);
  62.