aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--saga/actionmap.cpp18
-rw-r--r--saga/actor.cpp6
-rw-r--r--saga/animation.cpp211
-rw-r--r--saga/font.cpp18
-rw-r--r--saga/image.cpp10
-rw-r--r--saga/isomap.cpp36
6 files changed, 139 insertions, 160 deletions
diff --git a/saga/actionmap.cpp b/saga/actionmap.cpp
index 055a5100b5..6237d4eb03 100644
--- a/saga/actionmap.cpp
+++ b/saga/actionmap.cpp
@@ -66,10 +66,10 @@ int ActionMap::load(const byte * exmap_res, size_t exmap_res_len) {
assert(_initialized);
assert(exmap_res != NULL);
- MemoryReadStream *readS = new MemoryReadStream(exmap_res, exmap_res_len);
+ MemoryReadStream readS(exmap_res, exmap_res_len);
// Load exits
- exit_ct = readS->readSint16LE();
+ exit_ct = readS.readSint16LE();
if (exit_ct < 0) {
return R_FAILURE;
}
@@ -81,12 +81,12 @@ int ActionMap::load(const byte * exmap_res, size_t exmap_res_len) {
}
for (i = 0; i < exit_ct; i++) {
- exmap_entry[i].unknown00 = readS->readSint16LE();
- exmap_entry[i].unknown02 = readS->readSint16LE();
- exmap_entry[i].exit_scene = readS->readSint16LE();
- exmap_entry[i].unknown06 = readS->readSint16LE();
+ exmap_entry[i].unknown00 = readS.readSint16LE();
+ exmap_entry[i].unknown02 = readS.readSint16LE();
+ exmap_entry[i].exit_scene = readS.readSint16LE();
+ exmap_entry[i].unknown06 = readS.readSint16LE();
- exmap_entry[i].pt_count = readS->readSint16LE();
+ exmap_entry[i].pt_count = readS.readSint16LE();
if (exmap_entry[i].pt_count < 0) {
free(exmap_entry);
return R_FAILURE;
@@ -99,8 +99,8 @@ int ActionMap::load(const byte * exmap_res, size_t exmap_res_len) {
}
for (pt = 0; pt < exmap_entry[i].pt_count; pt++) {
- exmap_pt_tbl[pt].x = readS->readSint16LE();
- exmap_pt_tbl[pt].y = readS->readSint16LE();
+ exmap_pt_tbl[pt].x = readS.readSint16LE();
+ exmap_pt_tbl[pt].y = readS.readSint16LE();
}
exmap_entry[i].pt_tbl = exmap_pt_tbl;
diff --git a/saga/actor.cpp b/saga/actor.cpp
index a5b4d55b74..6646caeaef 100644
--- a/saga/actor.cpp
+++ b/saga/actor.cpp
@@ -669,7 +669,7 @@ int LoadActorSpriteIndex(R_ACTOR * actor, int si_rn, int *last_frame_p) {
debug(0, "Sprite resource contains %d sprite actions.", s_action_ct);
action_p = (R_ACTORACTION *)malloc(sizeof(R_ACTORACTION) * s_action_ct);
- MemoryReadStream *readS = new MemoryReadStream(res_p, res_len);
+ MemoryReadStream readS(res_p, res_len);
if (action_p == NULL) {
warning("Couldn't allocate memory for sprite actions");
@@ -682,8 +682,8 @@ int LoadActorSpriteIndex(R_ACTOR * actor, int si_rn, int *last_frame_p) {
for (i = 0; i < s_action_ct; i++) {
for (orient = 0; orient < 4; orient++) {
// Load all four orientations
- action_p[i].dir[orient].frame_index = readS->readUint16LE();
- action_p[i].dir[orient].frame_count = readS->readUint16LE();
+ action_p[i].dir[orient].frame_index = readS.readUint16LE();
+ action_p[i].dir[orient].frame_count = readS.readUint16LE();
if (action_p[i].dir[orient].frame_index > last_frame) {
last_frame = action_p[i].dir[orient].frame_index;
}
diff --git a/saga/animation.cpp b/saga/animation.cpp
index f9b95a0f63..468fe313f0 100644
--- a/saga/animation.cpp
+++ b/saga/animation.cpp
@@ -363,20 +363,19 @@ int Anim::getNumFrames(const byte *anim_resource, size_t anim_resource_len, uint
return R_FAILURE;
}
- MemoryReadStream *readS = new MemoryReadStream(anim_resource, anim_resource_len);
+ MemoryReadStream readS(anim_resource, anim_resource_len);
- ah.magic = readS->readUint16LE();
- ah.screen_w = readS->readUint16LE();
- ah.screen_h = readS->readUint16LE();
+ ah.magic = readS.readUint16LE();
+ ah.screen_w = readS.readUint16LE();
+ ah.screen_h = readS.readUint16LE();
- ah.unknown06 = readS->readByte();
- ah.unknown07 = readS->readByte();
- ah.nframes = readS->readByte();
+ ah.unknown06 = readS.readByte();
+ ah.unknown07 = readS.readByte();
+ ah.nframes = readS.readByte();
if (GAME_GetGameType() == R_GAMETYPE_IHNM) {
*n_frames = ah.nframes;
}
- delete readS;
if (ah.magic == 68) {
for (x = ah.nframes; x > 0; x--) {
@@ -426,23 +425,21 @@ int Anim::ITE_DecodeFrame(const byte *resdata, size_t resdata_len, size_t frame_
return R_FAILURE;
}
- MemoryReadStream *readS = new MemoryReadStream(resdata, resdata_len);
+ MemoryReadStream headerReadS(resdata, resdata_len);
// Read animation header
- ah.magic = readS->readUint16LE();
- ah.screen_w = readS->readUint16LE();
- ah.screen_h = readS->readUint16LE();
- ah.unknown06 = readS->readByte();
- ah.unknown07 = readS->readByte();
- ah.nframes = readS->readByte();
- ah.flags = readS->readByte();
- ah.unknown10 = readS->readByte();
- ah.unknown11 = readS->readByte();
+ ah.magic = headerReadS.readUint16LE();
+ ah.screen_w = headerReadS.readUint16LE();
+ ah.screen_h = headerReadS.readUint16LE();
+ ah.unknown06 = headerReadS.readByte();
+ ah.unknown07 = headerReadS.readByte();
+ ah.nframes = headerReadS.readByte();
+ ah.flags = headerReadS.readByte();
+ ah.unknown10 = headerReadS.readByte();
+ ah.unknown11 = headerReadS.readByte();
screen_w = ah.screen_w;
screen_h = ah.screen_h;
- delete readS;
-
if ((screen_w * screen_h) > buf_len) {
// Buffer argument is too small to hold decoded frame, abort.
warning("ITE_DecodeFrame: Buffer size inadequate");
@@ -450,13 +447,12 @@ int Anim::ITE_DecodeFrame(const byte *resdata, size_t resdata_len, size_t frame_
}
// Read frame header
- readS = new MemoryReadStream(resdata + frame_offset, resdata_len - frame_offset);
+ MemoryReadStream readS(resdata + frame_offset, resdata_len - frame_offset);
// Check for frame magic byte
- magic = readS->readByte();
+ magic = readS.readByte();
if (magic != SAGA_FRAME_HEADER_MAGIC) {
warning("ITE_DecodeFrame: Invalid frame offset");
- delete readS;
return R_FAILURE;
}
@@ -464,13 +460,13 @@ int Anim::ITE_DecodeFrame(const byte *resdata, size_t resdata_len, size_t frame_
// endian format, but the actual RLE encoded frame data,
// including the frame header, is in big endian format.
- fh.x_start = readS->readUint16BE();
- fh.y_start = readS->readByte();
- readS->readByte(); /* Skip pad byte */
- fh.x_pos = readS->readUint16BE();
- fh.y_pos = readS->readUint16BE();
- fh.width = readS->readUint16BE();
- fh.height = readS->readUint16BE();
+ fh.x_start = readS.readUint16BE();
+ fh.y_start = readS.readByte();
+ readS.readByte(); /* Skip pad byte */
+ fh.x_pos = readS.readUint16BE();
+ fh.y_pos = readS.readUint16BE();
+ fh.width = readS.readUint16BE();
+ fh.height = readS.readUint16BE();
x_start = fh.x_start;
y_start = fh.y_start;
@@ -480,12 +476,12 @@ int Anim::ITE_DecodeFrame(const byte *resdata, size_t resdata_len, size_t frame_
// Begin RLE decompression to output buffer
do {
- mark_byte = readS->readByte();
+ mark_byte = readS.readByte();
switch (mark_byte) {
case 0x10: // Long Unencoded Run
- runcount = readS->readSint16BE();
+ runcount = readS.readSint16BE();
for (i = 0; i < runcount; i++) {
- data_byte = readS->readByte();
+ data_byte = readS.readByte();
if (data_byte != 0) {
*write_p = data_byte;
}
@@ -494,27 +490,26 @@ int Anim::ITE_DecodeFrame(const byte *resdata, size_t resdata_len, size_t frame_
continue;
break;
case 0x20: // Long encoded run
- runcount = readS->readSint16BE();
- data_byte = readS->readByte();
+ runcount = readS.readSint16BE();
+ data_byte = readS.readByte();
for (i = 0; i < runcount; i++) {
*write_p++ = data_byte;
}
continue;
break;
case 0x2F: // End of row
- x_vector = readS->readSint16BE();
- new_row = readS->readByte();
+ x_vector = readS.readSint16BE();
+ new_row = readS.readByte();
// Set write pointer to the new draw origin
write_p = buf + ((y_start + new_row) * screen_w) + x_start + x_vector;
continue;
break;
case 0x30: // Reposition command
- x_vector = readS->readSint16BE();
+ x_vector = readS.readSint16BE();
write_p += x_vector;
continue;
break;
case 0x3F: // End of frame marker
- delete readS;
return R_SUCCESS;
break;
default:
@@ -534,7 +529,7 @@ int Anim::ITE_DecodeFrame(const byte *resdata, size_t resdata_len, size_t frame_
case 0x80: // 1000 0000
// Run of compressed data
runcount = param_ch + 1;
- data_byte = readS->readByte();
+ data_byte = readS.readByte();
for (i = 0; i < runcount; i++) {
*write_p++ = data_byte;
}
@@ -544,7 +539,7 @@ int Anim::ITE_DecodeFrame(const byte *resdata, size_t resdata_len, size_t frame_
// Uncompressed run
runcount = param_ch + 1;
for (i = 0; i < runcount; i++) {
- data_byte = readS->readByte();
+ data_byte = readS.readByte();
if (data_byte != 0) {
*write_p = data_byte;
}
@@ -555,13 +550,11 @@ int Anim::ITE_DecodeFrame(const byte *resdata, size_t resdata_len, size_t frame_
default:
// Unknown marker found - abort
warning("ITE_DecodeFrame: Invalid RLE marker encountered");
- delete readS;
return R_FAILURE;
break;
}
} while (mark_byte != 63); // end of frame marker
- delete readS;
return R_SUCCESS;
}
@@ -583,7 +576,7 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
size_t in_ch_offset;
- MemoryReadStream *readS = new MemoryReadStream(thisf_p, thisf_len);
+ MemoryReadStream readS(thisf_p, thisf_len);
byte *outbuf_p = decode_buf;
byte *outbuf_endp = (decode_buf + decode_buf_len) - 1;
@@ -596,8 +589,8 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
*nextf_p = NULL;
for (; cont_flag; decoded_data = 1) {
- in_ch_offset = readS->pos();
- in_ch = readS->readByte();
+ in_ch_offset = readS.pos();
+ in_ch = readS.readByte();
switch (in_ch) {
case 0x0F: // 15: Frame header
{
@@ -608,18 +601,18 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
int param5;
int param6;
- if (thisf_len - readS->pos() < 13) {
+ if (thisf_len - readS.pos() < 13) {
warning("0x%02X: Input buffer underrun", in_ch);
return R_FAILURE;
}
- param1 = readS->readUint16BE();
- param2 = readS->readUint16BE();
- readS->readByte(); // skip 1?
- param3 = readS->readUint16BE();
- param4 = readS->readUint16BE();
- param5 = readS->readUint16BE();
- param6 = readS->readUint16BE();
+ param1 = readS.readUint16BE();
+ param2 = readS.readUint16BE();
+ readS.readByte(); // skip 1?
+ param3 = readS.readUint16BE();
+ param4 = readS.readUint16BE();
+ param5 = readS.readUint16BE();
+ param6 = readS.readUint16BE();
x_origin = param1;
y_origin = param2;
@@ -629,7 +622,6 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
if (outbuf_p > outbuf_endp) {
warning("0x%02X: (0x%X) Invalid output position. (x: %d, y: %d)",
in_ch, in_ch_offset, x_origin, y_origin);
- delete readS;
return R_FAILURE;
}
@@ -638,20 +630,18 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
}
break;
case 0x10: // Long Unencoded Run
- runcount = readS->readSint16BE();
- if (thisf_len - readS->pos() < runcount) {
+ runcount = readS.readSint16BE();
+ if (thisf_len - readS.pos() < runcount) {
warning("0x%02X: Input buffer underrun", in_ch);
- delete readS;
return R_FAILURE;
}
if (outbuf_remain < runcount) {
warning("0x%02X: Output buffer overrun", in_ch);
- delete readS;
return R_FAILURE;
}
for (c = 0; c < runcount; c++) {
- data_pixel = readS->readByte();
+ data_pixel = readS.readByte();
if (data_pixel != 0) {
*outbuf_p = data_pixel;
}
@@ -662,26 +652,24 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
continue;
break;
case 0x1F: // 31: Unusued?
- if (thisf_len - readS->pos() < 3) {
+ if (thisf_len - readS.pos() < 3) {
warning("0x%02X: Input buffer underrun", in_ch);
- delete readS;
return R_FAILURE;
}
- readS->readByte();
- readS->readByte();
- readS->readByte();
+ readS.readByte();
+ readS.readByte();
+ readS.readByte();
continue;
break;
case 0x20: // Long compressed run
- if (thisf_len - readS->pos() <= 3) {
+ if (thisf_len - readS.pos() <= 3) {
warning("0x%02X: Input buffer underrun", in_ch);
- delete readS;
return R_FAILURE;
}
- runcount = readS->readSint16BE();
- data_pixel = readS->readByte();
+ runcount = readS.readSint16BE();
+ data_pixel = readS.readByte();
for (c = 0; c < runcount; c++) {
*outbuf_p++ = data_pixel;
@@ -692,29 +680,26 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
break;
case 0x2F: // End of row
- if (thisf_len - readS->pos() <= 4) {
- delete readS;
+ if (thisf_len - readS.pos() <= 4) {
return R_FAILURE;
}
- x_vector = readS->readSint16BE();
- new_row = readS->readSint16BE();
+ x_vector = readS.readSint16BE();
+ new_row = readS.readSint16BE();
outbuf_p = decode_buf + ((y_origin + new_row) * di.logical_w) + x_origin + x_vector;
outbuf_remain = (outbuf_endp - outbuf_p) + 1;
continue;
break;
case 0x30: // Reposition command
- if (thisf_len - readS->pos() < 2) {
- delete readS;
+ if (thisf_len - readS.pos() < 2) {
return R_FAILURE;
}
- x_vector = readS->readSint16BE();
+ x_vector = readS.readSint16BE();
if (((x_vector > 0) && ((size_t) x_vector > outbuf_remain)) || (-x_vector > outbuf_p - decode_buf)) {
warning("0x30: Invalid x_vector");
- delete readS;
return R_FAILURE;
}
@@ -725,9 +710,9 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
case 0x3F: // 68: Frame end marker
debug(1, "0x3F: Frame end marker");
- if (decoded_data && (thisf_len - readS->pos() > 0)) {
- *nextf_p = thisf_p + readS->pos();
- *nextf_len = thisf_len - readS->pos();
+ if (decoded_data && (thisf_len - readS.pos() > 0)) {
+ *nextf_p = thisf_p + readS.pos();
+ *nextf_len = thisf_len - readS.pos();
} else {
*nextf_p = NULL;
*nextf_len = 0;
@@ -748,7 +733,6 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
case 0xC0: // Run of empty pixels
runcount = param_ch + 1;
if (outbuf_remain < runcount) {
- delete readS;
return R_FAILURE;
}
@@ -758,12 +742,11 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
break;
case 0x80: // Run of compressed data
runcount = param_ch + 1;
- if ((outbuf_remain < runcount) || (thisf_len - readS->pos() <= 1)) {
- delete readS;
+ if ((outbuf_remain < runcount) || (thisf_len - readS.pos() <= 1)) {
return R_FAILURE;
}
- data_pixel = readS->readByte();
+ data_pixel = readS.readByte();
for (c = 0; c < runcount; c++) {
*outbuf_p++ = data_pixel;
@@ -774,13 +757,12 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
break;
case 0x40: // Uncompressed run
runcount = param_ch + 1;
- if ((outbuf_remain < runcount) || (thisf_len - readS->pos() < runcount)) {
- delete readS;
+ if ((outbuf_remain < runcount) || (thisf_len - readS.pos() < runcount)) {
return R_FAILURE;
}
for (c = 0; c < runcount; c++) {
- data_pixel = readS->readByte();
+ data_pixel = readS.readByte();
if (data_pixel != 0) {
*outbuf_p = data_pixel;
}
@@ -796,7 +778,6 @@ int Anim::IHNM_DecodeFrame(byte *decode_buf, size_t decode_buf_len, const byte *
break;
}
}
- delete readS;
return R_SUCCESS;
}
@@ -818,18 +799,18 @@ int Anim::getFrameOffset(const byte *resdata, size_t resdata_len, uint16 find_fr
return R_FAILURE;
}
- MemoryReadStream *readS = new MemoryReadStream(resdata, resdata_len);
+ MemoryReadStream readS(resdata, resdata_len);
// Read animation header
- ah.magic = readS->readUint16LE();
- ah.screen_w = readS->readUint16LE();
- ah.screen_h = readS->readUint16LE();
- ah.unknown06 = readS->readByte();
- ah.unknown07 = readS->readByte();
- ah.nframes = readS->readByte();
- ah.flags = readS->readByte();
- ah.unknown10 = readS->readByte();
- ah.unknown11 = readS->readByte();
+ ah.magic = readS.readUint16LE();
+ ah.screen_w = readS.readUint16LE();
+ ah.screen_h = readS.readUint16LE();
+ ah.unknown06 = readS.readByte();
+ ah.unknown07 = readS.readByte();
+ ah.nframes = readS.readByte();
+ ah.flags = readS.readByte();
+ ah.unknown10 = readS.readByte();
+ ah.unknown11 = readS.readByte();
num_frames = ah.nframes;
@@ -838,48 +819,47 @@ int Anim::getFrameOffset(const byte *resdata, size_t resdata_len, uint16 find_fr
}
for (current_frame = 1; current_frame < find_frame; current_frame++) {
- magic = readS->readByte();
+ magic = readS.readByte();
if (magic != SAGA_FRAME_HEADER_MAGIC) {
// Frame sync failure. Magic Number not found
- delete readS;
return R_FAILURE;
}
// skip header
for (i = 0; i < SAGA_FRAME_HEADER_LEN; i++)
- readS->readByte();
+ readS.readByte();
// For some strange reason, the animation header is in little
// endian format, but the actual RLE encoded frame data,
// including the frame header, is in big endian format. */
do {
- mark_byte = readS->readByte();
+ mark_byte = readS.readByte();
switch (mark_byte) {
case 0x3F: // End of frame marker
continue;
break;
case 0x30: // Reposition command
- readS->readByte();
- readS->readByte();
+ readS.readByte();
+ readS.readByte();
continue;
break;
case 0x2F: // End of row marker
- readS->readByte();
- readS->readByte();
- readS->readByte();
+ readS.readByte();
+ readS.readByte();
+ readS.readByte();
continue;
break;
case 0x20: // Long compressed run marker
- readS->readByte();
- readS->readByte();
- readS->readByte();
+ readS.readByte();
+ readS.readByte();
+ readS.readByte();
continue;
break;
case 0x10: // (16) 0001 0000
// Long Uncompressed Run
- runcount = readS->readSint16BE();
+ runcount = readS.readSint16BE();
for (i = 0; i < runcount; i++)
- readS->readByte();
+ readS.readByte();
continue;
break;
default:
@@ -895,14 +875,14 @@ int Anim::getFrameOffset(const byte *resdata, size_t resdata_len, uint16 find_fr
break;
case 0x80:
// Run of compressed data
- readS->readByte(); // Skip data byte
+ readS.readByte(); // Skip data byte
continue;
break;
case 0x40:
// Uncompressed run
runcount = (mark_byte & 0x3f) + 1;
for (i = 0; i < runcount; i++)
- readS->readByte();
+ readS.readByte();
continue;
break;
default:
@@ -913,8 +893,7 @@ int Anim::getFrameOffset(const byte *resdata, size_t resdata_len, uint16 find_fr
} while (mark_byte != 63);
}
- *frame_offset_p = readS->pos();
- delete readS;
+ *frame_offset_p = readS.pos();
return R_SUCCESS;
}
diff --git a/saga/font.cpp b/saga/font.cpp
index 42936fd3c0..02e1a81973 100644
--- a/saga/font.cpp
+++ b/saga/font.cpp
@@ -118,7 +118,7 @@ int FONT_Load(uint32 font_rn, int font_id) {
FontModule.err_str = "Invalid font length.";
}
- MemoryReadStream *readS = new MemoryReadStream(fontres_p, fontres_len);
+ MemoryReadStream readS(fontres_p, fontres_len);
// Create new font structure
font = (R_FONT *)malloc(sizeof *font);
@@ -128,9 +128,9 @@ int FONT_Load(uint32 font_rn, int font_id) {
}
// Read font header
- fh.c_height = readS->readUint16LE();
- fh.c_width = readS->readUint16LE();
- fh.row_length = readS->readUint16LE();
+ fh.c_height = readS.readUint16LE();
+ fh.c_width = readS.readUint16LE();
+ fh.row_length = readS.readUint16LE();
debug(1, "FONT_Load(): Reading font resource...");
@@ -152,23 +152,23 @@ int FONT_Load(uint32 font_rn, int font_id) {
normal_font->hdr.row_length = fh.row_length;
for (c = 0; c < R_FONT_CHARCOUNT; c++) {
- normal_font->fce[c].index = readS->readUint16LE();
+ normal_font->fce[c].index = readS.readUint16LE();
}
for (c = 0; c < R_FONT_CHARCOUNT; c++) {
- nbits = normal_font->fce[c].width = readS->readByte();
+ nbits = normal_font->fce[c].width = readS.readByte();
normal_font->fce[c].byte_width = GetByteLen(nbits);
}
for (c = 0; c < R_FONT_CHARCOUNT; c++) {
- normal_font->fce[c].flag = readS->readByte();
+ normal_font->fce[c].flag = readS.readByte();
}
for (c = 0; c < R_FONT_CHARCOUNT; c++) {
- normal_font->fce[c].tracking = readS->readByte();
+ normal_font->fce[c].tracking = readS.readByte();
}
- if (readS->pos() != R_FONT_DESCSIZE) {
+ if (readS.pos() != R_FONT_DESCSIZE) {
warning("Invalid font resource size.");
return R_FAILURE;
}
diff --git a/saga/image.cpp b/saga/image.cpp
index d8b09f6f8c..a3978c43d4 100644
--- a/saga/image.cpp
+++ b/saga/image.cpp
@@ -64,12 +64,12 @@ int SagaEngine::decodeBGImage(const byte *image_data, size_t image_size,
return R_FAILURE;
}
- MemoryReadStream *readS = new MemoryReadStream(image_data, image_size);
+ MemoryReadStream readS(image_data, image_size);
- hdr.width = readS->readUint16LE();
- hdr.height = readS->readUint16LE();
- hdr.unknown4 = readS->readUint16LE();
- hdr.unknown6 = readS->readUint16LE();
+ hdr.width = readS.readUint16LE();
+ hdr.height = readS.readUint16LE();
+ hdr.unknown4 = readS.readUint16LE();
+ hdr.unknown6 = readS.readUint16LE();
RLE_data_ptr = image_data + SAGA_IMAGE_DATA_OFFSET;
RLE_data_len = image_size - SAGA_IMAGE_DATA_OFFSET;
diff --git a/saga/isomap.cpp b/saga/isomap.cpp
index e4e7e36d14..65f7b96e1e 100644
--- a/saga/isomap.cpp
+++ b/saga/isomap.cpp
@@ -49,14 +49,14 @@ int ISOMAP_LoadTileset(const byte *tileres_p, size_t tileres_len) {
assert((IsoModule.init) && (!IsoModule.tiles_loaded));
assert((tileres_p != NULL) && (tileres_len > 0));
- MemoryReadStream *readS = new MemoryReadStream(tileres_p, tileres_len);
+ MemoryReadStream readS(tileres_p, tileres_len);
- readS->readUint16LE(); // skip
- first_entry.tile_offset = readS->readUint16LE();
+ readS.readUint16LE(); // skip
+ first_entry.tile_offset = readS.readUint16LE();
IsoModule.tile_ct = first_entry.tile_offset / SAGA_ISOTILE_ENTRY_LEN;
- readS->seek(0);
+ readS.seek(0);
tile_tbl = (R_ISOTILE_ENTRY *)malloc(IsoModule.tile_ct * sizeof *tile_tbl);
if (tile_tbl == NULL) {
@@ -64,11 +64,11 @@ int ISOMAP_LoadTileset(const byte *tileres_p, size_t tileres_len) {
}
for (i = 0; i < IsoModule.tile_ct; i++) {
- tile_tbl[i].tile_h = readS->readByte();
- tile_tbl[i].unknown01 = readS->readByte();
- tile_tbl[i].tile_offset = readS->readUint16LE();
- tile_tbl[i].unknown04 = readS->readSint16LE();
- tile_tbl[i].unknown06 = readS->readSint16LE();
+ tile_tbl[i].tile_h = readS.readByte();
+ tile_tbl[i].unknown01 = readS.readByte();
+ tile_tbl[i].tile_offset = readS.readUint16LE();
+ tile_tbl[i].unknown04 = readS.readSint16LE();
+ tile_tbl[i].unknown06 = readS.readSint16LE();
}
IsoModule.tiles_loaded = 1;
@@ -88,7 +88,7 @@ int ISOMAP_LoadMetaTileset(const byte *mtileres_p, size_t mtileres_len) {
assert(IsoModule.init);
assert((mtileres_p != NULL) && (mtileres_len > 0));
- MemoryReadStream *readS = new MemoryReadStream(mtileres_p, mtileres_len);
+ MemoryReadStream readS(mtileres_p, mtileres_len);
mtile_ct = mtileres_len / SAGA_METATILE_ENTRY_LEN;
mtile_tbl = (R_ISO_METATILE_ENTRY *)malloc(mtile_ct * sizeof *mtile_tbl);
@@ -97,13 +97,13 @@ int ISOMAP_LoadMetaTileset(const byte *mtileres_p, size_t mtileres_len) {
}
for (ct = 0; ct < mtile_ct; ct++) {
- mtile_tbl[ct].mtile_n = readS->readUint16LE();
- mtile_tbl[ct].unknown02 = readS->readSint16LE();
- mtile_tbl[ct].unknown04 = readS->readSint16LE();
- mtile_tbl[ct].unknown06 = readS->readSint16LE();
+ mtile_tbl[ct].mtile_n = readS.readUint16LE();
+ mtile_tbl[ct].unknown02 = readS.readSint16LE();
+ mtile_tbl[ct].unknown04 = readS.readSint16LE();
+ mtile_tbl[ct].unknown06 = readS.readSint16LE();
for (i = 0; i < SAGA_METATILE_SIZE; i++) {
- mtile_tbl[ct].tile_tbl[i] = readS->readUint16LE();
+ mtile_tbl[ct].tile_tbl[i] = readS.readUint16LE();
}
}
@@ -120,11 +120,11 @@ int ISOMAP_LoadMetaTileset(const byte *mtileres_p, size_t mtileres_len) {
int ISOMAP_LoadMetamap(const byte *mm_res_p, size_t mm_res_len) {
int i;
- MemoryReadStream *readS = new MemoryReadStream(mm_res_p, mm_res_len);
- IsoModule.metamap_n = readS->readSint16LE();
+ MemoryReadStream readS(mm_res_p, mm_res_len);
+ IsoModule.metamap_n = readS.readSint16LE();
for (i = 0; i < SAGA_METAMAP_SIZE; i++) {
- IsoModule.metamap_tbl[i] = readS->readUint16LE();
+ IsoModule.metamap_tbl[i] = readS.readUint16LE();
}
IsoModule.mm_res_p = mm_res_p;