Isle
Loading...
Searching...
No Matches
smack.h
Go to the documentation of this file.
1#ifndef SMACKH
2#define SMACKH
3
4#include "rad.h"
5
7
8#define SMACKVERSION "2.0y"
9
10typedef 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
32
33typedef 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
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
88Smack 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
100
101void RADEXPLINK SmackVolumePan(Smack PTR4* smk, u32 trackflag,u32 volume,u32 pan);
102
104
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
114void RADEXPLINK SmackToBuffer(Smack PTR4* smk,u32 left,u32 top,u32 Pitch,u32 destheight,void PTR4* buf,u32 Reversed);
116
118void RADEXPLINK SmackColorRemap(Smack PTR4* smk,void PTR4* remappal,u32 numcolors,u32 paltype);
119void RADEXPLINK SmackColorTrans(Smack PTR4* smk,void PTR4* trans);
122
123u32 RADEXPLINK SmackGetTrackData(Smack PTR4* smk,void PTR4* dest,u32 trackflag);
124
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 );
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
302
303#endif
304
305RCEND
306
307#endif
#define PTR4
Definition: rad.h:305
#define u16
Definition: rad.h:307
#define u32
Definition: rad.h:147
#define RADEXPLINK
Definition: rad.h:125
#define RADLINK
Definition: rad.h:124
#define RCEND
Definition: rad.h:139
#define RCSTART
Definition: rad.h:138
#define u8
Definition: rad.h:146
u32 RADEXPLINK SmackSoundInTrack(Smack PTR4 *smk, u32 trackflags)
u32 RADEXPLINK SmackToBufferRect(Smack PTR4 *smk, u32 SmackSurface)
void RADEXPLINK SmackFrameRate(u32 forcerate)
struct SmackSumTag SmackSum
void RADEXPLINK SmackBufferCopyPalette(SmackBuf PTR4 *destbuf, SmackBuf PTR4 *sourcebuf, u16 remap)
void RADEXPLINK SmackBufferClose(SmackBuf PTR4 *sbuf)
u32 RADEXPLINK SmackSoundOnOff(Smack PTR4 *smk, u32 on)
void RADEXPLINK SmackSimulate(u32 sim)
u32 RADEXPLINK SmackWait(Smack PTR4 *smk)
u16 RADEXPLINK SmackBufferBlit(SmackBuf PTR4 *sbuf, HDC dc, u16 hwndx, u16 hwndy, u16 subx, u16 suby, u16 subw, u16 subh)
void RADEXPLINK SmackSummary(Smack PTR4 *smk, SmackSum PTR4 *sum)
void RADEXPLINK SmackBufferNewPalette(SmackBuf PTR4 *sbuf, void PTR4 *pal, u16 paltype)
void RADEXPLINK SmackBufferToBuffer(SmackBuf PTR4 *destbuf, u16 destx, u16 desty, SmackBuf PTR4 *sourcebuf, u16 sourcex, u16 sourcey, u16 sourcew, u16 sourceh)
void RADEXPLINK SmackClose(Smack PTR4 *smk)
void RADEXPLINK SmackGoto(Smack PTR4 *smk, u32 frame)
void RADEXPLINK SmackBufferFromScreen(SmackBuf PTR4 *destbuf, HWND hw, u16 x, u16 y)
u32 RADEXPLINK SmackDoFrame(Smack PTR4 *smk)
void RADEXPLINK SmackBufferClear(SmackBuf PTR4 *destbuf, u16 color)
u32 RADEXPLINK SmackGetTrackData(Smack PTR4 *smk, void PTR4 *dest, u32 trackflag)
void RADEXPLINK SmackColorTrans(Smack PTR4 *smk, void PTR4 *trans)
struct SmackTag Smack
void RADEXPLINK SmackToScreen(Smack PTR4 *smk, u32 left, u32 top, u32 BytesPS, u16 PTR4 *WinTbl, u32 SetBank)
char PTR4 *RADEXPLINK SmackBufferString(char PTR4 *dest, u16 BlitType)
void RADEXPLINK SmackVolumePan(Smack PTR4 *smk, u32 trackflag, u32 volume, u32 pan)
u16 RADEXPLINK SmackBufferSetPalette(SmackBuf PTR4 *sbuf)
u32 RADEXPLINK SmackSetSystemRes(u32 mode)
SmackBuf PTR4 *RADEXPLINK SmackBufferOpen(HWND wnd, u16 BlitType, u16 width, u16 height, u16 ZoomW, u16 ZoomH)
void RADEXPLINK SmackNextFrame(Smack PTR4 *smk)
void RADEXPLINK SmackBufferToBufferTrans(SmackBuf PTR4 *destbuf, u16 destx, u16 desty, SmackBuf PTR4 *sourcebuf, u16 sourcex, u16 sourcey, u16 sourcew, u16 sourceh, u16 TransColor)
Smack PTR4 *RADEXPLINK SmackOpen(char PTR4 *name, u32 flags, u32 extrabuf)
u16 RADEXPLINK SmackBufferFocused(SmackBuf PTR4 *sbuf)
void RADEXPLINK SmackColorRemap(Smack PTR4 *smk, void PTR4 *remappal, u32 numcolors, u32 paltype)
void RADEXPLINK SmackSoundCheck()
void RADEXPLINK SmackToBuffer(Smack PTR4 *smk, u32 left, u32 top, u32 Pitch, u32 destheight, void PTR4 *buf, u32 Reversed)
u32 TotalReadSpeed
Definition: smack.h:20
u32 TotalReadTime
Definition: smack.h:17
u32 SlowestFrameTime
Definition: smack.h:21
u32 Highest1SecFrame
Definition: smack.h:27
u32 HighestExtraUsed
Definition: smack.h:30
u32 Slowest2FrameNum
Definition: smack.h:24
u32 TotalFrames
Definition: smack.h:14
u32 TotalDecompTime
Definition: smack.h:18
u32 AverageFrameSize
Definition: smack.h:25
u32 Slowest2FrameTime
Definition: smack.h:22
u32 TotalBlitTime
Definition: smack.h:16
u32 SkippedFrames
Definition: smack.h:15
u32 Highest1SecRate
Definition: smack.h:26
u32 SlowestFrameNum
Definition: smack.h:23
u32 TotalTime
Definition: smack.h:11
u32 TotalExtraMemory
Definition: smack.h:29
u32 HighestMemAmount
Definition: smack.h:28
u32 TotalBackReadTime
Definition: smack.h:19
u32 MS100PerFrame
Definition: smack.h:12
u32 TotalOpenTime
Definition: smack.h:13
Definition: smack.h:33
u32 MSPerFrame
Definition: smack.h:38
u32 LastRectx
Definition: smack.h:51
u32 TopOfs
Definition: smack.h:57
u32 Width
Definition: smack.h:35
u32 absize
Definition: smack.h:43
u32 detailsize
Definition: smack.h:44
u32 extra
Definition: smack.h:47
u32 LastRecth
Definition: smack.h:54
u32 Height
Definition: smack.h:36
u32 SmackerType
Definition: smack.h:39
u8 Palette[772]
Definition: smack.h:49
u32 LastRectw
Definition: smack.h:53
u32 FrameNum
Definition: smack.h:50
u32 LastRecty
Definition: smack.h:52
u32 Frames
Definition: smack.h:37
u32 LeftOfs
Definition: smack.h:56
u32 NewPalette
Definition: smack.h:48
u32 OpenFlags
Definition: smack.h:55
u32 codesize
Definition: smack.h:42
u32 typesize
Definition: smack.h:45
u32 LargestInTrack[7]
Definition: smack.h:40
u32 Version
Definition: smack.h:34
u32 TrackType[7]
Definition: smack.h:46
u32 tablesize
Definition: smack.h:41