|
|
1.1 ! root 1: #ifndef SMACKH ! 2: #define SMACKH ! 3: ! 4: #include "rad.h" ! 5: ! 6: RCSTART ! 7: ! 8: #define SMACKVERSION "2.0y" ! 9: ! 10: typedef struct SmackSumTag { ! 11: u32 TotalTime; // total time ! 12: u32 MS100PerFrame; // MS*100 per frame (100000/MS100PerFrame=Frames/Sec) ! 13: u32 TotalOpenTime; // Time to open and prepare for decompression ! 14: u32 TotalFrames; // Total Frames displayed ! 15: u32 SkippedFrames; // Total number of skipped frames ! 16: u32 TotalBlitTime; // Total time spent blitting ! 17: u32 TotalReadTime; // Total time spent reading ! 18: u32 TotalDecompTime; // Total time spent decompressing ! 19: u32 TotalBackReadTime; // Total time spent reading in background ! 20: u32 TotalReadSpeed; // Total io speed (bytes/second) ! 21: u32 SlowestFrameTime; // Slowest single frame time ! 22: u32 Slowest2FrameTime; // Second slowest single frame time ! 23: u32 SlowestFrameNum; // Slowest single frame number ! 24: u32 Slowest2FrameNum; // Second slowest single frame number ! 25: u32 AverageFrameSize; // Average size of the frame ! 26: u32 Highest1SecRate; // Highest 1 sec data rate ! 27: u32 Highest1SecFrame; // Highest 1 sec data rate starting frame ! 28: u32 HighestMemAmount; // Highest amount of memory allocated ! 29: u32 TotalExtraMemory; // Total extra memory allocated ! 30: u32 HighestExtraUsed; // Highest extra memory actually used ! 31: } SmackSum; ! 32: ! 33: typedef struct SmackTag { ! 34: u32 Version; // SMK2 only right now ! 35: u32 Width; // Width (1 based, 640 for example) ! 36: u32 Height; // Height (1 based, 480 for example) ! 37: u32 Frames; // Number of frames (1 based, 100 = 100 frames) ! 38: u32 MSPerFrame; // Frame Rate ! 39: u32 SmackerType; // bit 0 set=ring frame ! 40: u32 LargestInTrack[7]; // Largest single size for each track ! 41: u32 tablesize; // Size of the init tables ! 42: u32 codesize; // Compression info ! 43: u32 absize; // ditto ! 44: u32 detailsize; // ditto ! 45: u32 typesize; // ditto ! 46: u32 TrackType[7]; // high byte=0x80-Comp,0x40-PCM data,0x20-16 bit,0x10-stereo ! 47: u32 extra; // extra value (should be zero) ! 48: u32 NewPalette; // set to one if the palette changed ! 49: u8 Palette[772]; // palette data ! 50: u32 FrameNum; // Frame Number to be displayed ! 51: u32 LastRectx; // Rect set in from SmackToBufferRect (X coord) ! 52: u32 LastRecty; // Rect set in from SmackToBufferRect (Y coord) ! 53: u32 LastRectw; // Rect set in from SmackToBufferRect (Width) ! 54: u32 LastRecth; // Rect set in from SmackToBufferRect (Height) ! 55: u32 OpenFlags; // flags used on open ! 56: u32 LeftOfs; // Left Offset used in SmackTo ! 57: u32 TopOfs; // Top Offset used in SmackTo ! 58: } Smack; ! 59: ! 60: #define SmackHeaderSize(smk) ((((u8*)&((smk)->extra))-((u8*)(smk)))+4) ! 61: ! 62: //======================================================================= ! 63: #define SMACKNEEDPAN 0x00020L // Will be setting the pan ! 64: #define SMACKNEEDVOLUME 0x00040L // Will be setting the volume ! 65: #define SMACKFRAMERATE 0x00080L // Override fr (call SmackFrameRate first) ! 66: #define SMACKLOADEXTRA 0x00100L // Load the extra buffer during SmackOpen ! 67: #define SMACKPRELOADALL 0x00200L // Preload the entire animation ! 68: #define SMACKNOSKIP 0x00400L // Don't skip frames if falling behind ! 69: #define SMACKSIMULATE 0x00800L // Simulate the speed (call SmackSim first) ! 70: #define SMACKFILEHANDLE 0x01000L // Use when passing in a file handle ! 71: #define SMACKTRACK1 0x02000L // Play audio track 1 ! 72: #define SMACKTRACK2 0x04000L // Play audio track 2 ! 73: #define SMACKTRACK3 0x08000L // Play audio track 3 ! 74: #define SMACKTRACK4 0x10000L // Play audio track 4 ! 75: #define SMACKTRACK5 0x20000L // Play audio track 5 ! 76: #define SMACKTRACK6 0x40000L // Play audio track 6 ! 77: #define SMACKTRACK7 0x80000L // Play audio track 7 ! 78: #define SMACKTRACKS (SMACKTRACK1|SMACKTRACK2|SMACKTRACK3|SMACKTRACK4|SMACKTRACK5|SMACKTRACK6|SMACKTRACK7) ! 79: ! 80: #define SMACKAUTOEXTRA 0xffffffffL // NOT A FLAG! - Use as extrabuf param ! 81: //======================================================================= ! 82: ! 83: #define SMACKSURFACEFAST 0 ! 84: #define SMACKSURFACESLOW 1 ! 85: #define SMACKSURFACEDIRECT 2 ! 86: ! 87: ! 88: Smack PTR4* RADEXPLINK SmackOpen(char PTR4* name,u32 flags,u32 extrabuf); ! 89: ! 90: #ifdef __RADMAC__ ! 91: #include <files.h> ! 92: ! 93: Smack PTR4* RADEXPLINK SmackMacOpen(FSSpec* fsp,u32 flags,u32 extrabuf); ! 94: #endif ! 95: ! 96: u32 RADEXPLINK SmackDoFrame(Smack PTR4* smk); ! 97: void RADEXPLINK SmackNextFrame(Smack PTR4* smk); ! 98: u32 RADEXPLINK SmackWait(Smack PTR4* smk); ! 99: void RADEXPLINK SmackClose(Smack PTR4* smk); ! 100: ! 101: void RADEXPLINK SmackVolumePan(Smack PTR4* smk, u32 trackflag,u32 volume,u32 pan); ! 102: ! 103: void RADEXPLINK SmackSummary(Smack PTR4* smk,SmackSum PTR4* sum); ! 104: ! 105: u32 RADEXPLINK SmackSoundInTrack(Smack PTR4* smk,u32 trackflags); ! 106: u32 RADEXPLINK SmackSoundOnOff(Smack PTR4* smk,u32 on); ! 107: ! 108: #ifdef __RADMAC__ ! 109: void RADEXPLINK SmackToScreen(Smack PTR4* smk,u32 left,u32 top); ! 110: #else ! 111: void RADEXPLINK SmackToScreen(Smack PTR4* smk,u32 left,u32 top,u32 BytesPS,u16 PTR4* WinTbl,u32 SetBank); ! 112: #endif ! 113: ! 114: void RADEXPLINK SmackToBuffer(Smack PTR4* smk,u32 left,u32 top,u32 Pitch,u32 destheight,void PTR4* buf,u32 Reversed); ! 115: u32 RADEXPLINK SmackToBufferRect(Smack PTR4* smk, u32 SmackSurface); ! 116: ! 117: void RADEXPLINK SmackGoto(Smack PTR4* smk,u32 frame); ! 118: void RADEXPLINK SmackColorRemap(Smack PTR4* smk,void PTR4* remappal,u32 numcolors,u32 paltype); ! 119: void RADEXPLINK SmackColorTrans(Smack PTR4* smk,void PTR4* trans); ! 120: void RADEXPLINK SmackFrameRate(u32 forcerate); ! 121: void RADEXPLINK SmackSimulate(u32 sim); ! 122: ! 123: u32 RADEXPLINK SmackGetTrackData(Smack PTR4* smk,void PTR4* dest,u32 trackflag); ! 124: ! 125: void RADEXPLINK SmackSoundCheck(); ! 126: ! 127: //====================================================================== ! 128: #ifdef __RADDOS__ ! 129: ! 130: #define SMACKSOUNDNONE -1 ! 131: ! 132: extern void* cdecl SmackTimerSetupAddr; ! 133: extern void* cdecl SmackTimerReadAddr; ! 134: extern void* cdecl SmackTimerDoneAddr; ! 135: ! 136: typedef void RADLINK (*SmackTimerSetupType)(); ! 137: typedef u32 RADLINK (*SmackTimerReadType)(); ! 138: typedef void RADLINK (*SmackTimerDoneType)(); ! 139: ! 140: #define SmackTimerSetup() ((SmackTimerSetupType)(SmackTimerSetupAddr))() ! 141: #define SmackTimerRead() ((SmackTimerReadType)(SmackTimerReadAddr))() ! 142: #define SmackTimerDone() ((SmackTimerDoneType)(SmackTimerDoneAddr))() ! 143: ! 144: u8 RADEXPLINK SmackSoundUseMSS(void* DigDriver,u32 MaxTimerSpeed); ! 145: void RADEXPLINK SmackSoundMSSLiteInit(); ! 146: void RADEXPLINK SmackSoundMSSLiteDone(); ! 147: ! 148: u8 RADEXPLINK SmackSoundUseSOS3r(u32 SOSDriver,u32 MaxTimerSpeed); ! 149: u8 RADEXPLINK SmackSoundUseSOS3s(u32 SOSDriver,u32 MaxTimerSpeed); ! 150: u8 RADEXPLINK SmackSoundUseSOS4r(u32 SOSDriver,u32 MaxTimerSpeed); ! 151: u8 RADEXPLINK SmackSoundUseSOS4s(u32 SOSDriver,u32 MaxTimerSpeed); ! 152: ! 153: #ifdef __SW_3R ! 154: #define SmackSoundUseSOS3 SmackSoundUseSOS3r ! 155: #define SmackSoundUseSOS4 SmackSoundUseSOS4r ! 156: #else ! 157: #define SmackSoundUseSOS3 SmackSoundUseSOS3s ! 158: #define SmackSoundUseSOS4 SmackSoundUseSOS4s ! 159: #endif ! 160: ! 161: #else ! 162: ! 163: #define SMACKRESRESET 0 ! 164: #define SMACKRES640X400 1 ! 165: #define SMACKRES640X480 2 ! 166: #define SMACKRES800X600 3 ! 167: #define SMACKRES1024X768 4 ! 168: ! 169: u32 RADEXPLINK SmackSetSystemRes(u32 mode); // use SMACKRES* values ! 170: ! 171: #ifdef __RADMAC__ ! 172: ! 173: #include <windows.h> ! 174: #include <palettes.h> ! 175: #include <qdoffscreen.h> ! 176: #include <timer.h> ! 177: ! 178: typedef struct SmkTMInfoTag { ! 179: TMTask smTask; ! 180: u32 milli; ! 181: } SmkTMInfo; ! 182: ! 183: extern SmkTMInfo __SmackTimeInfo; ! 184: ! 185: void RADEXPLINK SmackTimerSetup(); ! 186: void RADEXPLINK SmackTimerDone(); ! 187: #define SmackTimerRead() (__SmackTimeInfo.milli) ! 188: ! 189: #define SMACKAUTOBLIT 0 ! 190: #define SMACKDIRECTBLIT 1 ! 191: #define SMACKGWORLDBLIT 2 ! 192: ! 193: typedef struct SmackBufTag { ! 194: u32 Reversed; ! 195: u32 SurfaceType; // SMACKSURFACExxxxxx ! 196: u32 BlitType; // SMACKxxxxxBLIT ! 197: u32 Width; ! 198: u32 Height; ! 199: u32 Pitch; ! 200: u32 Zoomed; ! 201: u32 ZWidth; ! 202: u32 ZHeight; ! 203: u32 DispColors; // colors on screen ! 204: u32 MaxPalColors; ! 205: u32 PalColorsInUse; ! 206: u32 StartPalColor; ! 207: u32 EndPalColor; ! 208: void* Buffer; ! 209: void* Palette; ! 210: u32 PalType; ! 211: ! 212: WindowPtr wp; ! 213: GWorldPtr gwp; ! 214: CTabHandle cth; ! 215: PaletteHandle palh; ! 216: } SmackBuf; ! 217: ! 218: #else ! 219: ! 220: #ifdef __RADWIN__ ! 221: ! 222: #define INCLUDE_MMSYSTEM_H ! 223: #include "windows.h" ! 224: #include "windowsx.h" ! 225: ! 226: #define SMACKAUTOBLIT 0 ! 227: #define SMACKFULL320X240BLIT 1 ! 228: #define SMACKFULL320X200BLIT 2 ! 229: #define SMACKSTANDARDBLIT 3 ! 230: #define SMACKWINGBLIT 4 ! 231: ! 232: #define WM_SMACKACTIVATE WM_USER+0x5678 ! 233: ! 234: typedef struct SmackBufTag { ! 235: u32 Reversed; // 1 if the buffer is upside down ! 236: u32 SurfaceType; // SMACKSURFACExxxx defines ! 237: u32 BlitType; // SMACKxxxxBLIT defines ! 238: u32 FullScreen; // 1 if full-screen ! 239: u32 Width; ! 240: u32 Height; ! 241: u32 Zoomed; ! 242: u32 ZWidth; ! 243: u32 ZHeight; ! 244: u32 DispColors; // colors on the screen ! 245: u32 MaxPalColors; // total possible colors in palette (usually 256) ! 246: u32 PalColorsInUse; // Used colors in palette (usually 236) ! 247: u32 StartPalColor; // first usable color index (usually 10) ! 248: u32 EndPalColor; // last usable color index (usually 246) ! 249: RGBQUAD Palette[256]; ! 250: u32 PalType; ! 251: ! 252: void PTR4* Buffer; ! 253: void PTR4* DIBRestore; ! 254: u32 OurBitmap; ! 255: u32 OrigBitmap; ! 256: u32 OurPalette; ! 257: u32 WinGDC; ! 258: u32 FullFocused; ! 259: u32 ParentHwnd; ! 260: u32 OldParWndProc; ! 261: u32 OldDispWndProc; ! 262: u32 DispHwnd; ! 263: u32 WinGBufHandle; ! 264: } SmackBuf; ! 265: ! 266: void RADEXPLINK SmackGet(Smack PTR4* smk,void PTR4* dest); ! 267: void RADEXPLINK SmackBufferGet( SmackBuf PTR4* sbuf, void PTR4* dest); ! 268: ! 269: u8 RADEXPLINK SmackSoundUseMSS(void PTR4* dd); ! 270: u8 RADEXPLINK SmackSoundUseDirectSound(HWND hw); ! 271: ! 272: #define SmackTimerSetup() ! 273: #define SmackTimerDone() ! 274: #define SmackTimerRead timeGetTime ! 275: ! 276: #endif ! 277: ! 278: #endif ! 279: ! 280: #ifdef __RADMAC__ ! 281: SmackBuf PTR4* RADEXPLINK SmackBufferOpen( WindowPtr wp, u16 BlitType, u16 width, u16 height, u16 ZoomW, u16 ZoomH ); ! 282: u16 RADEXPLINK SmackBufferBlit( SmackBuf PTR4* sbuf, u16 hwndx, u16 hwndy, u16 subx, u16 suby, u16 subw, u16 subh ); ! 283: void RADEXPLINK SmackBufferFromScreen( SmackBuf PTR4* destbuf, u16 x, u16 y); ! 284: #else ! 285: SmackBuf PTR4* RADEXPLINK SmackBufferOpen( HWND wnd, u16 BlitType, u16 width, u16 height, u16 ZoomW, u16 ZoomH ); ! 286: u16 RADEXPLINK SmackBufferBlit( SmackBuf PTR4* sbuf, HDC dc, u16 hwndx, u16 hwndy, u16 subx, u16 suby, u16 subw, u16 subh ); ! 287: void RADEXPLINK SmackBufferFromScreen( SmackBuf PTR4* destbuf, HWND hw, u16 x, u16 y); ! 288: #endif ! 289: ! 290: char PTR4* RADEXPLINK SmackBufferString(char PTR4* dest,u16 BlitType); ! 291: ! 292: void RADEXPLINK SmackBufferNewPalette( SmackBuf PTR4* sbuf, void PTR4* pal, u16 paltype ); ! 293: u16 RADEXPLINK SmackBufferSetPalette( SmackBuf PTR4* sbuf ); ! 294: void RADEXPLINK SmackBufferClose( SmackBuf PTR4* sbuf ); ! 295: ! 296: void RADEXPLINK SmackBufferClear( SmackBuf PTR4* destbuf, u16 color); ! 297: void RADEXPLINK SmackBufferToBuffer( SmackBuf PTR4* destbuf, u16 destx, u16 desty, SmackBuf PTR4* sourcebuf,u16 sourcex,u16 sourcey,u16 sourcew,u16 sourceh); ! 298: void RADEXPLINK SmackBufferToBufferTrans( SmackBuf PTR4* destbuf, u16 destx, u16 desty, SmackBuf PTR4* sourcebuf,u16 sourcex,u16 sourcey,u16 sourcew,u16 sourceh,u16 TransColor); ! 299: void RADEXPLINK SmackBufferCopyPalette( SmackBuf PTR4* destbuf, SmackBuf PTR4* sourcebuf, u16 remap); ! 300: ! 301: u16 RADEXPLINK SmackBufferFocused( SmackBuf PTR4* sbuf); ! 302: ! 303: #endif ! 304: ! 305: RCEND ! 306: ! 307: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.