Wing Commander II
Reconstructed Win32 source (1996)
Loading...
Searching...
No Matches
pan.c
Go to the documentation of this file.
1/*
2 * Pans between screens.
3 *
4 * Retail object 0x433410-0x43368F (link order; see docs/ORDER.md).
5 */
6#include "game.h"
7
8#pragma function(memset)
9/* Function start: 0x433410 */
10void PanToScreen(Viewport *source, Viewport *destination)
11{
12 unsigned char *indices;
13 short count;
14 short i;
15 unsigned short destRgb[3];
16 short *basePalette;
17 short *fadePalette;
18
19 if (g_nSpacePaletteFadeMode == 0x13) {
20 indices = AllocateTaggedMemory(256, 0);
21 if (indices == 0)
22 return;
23 memset(indices, 0, 256);
24 count = CollectActivePaletteIndices(source, indices, 256);
25 basePalette = AllocateTaggedMemory(
26 (unsigned int)(count * 6), 0);
27 fadePalette = AllocateTaggedMemory(
28 (unsigned int)(count * 6), 0);
29 if (basePalette == 0 || fadePalette == 0) {
30 ReleasePacketHandle(indices);
31 if (basePalette != 0)
32 ReleasePacketHandle(basePalette);
33 if (fadePalette != 0)
34 ReleasePacketHandle(fadePalette);
35 return;
36 }
37 memset(basePalette, 0,
38 (unsigned int)(count * 6));
39 memset(fadePalette, 0,
40 (unsigned int)(count * 6));
42 (short)GetViewportPixel(destination,
43 destination->left,
44 destination->top),
45 destRgb);
47 for (i = 0; i < count; i++) {
49 (short)indices[i],
50 (unsigned short *)&basePalette[i * 3]);
51 SetPaletteEntry((short)indices[i], (short *)destRgb);
52 *(PaletteRgb *)&fadePalette[i * 3] =
53 *(PaletteRgb *)destRgb;
54 }
55 CopyViewportContents(source, destination);
57 fadePalette, basePalette,
58 (short)(count * 3)) != 0) {
60 for (i = 0; i < count; i++) {
62 (short)indices[i],
63 &fadePalette[i * 3]);
64 }
65 }
66 ReleasePacketHandle(fadePalette);
67 ReleasePacketHandle(basePalette);
68 ReleasePacketHandle(indices);
69 } else {
70 CopyViewportContents(source, destination);
71 }
72}
short StepPaletteTransition(short *current, const short *target, short componentCount)
Definition fade.c:12
void SetPaletteEntry(short index, short *rgb)
Definition gr.c:676
short CollectActivePaletteIndices(Viewport *viewport, unsigned char *indices, short capacity)
Definition usedcols.c:11
void * AllocateTaggedMemory(unsigned int size, short flags)
Definition memapi.c:92
void WaitForVerticalBlankThunk(void)
Definition eventmgr.c:189
void PanToScreen(Viewport *source, Viewport *destination)
Definition pan.c:10
void GetPaletteEntry(short index, unsigned short *rgb)
Definition gr.c:670
void ReleasePacketHandle(void *handle)
Definition memapi.c:108
short GetViewportPixel(Viewport *viewport, short x, short y)
Definition gr.c:1049
void CopyViewportContents(Viewport *source, Viewport *destination)
Definition gr.c:995
Shared Win32 declarations, types and library interfaces.
short g_nSpacePaletteFadeMode
Definition palalloc.c:8
short left
Definition game.h:152
short top
Definition game.h:153