Wing Commander II
Reconstructed Win32 source (1996)
Toggle main menu visibility
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 */
10
void
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));
41
GetPaletteEntry
(
42
(
short
)
GetViewportPixel
(destination,
43
destination->
left
,
44
destination->
top
),
45
destRgb);
46
WaitForVerticalBlankThunk
();
47
for
(i = 0; i < count; i++) {
48
GetPaletteEntry
(
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);
56
while
(
StepPaletteTransition
(
57
fadePalette, basePalette,
58
(
short
)(count * 3)) != 0) {
59
WaitForVerticalBlankThunk
();
60
for
(i = 0; i < count; i++) {
61
SetPaletteEntry
(
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
}
StepPaletteTransition
short StepPaletteTransition(short *current, const short *target, short componentCount)
Definition
fade.c:12
SetPaletteEntry
void SetPaletteEntry(short index, short *rgb)
Definition
gr.c:676
CollectActivePaletteIndices
short CollectActivePaletteIndices(Viewport *viewport, unsigned char *indices, short capacity)
Definition
usedcols.c:11
AllocateTaggedMemory
void * AllocateTaggedMemory(unsigned int size, short flags)
Definition
memapi.c:92
WaitForVerticalBlankThunk
void WaitForVerticalBlankThunk(void)
Definition
eventmgr.c:189
PanToScreen
void PanToScreen(Viewport *source, Viewport *destination)
Definition
pan.c:10
GetPaletteEntry
void GetPaletteEntry(short index, unsigned short *rgb)
Definition
gr.c:670
ReleasePacketHandle
void ReleasePacketHandle(void *handle)
Definition
memapi.c:108
GetViewportPixel
short GetViewportPixel(Viewport *viewport, short x, short y)
Definition
gr.c:1049
CopyViewportContents
void CopyViewportContents(Viewport *source, Viewport *destination)
Definition
gr.c:995
game.h
Shared Win32 declarations, types and library interfaces.
g_nSpacePaletteFadeMode
short g_nSpacePaletteFadeMode
Definition
palalloc.c:8
PaletteRgb
Definition
game_data.h:1356
Viewport
Definition
game.h:149
Viewport::left
short left
Definition
game.h:152
Viewport::top
short top
Definition
game.h:153
src
pan.c
Generated by
1.18.0