Wing Commander II
Reconstructed Win32 source (1996)
Toggle main menu visibility
Loading...
Searching...
No Matches
fade.c
Go to the documentation of this file.
1
/*
2
* Palette transition step.
3
*
4
* Retail object 0x4225A0-0x4228AF (link order; see docs/ORDER.md).
5
*/
6
#include "
game.h
"
7
8
short
g_nPaletteTransitionInitialise
= 1;
/* 0x0049305c */
9
#include <malloc.h>
10
11
/* Function start: 0x4225A0 */
12
short
StepPaletteTransition
(
short
*current,
13
const
short
*target,
14
short
componentCount)
15
{
16
short
colour;
17
short
difference;
18
short
previousCountdown;
19
20
if
(
g_nPaletteTransitionInitialise
!= 0) {
21
g_pPaletteTransitionAccumulator
=
22
AllocateTaggedMemory
((
unsigned
int
)(componentCount * 2), 0);
23
g_pPaletteTransitionDeltaPtr
=
24
AllocateTaggedMemory
((
unsigned
int
)(componentCount * 2), 0);
25
g_pPaletteTransitionDirectionRef
=
26
AllocateTaggedMemory
((
unsigned
int
)(componentCount * 2), 0);
27
if
(
g_pPaletteTransitionAccumulator
== 0 ||
28
g_pPaletteTransitionDeltaPtr
== 0 ||
29
g_pPaletteTransitionDirectionRef
== 0) {
30
if
(
g_pPaletteTransitionAccumulator
!= 0)
31
ReleasePacketHandle
(
g_pPaletteTransitionAccumulator
);
32
if
(
g_pPaletteTransitionDeltaPtr
!= 0)
33
ReleasePacketHandle
(
g_pPaletteTransitionDeltaPtr
);
34
if
(
g_pPaletteTransitionDirectionRef
!= 0)
35
ReleasePacketHandle
(
g_pPaletteTransitionDirectionRef
);
36
return
0;
37
}
38
39
g_2_nPaletteTransitionMaxDelta
= 0;
40
for
(colour = 0; colour < componentCount; colour++) {
41
difference = (short)(current[colour] - target[colour]);
42
if
(difference < 0) {
43
difference = (short)-difference;
44
g_pPaletteTransitionDirectionRef
[colour] = 1;
45
}
else
{
46
g_pPaletteTransitionDirectionRef
[colour] = -1;
47
}
48
g_pPaletteTransitionDeltaPtr
[colour] = difference;
49
if
(
g_2_nPaletteTransitionMaxDelta
< difference)
50
g_2_nPaletteTransitionMaxDelta
= difference;
51
}
52
53
difference = (short)(
g_2_nPaletteTransitionMaxDelta
/ 2);
54
for
(colour = 0; colour < componentCount; colour++)
55
g_pPaletteTransitionAccumulator
[colour] = difference;
56
g_nPaletteTransitionCountdownNumber
=
57
g_2_nPaletteTransitionMaxDelta
;
58
g_nPaletteTransitionInitialise
= 0;
59
}
60
61
previousCountdown =
g_nPaletteTransitionCountdownNumber
;
62
g_nPaletteTransitionCountdownNumber
--;
63
if
(previousCountdown == 0) {
64
ReleasePacketHandle
(
g_pPaletteTransitionAccumulator
);
65
ReleasePacketHandle
(
g_pPaletteTransitionDeltaPtr
);
66
ReleasePacketHandle
(
g_pPaletteTransitionDirectionRef
);
67
g_nPaletteTransitionInitialise
= 1;
68
return
0;
69
}
70
71
for
(colour = 0; colour < componentCount; colour++) {
72
g_pPaletteTransitionAccumulator
[colour] =
73
(short)(
g_pPaletteTransitionAccumulator
[colour] +
74
g_pPaletteTransitionDeltaPtr
[colour]);
75
if
(
g_pPaletteTransitionAccumulator
[colour] >
76
g_2_nPaletteTransitionMaxDelta
) {
77
g_pPaletteTransitionAccumulator
[colour] =
78
(short)(
g_pPaletteTransitionAccumulator
[colour] -
79
g_2_nPaletteTransitionMaxDelta
);
80
current[colour] =
81
(short)(current[colour] +
82
g_pPaletteTransitionDirectionRef
[colour]);
83
}
84
}
85
return
1;
86
}
87
88
/* Linker commons defined here. LINK lays a unit's commons out by the
89
* identifiers' hash keys, so these spellings follow the original addresses. */
90
short
*
g_pPaletteTransitionDirectionRef
;
/* 0x005d3010 */
91
short
*
g_pPaletteTransitionDeltaPtr
;
/* 0x005d3014 */
92
short
g_2_nPaletteTransitionMaxDelta
;
/* 0x005d3018 */
93
short
*
g_pPaletteTransitionAccumulator
;
/* 0x005d301c */
94
short
g_nPaletteTransitionCountdownNumber
;
/* 0x005d3020 */
StepPaletteTransition
short StepPaletteTransition(short *current, const short *target, short componentCount)
Definition
fade.c:12
AllocateTaggedMemory
void * AllocateTaggedMemory(unsigned int size, short flags)
Definition
memapi.c:92
ReleasePacketHandle
void ReleasePacketHandle(void *handle)
Definition
memapi.c:108
game.h
Shared Win32 declarations, types and library interfaces.
g_2_nPaletteTransitionMaxDelta
short g_2_nPaletteTransitionMaxDelta
Definition
fade.c:92
g_nPaletteTransitionCountdownNumber
short g_nPaletteTransitionCountdownNumber
Definition
fade.c:94
g_pPaletteTransitionAccumulator
short * g_pPaletteTransitionAccumulator
Definition
fade.c:93
g_pPaletteTransitionDirectionRef
short * g_pPaletteTransitionDirectionRef
Definition
fade.c:90
g_nPaletteTransitionInitialise
short g_nPaletteTransitionInitialise
Definition
fade.c:8
g_pPaletteTransitionDeltaPtr
short * g_pPaletteTransitionDeltaPtr
Definition
fade.c:91
src
fade.c
Generated by
1.18.0