File tree Expand file tree Collapse file tree 4 files changed +9
-5
lines changed Expand file tree Collapse file tree 4 files changed +9
-5
lines changed Original file line number Diff line number Diff line change @@ -49,7 +49,7 @@ struct AnimHeader2Struct {
49
49
uint16 field_E;
50
50
};
51
51
52
- AnimData animDataTable[NUM_MAX_ANIMDATA] ;
52
+ Common::Array< AnimData> animDataTable;
53
53
54
54
static const AnimDataEntry transparencyData[] = {
55
55
{" ALPHA" , 0xF },
Original file line number Diff line number Diff line change @@ -150,7 +150,7 @@ class AnimData {
150
150
151
151
#define NUM_MAX_ANIMDATA 255
152
152
153
- extern AnimData animDataTable[NUM_MAX_ANIMDATA] ;
153
+ extern Common::Array< AnimData> animDataTable;
154
154
155
155
void freeAnimDataTable (void );
156
156
void freeAnimDataRange (byte startIdx, byte numIdx);
Original file line number Diff line number Diff line change @@ -128,6 +128,10 @@ void CineEngine::initialize() {
128
128
objectTable.resize (NUM_MAX_OBJECT);
129
129
resetObjectTable ();
130
130
131
+ // Resize animation data table to its correct size and reset all its elements
132
+ animDataTable.resize (NUM_MAX_ANIMDATA);
133
+ freeAnimDataTable ();
134
+
131
135
_timerDelayMultiplier = 12 ; // Set default speed
132
136
setupOpcodes ();
133
137
Original file line number Diff line number Diff line change @@ -436,7 +436,7 @@ void FWRenderer::renderOverlay(const Common::List<overlay>::iterator &it) {
436
436
switch (it->type ) {
437
437
// color sprite
438
438
case 0 :
439
- sprite = animDataTable + objectTable[it->objIdx ].frame ;
439
+ sprite = & animDataTable[ objectTable[it->objIdx ].frame ] ;
440
440
len = sprite->_realWidth * sprite->_height ;
441
441
mask = new byte[len];
442
442
memcpy (mask, sprite->mask (), len);
@@ -1074,7 +1074,7 @@ void OSRenderer::renderOverlay(const Common::List<overlay>::iterator &it) {
1074
1074
if (objectTable[it->objIdx ].frame < 0 ) {
1075
1075
break ;
1076
1076
}
1077
- sprite = animDataTable + objectTable[it->objIdx ].frame ;
1077
+ sprite = & animDataTable[ objectTable[it->objIdx ].frame ] ;
1078
1078
len = sprite->_realWidth * sprite->_height ;
1079
1079
mask = new byte[len];
1080
1080
generateMask (sprite->data (), mask, len, objectTable[it->objIdx ].part );
@@ -1108,7 +1108,7 @@ void OSRenderer::renderOverlay(const Common::List<overlay>::iterator &it) {
1108
1108
assert (it->objIdx < NUM_MAX_OBJECT);
1109
1109
var5 = it->x ; // A global variable updated here!
1110
1110
obj = &objectTable[it->objIdx ];
1111
- sprite = animDataTable + obj->frame ;
1111
+ sprite = & animDataTable[ obj->frame ] ;
1112
1112
1113
1113
if (obj->frame < 0 || it->x < 0 || it->x > 8 || !_bgTable[it->x ].bg || sprite->_bpp != 1 ) {
1114
1114
break ;
You can’t perform that action at this time.
0 commit comments