Mercurial > hg > forks > 3x666-SDL
annotate recording.patch @ 43:8a7589da1bec
Update documentation.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 19 Mar 2013 05:09:41 +0200 |
parents | efb2709f3b00 |
children |
rev | line source |
---|---|
38 | 1 diff -r 38b7583302c3 3x666.c |
2 --- a/3x666.c Tue Mar 19 02:55:25 2013 +0200 | |
3 +++ b/3x666.c Tue Mar 19 03:00:45 2013 +0200 | |
35
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
4 @@ -7,6 +7,19 @@ |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
5 #include "config.h" |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
6 #include "3xfont.h" |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
7 |
38 | 8 +#define RECORD 1 |
35
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
9 +#define RECORD_FPS 50 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
10 +#define RECORD_AUDIO_FILE "audio.wav" |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
11 +#define RECORD_VIDEO_FILE "%05d.png" |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
12 + |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
13 + |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
14 +#ifdef RECORD |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
15 +#include <errno.h> |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
16 +#include "dmlib.h" |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
17 +#include "dmwav.h" |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
18 +#include "libgfx.h" |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
19 + |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
20 +#else |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
21 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
22 #if !defined(FALSE) && !defined(TRUE) && !defined(BOOL) |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
23 typedef enum { FALSE = 0, TRUE = 1 } BOOL; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
24 @@ -20,6 +33,8 @@ |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
25 # endif |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
26 #endif |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
27 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
28 +#endif |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
29 + |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
30 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
31 struct |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
32 { |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
33 @@ -51,6 +66,7 @@ |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
34 void setpal(void); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
35 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
36 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
37 +#ifndef RECORD |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
38 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
39 static void dmPrintVA(int level, const char *fmt, va_list ap) |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
40 { |
38 | 41 @@ -99,6 +115,7 @@ |
35
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
42 dmErrorVA(fmt, ap); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
43 va_end(ap); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
44 } |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
45 +#endif |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
46 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
47 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
48 static int engineGetTick() |
38 | 49 @@ -994,10 +1011,12 @@ |
35
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
50 engine.optAfmt.callback = engineAudioCallback; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
51 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
52 // Initialize SDL audio |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
53 +#ifndef RECORD |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
54 if (SDL_OpenAudio(&engine.optAfmt, NULL) < 0) |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
55 { |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
56 dmError("Couldn't open SDL audio: %s\n", SDL_GetError()); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
57 } |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
58 +#endif |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
59 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
60 // Initialize SDL video |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
61 if (!engineInitializeVideo()) |
38 | 62 @@ -1019,13 +1038,53 @@ |
35
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
63 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
64 // Start audio, enter main loop |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
65 dmPrint(0, "We are go.\n"); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
66 +#ifdef RECORD |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
67 + DMImage image; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
68 + DMImageSpec imageSpec = |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
69 +{ |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
70 + .scale = 1, |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
71 + .nplanes = 4, |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
72 + .interleave = FALSE, |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
73 + .paletted = FALSE, |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
74 + .format = DM_IFMT_RGB, |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
75 +}; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
76 + int audioSize = 0, audioBufSize = sizeof(Sint16) * (engine.optAfmt.freq / RECORD_FPS) * engine.optAfmt.channels; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
77 + Uint8 *audioBuf = malloc(audioBufSize); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
78 + FILE *audioFile = NULL; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
79 + char videoFilename[64]; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
80 + engine.startTime = 0; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
81 + |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
82 + image.width = engine.screen->w; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
83 + image.height = engine.screen->h; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
84 + image.pitch = engine.screen->pitch; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
85 + image.ncolors = 256; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
86 + image.constpal = TRUE; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
87 + image.pal = (DMColor *) engine.screen->format->palette->colors; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
88 + image.data = engine.screen->pixels; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
89 + |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
90 + |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
91 + // Open output file(s) |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
92 + if ((audioFile = fopen(RECORD_AUDIO_FILE, "wb")) == NULL) |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
93 + { |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
94 + dmError("Error opening output file '%s'. (%s)\n", RECORD_AUDIO_FILE, strerror(errno)); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
95 + goto error_exit; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
96 + } |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
97 + |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
98 + // Write initial header |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
99 + dmWriteWAVHeader(audioFile, 16, engine.optAfmt.freq, engine.optAfmt.channels, 1024); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
100 + |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
101 +#else |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
102 SDL_LockAudio(); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
103 SDL_PauseAudio(0); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
104 SDL_UnlockAudio(); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
105 engine.startTime = SDL_GetTicks(); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
106 +#endif |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
107 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
108 while (!engine.exitFlag) |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
109 { |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
110 +#ifdef RECORD |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
111 + engine.frameTime += 1000 / RECORD_FPS; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
112 +#else |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
113 // Handle SDL events |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
114 while (SDL_PollEvent(&engine.event)) |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
115 switch (engine.event.type) |
38 | 116 @@ -1066,8 +1125,9 @@ |
35
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
117 break; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
118 } |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
119 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
120 + engine.frameTime = SDL_GetTicks(); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
121 +#endif |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
122 // Draw frame |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
123 - engine.frameTime = SDL_GetTicks(); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
124 int qt = engineGetTick(&engine); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
125 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
126 if (SDL_MUSTLOCK(engine.screen) != 0 && SDL_LockSurface(engine.screen) != 0) |
38 | 127 @@ -1184,13 +1244,25 @@ |
35
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
128 n /= 10; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
129 } |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
130 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
131 - // Flip screen, increase frame count, wait |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
132 +#ifdef RECORD |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
133 + // Dump frame to file |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
134 + snprintf(videoFilename, sizeof(videoFilename), RECORD_VIDEO_FILE, engine.frameCount); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
135 + dmWritePNGImage(videoFilename, &image, &imageSpec); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
136 + |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
137 + // Render audio to another |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
138 + engineAudioCallback(NULL, audioBuf, audioBufSize); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
139 + audioSize += fwrite(audioBuf, sizeof(Uint8), audioBufSize, audioFile); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
140 +#endif |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
141 + |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
142 if (SDL_MUSTLOCK(engine.screen) != 0) |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
143 SDL_UnlockSurface(engine.screen); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
144 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
145 + // Flip screen, increase frame count, wait |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
146 engine.frameCount++; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
147 SDL_Flip(engine.screen); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
148 +#ifndef RECORD |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
149 SDL_Delay(20); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
150 +#endif |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
151 } |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
152 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
153 error_exit: |
38 | 154 @@ -1206,9 +1278,26 @@ |
35
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
155 if (engine.screen) |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
156 SDL_FreeSurface(engine.screen); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
157 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
158 +#ifdef RECORD |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
159 + if (audioFile != NULL) |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
160 + { |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
161 + // Write the correct WAV header |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
162 + if (fseek(audioFile, 0L, SEEK_SET) != 0) |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
163 + { |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
164 + dmError("Error rewinding to header position!\n"); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
165 + return 9; |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
166 + } |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
167 + |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
168 + dmWriteWAVHeader(audioFile, 16, engine.optAfmt.freq, engine.optAfmt.channels, audioSize / sizeof(Sint16)); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
169 + |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
170 + // Done! |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
171 + fclose(audioFile); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
172 + } |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
173 +#else |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
174 SDL_LockAudio(); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
175 SDL_PauseAudio(1); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
176 SDL_UnlockAudio(); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
177 +#endif |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
178 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
179 audio_close(); |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
180 |
38 | 181 diff -r 38b7583302c3 Makefile.gen |
182 --- a/Makefile.gen Tue Mar 19 02:55:25 2013 +0200 | |
183 +++ b/Makefile.gen Tue Mar 19 03:00:45 2013 +0200 | |
184 @@ -24,11 +24,10 @@ | |
185 ### Main demo | |
186 ### | |
35
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
187 $(OBJPATH)3x666.o: 3x666.c config.h 3xfont.h |
38 | 188 - $(CC) $(CFLAGS) -c -o $@ $< $(SDL_CFLAGS) -Idmlib/ |
189 + $(CC) $(CFLAGS) -c -o $@ $< $(SDL_CFLAGS) -Idmlib/ -DDM_USE_LIBPNG | |
35
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
190 |
38 | 191 -$(BINPATH)3x666$(EXEEXT): $(OBJPATH)3x666.o |
192 - $(CC) -o $@ $+ $(LDFLAGS) $(SDL_LDFLAGS) | |
193 - | |
35
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
194 +$(BINPATH)3x666$(EXEEXT): $(OBJPATH)3x666.o dmlib/unix/dmwav.o dmlib/unix/dmfile.o dmlib/unix/dmlib.o dmlib/unix/libgfx.o dmlib/unix/dmbstr.o |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
195 + $(CC) -o $@ $+ $(LDFLAGS) $(SDL_LDFLAGS) -lpng |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
196 |
b4c72c135f5b
Add a dmlib-based recording patch for archival purposes.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
197 ### |
38 | 198 ### Special targets |