[Scummvm-git-logs] scummvm master -> 426af9fe5e139a5aac5df289e6792fb4be017eef

mduggan mgithub at guarana.org
Sat Apr 4 07:36:45 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
426af9fe5e ULTIMA8: Rename DataSource methods to match Common Streams


Commit: 426af9fe5e139a5aac5df289e6792fb4be017eef
    https://github.com/scummvm/scummvm/commit/426af9fe5e139a5aac5df289e6792fb4be017eef
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-04-04T16:29:33+09:00

Commit Message:
ULTIMA8: Rename DataSource methods to match Common Streams

This is the first and safest step in removing IDataSource and ODataSource
entirely.  For now this just renames all the functions, and removes a few
unused functions. It should be safe as none of the types are changing.

Changed paths:
    engines/ultima/ultima8/audio/audio_process.cpp
    engines/ultima/ultima8/audio/music_process.cpp
    engines/ultima/ultima8/conf/ini_file.cpp
    engines/ultima/ultima8/convert/convert_shape.cpp
    engines/ultima/ultima8/convert/u8/convert_usecode_u8.h
    engines/ultima/ultima8/filesys/flex_file.cpp
    engines/ultima/ultima8/filesys/idata_source.h
    engines/ultima/ultima8/filesys/odata_source.h
    engines/ultima/ultima8/filesys/savegame.cpp
    engines/ultima/ultima8/filesys/u8_save_file.cpp
    engines/ultima/ultima8/games/game_data.cpp
    engines/ultima/ultima8/games/remorse_game.cpp
    engines/ultima/ultima8/games/u8_game.cpp
    engines/ultima/ultima8/graphics/anim_dat.cpp
    engines/ultima/ultima8/graphics/frame_id.cpp
    engines/ultima/ultima8/graphics/gump_shape_archive.cpp
    engines/ultima/ultima8/graphics/inverter_process.cpp
    engines/ultima/ultima8/graphics/palette.cpp
    engines/ultima/ultima8/graphics/palette_fader_process.cpp
    engines/ultima/ultima8/graphics/shape.cpp
    engines/ultima/ultima8/graphics/skf_player.cpp
    engines/ultima/ultima8/graphics/type_flags.cpp
    engines/ultima/ultima8/graphics/wpn_ovlay_dat.cpp
    engines/ultima/ultima8/gumps/bark_gump.cpp
    engines/ultima/ultima8/gumps/container_gump.cpp
    engines/ultima/ultima8/gumps/gump.cpp
    engines/ultima/ultima8/gumps/gump_notify_process.cpp
    engines/ultima/ultima8/gumps/paperdoll_gump.cpp
    engines/ultima/ultima8/gumps/widgets/button_widget.cpp
    engines/ultima/ultima8/gumps/widgets/text_widget.cpp
    engines/ultima/ultima8/kernel/delay_process.cpp
    engines/ultima/ultima8/kernel/kernel.cpp
    engines/ultima/ultima8/kernel/object.cpp
    engines/ultima/ultima8/kernel/object_manager.cpp
    engines/ultima/ultima8/kernel/process.cpp
    engines/ultima/ultima8/misc/id_man.cpp
    engines/ultima/ultima8/ultima8.cpp
    engines/ultima/ultima8/usecode/bit_set.cpp
    engines/ultima/ultima8/usecode/uc_list.cpp
    engines/ultima/ultima8/usecode/uc_machine.cpp
    engines/ultima/ultima8/usecode/uc_process.cpp
    engines/ultima/ultima8/usecode/uc_stack.cpp
    engines/ultima/ultima8/world/actors/actor.cpp
    engines/ultima/ultima8/world/actors/actor_anim_process.cpp
    engines/ultima/ultima8/world/actors/ambush_process.cpp
    engines/ultima/ultima8/world/actors/animation_tracker.cpp
    engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
    engines/ultima/ultima8/world/actors/combat_process.cpp
    engines/ultima/ultima8/world/actors/grant_peace_process.cpp
    engines/ultima/ultima8/world/actors/heal_process.cpp
    engines/ultima/ultima8/world/actors/loiter_process.cpp
    engines/ultima/ultima8/world/actors/main_actor.cpp
    engines/ultima/ultima8/world/actors/pathfinder_process.cpp
    engines/ultima/ultima8/world/actors/quick_avatar_mover_process.cpp
    engines/ultima/ultima8/world/actors/scheduler_process.cpp
    engines/ultima/ultima8/world/actors/targeted_anim_process.cpp
    engines/ultima/ultima8/world/actors/teleport_to_egg_process.cpp
    engines/ultima/ultima8/world/camera_process.cpp
    engines/ultima/ultima8/world/container.cpp
    engines/ultima/ultima8/world/create_item_process.cpp
    engines/ultima/ultima8/world/current_map.cpp
    engines/ultima/ultima8/world/egg.cpp
    engines/ultima/ultima8/world/fireball_process.cpp
    engines/ultima/ultima8/world/gravity_process.cpp
    engines/ultima/ultima8/world/item.cpp
    engines/ultima/ultima8/world/map.cpp
    engines/ultima/ultima8/world/map_glob.cpp
    engines/ultima/ultima8/world/split_item_process.cpp
    engines/ultima/ultima8/world/sprite_process.cpp
    engines/ultima/ultima8/world/world.cpp


diff --git a/engines/ultima/ultima8/audio/audio_process.cpp b/engines/ultima/ultima8/audio/audio_process.cpp
index fffd9ae86c..d76c59dbc4 100644
--- a/engines/ultima/ultima8/audio/audio_process.cpp
+++ b/engines/ultima/ultima8/audio/audio_process.cpp
@@ -160,19 +160,19 @@ bool AudioProcess::continueSpeech(SampleInfo &si) {
 void AudioProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write1(static_cast<uint8>(_sampleInfo.size()));
+	ods->writeByte(static_cast<uint8>(_sampleInfo.size()));
 
 	Std::list<SampleInfo>::iterator it;
 	for (it = _sampleInfo.begin(); it != _sampleInfo.end(); ++it) {
-		ods->write2(it->_sfxNum);
-		ods->write2(it->_priority);
-		ods->write2(it->_objId);
-		ods->write2(it->_loops);
-		ods->write4(it->_pitchShift);
-		ods->write2(it->_volume);
+		ods->writeUint16LE(it->_sfxNum);
+		ods->writeUint16LE(it->_priority);
+		ods->writeUint16LE(it->_objId);
+		ods->writeUint16LE(it->_loops);
+		ods->writeUint32LE(it->_pitchShift);
+		ods->writeUint16LE(it->_volume);
 
 		if (it->_sfxNum == -1) { // Speech
-			ods->write4(static_cast<uint32>(it->_barked.size()));
+			ods->writeUint32LE(static_cast<uint32>(it->_barked.size()));
 			ods->write(it->_barked.c_str(), static_cast<uint32>(it->_barked.size()));
 		}
 	}
@@ -181,15 +181,15 @@ void AudioProcess::saveData(ODataSource *ods) {
 bool AudioProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	uint32 count = ids->read1();
+	uint32 count = ids->readByte();
 
 	while (count--) {
-		int16 sfxNum = ids->read2();
-		int16 priority = ids->read2();
-		int16 objId = ids->read2();
-		int16 loops = ids->read2();
-		uint32 pitchShift = ids->read4();
-		uint16 volume = ids->read2();
+		int16 sfxNum = ids->readUint16LE();
+		int16 priority = ids->readUint16LE();
+		int16 objId = ids->readUint16LE();
+		int16 loops = ids->readUint16LE();
+		uint32 pitchShift = ids->readUint32LE();
+		uint16 volume = ids->readUint16LE();
 
 		if (sfxNum != -1) { // SFX
 			int16 lVol = 0;
@@ -200,7 +200,7 @@ bool AudioProcess::loadData(IDataSource *ids, uint32 version) {
 			}
 			playSFX(sfxNum, priority, objId, loops, false, pitchShift, volume, lVol, rVol);
 		} else {                // Speech
-			uint32 slen = ids->read4();
+			uint32 slen = ids->readUint32LE();
 
 			char *buf = new char[slen + 1];
 			ids->read(buf, slen);
diff --git a/engines/ultima/ultima8/audio/music_process.cpp b/engines/ultima/ultima8/audio/music_process.cpp
index e74e2c0e51..772be6a526 100644
--- a/engines/ultima/ultima8/audio/music_process.cpp
+++ b/engines/ultima/ultima8/audio/music_process.cpp
@@ -230,19 +230,19 @@ void MusicProcess::run() {
 void MusicProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write4(static_cast<uint32>(_trackState._wanted));
-	ods->write4(static_cast<uint32>(_trackState._lastRequest));
-	ods->write4(static_cast<uint32>(_trackState._queued));
+	ods->writeUint32LE(static_cast<uint32>(_trackState._wanted));
+	ods->writeUint32LE(static_cast<uint32>(_trackState._lastRequest));
+	ods->writeUint32LE(static_cast<uint32>(_trackState._queued));
 }
 
 bool MusicProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_trackState._wanted = static_cast<int32>(ids->read4());
+	_trackState._wanted = static_cast<int32>(ids->readUint32LE());
 
 	if (version >= 4) {
-		_trackState._lastRequest = static_cast<int32>(ids->read4());
-		_trackState._queued = static_cast<int32>(ids->read4());
+		_trackState._lastRequest = static_cast<int32>(ids->readUint32LE());
+		_trackState._queued = static_cast<int32>(ids->readUint32LE());
 	} else {
 		_trackState._lastRequest = _trackState._wanted;
 		_trackState._queued = 0;
diff --git a/engines/ultima/ultima8/conf/ini_file.cpp b/engines/ultima/ultima8/conf/ini_file.cpp
index d772c36c03..c740252267 100644
--- a/engines/ultima/ultima8/conf/ini_file.cpp
+++ b/engines/ultima/ultima8/conf/ini_file.cpp
@@ -98,7 +98,7 @@ bool INIFile::readConfigFile(string fname) {
 	if (!f) return false;
 
 	string sbuf, line;
-	while (!f->eof()) {
+	while (!f->eos()) {
 		f->readline(line);
 		string::size_type pos = line.findFirstOf("\n\r");
 		if (pos != string::npos) {
diff --git a/engines/ultima/ultima8/convert/convert_shape.cpp b/engines/ultima/ultima8/convert/convert_shape.cpp
index 785a3216ad..26994720a3 100644
--- a/engines/ultima/ultima8/convert/convert_shape.cpp
+++ b/engines/ultima/ultima8/convert/convert_shape.cpp
@@ -60,7 +60,7 @@ void ConvertShape::Free()
 void ConvertShape::Read(IDataSource *source, const ConvertShapeFormat *csf, uint32 real_len)
 {
 	// Just to be safe
-	uint32 start_pos = source->getPos();
+	uint32 start_pos = source->pos();
 
 	// Read the ident
 	if (csf->_bytes_ident)
@@ -79,7 +79,7 @@ void ConvertShape::Read(IDataSource *source, const ConvertShapeFormat *csf, uint
 	uint8 special[256];
 	if (csf->_bytes_special) {
 		memset(special, 0, 256);
-		for (uint32 i = 0; i < csf->_bytes_special; i++) special[source->read1()&0xFF] = i+2;
+		for (uint32 i = 0; i < csf->_bytes_special; i++) special[source->readByte()&0xFF] = i+2;
 	}
 
 	// Read the header unknown
@@ -126,7 +126,7 @@ void ConvertShape::Read(IDataSource *source, const ConvertShapeFormat *csf, uint
 		source->seek(start_pos + csf->_len_header + (csf->_len_frameheader*f));
 
 #ifdef COMP_SHAPENUM
-		if (shapenum == COMP_SHAPENUM) pout << "seeked to " << source->getPos() << Std::endl;
+		if (shapenum == COMP_SHAPENUM) pout << "seeked to " << source->pos() << Std::endl;
 #endif
 
 		// Read the offset
@@ -250,13 +250,13 @@ void ConvertShapeFrame::ReadCmpFrame(IDataSource *source, const ConvertShapeForm
 
 	for(int32 y = 0; y < _height; ++y) 
 	{
-		_line_offsets[y] = rlebuf->getPos();
+		_line_offsets[y] = rlebuf->pos();
 
 		int32 xpos = 0;
 
 		do
 		{
-			uint8 skip = source->read1();
+			uint8 skip = source->readByte();
 			xpos += skip;
 
 			if (xpos > _width) {
@@ -264,18 +264,18 @@ void ConvertShapeFrame::ReadCmpFrame(IDataSource *source, const ConvertShapeForm
 				skip = _width-(xpos-skip);
 			}
 
-			rlebuf->write1(skip);
+			rlebuf->writeByte(skip);
 
 			if (xpos >= _width) break;
 
-			uint32 dlen = source->read1();
+			uint32 dlen = source->readByte();
 			uint8 *o = outbuf;
 
 			// Is this required???? It seems hacky and pointless
 			if (dlen == 0 || dlen == 1) {
 				source->skip(-1); 
 				rlebuf->skip(-1);
-				rlebuf->write1(skip+(_width-xpos));
+				rlebuf->writeByte(skip+(_width-xpos));
 				break;
 			}
 
@@ -292,7 +292,7 @@ void ConvertShapeFrame::ReadCmpFrame(IDataSource *source, const ConvertShapeForm
 
 				for (uint32 j = 0; j < dlen; j++) {
 
-					uint8 c = source->read1();
+					uint8 c = source->readByte();
 
 					if (special[c] && prev) {
 						int32 count = special[c];
@@ -302,7 +302,7 @@ void ConvertShapeFrame::ReadCmpFrame(IDataSource *source, const ConvertShapeForm
 						xpos += count;
 					}
 					else if (c == 0xFF && prev) {
-						int32 count = source->read1();
+						int32 count = source->readByte();
 						prev->GetPixels(o,count,xpos-_xoff,y-_yoff);
 						o+=count;
 						extra += count-2;
@@ -319,21 +319,21 @@ void ConvertShapeFrame::ReadCmpFrame(IDataSource *source, const ConvertShapeForm
 					perr << "Error! Corrupt Frame. RLE dlen too large" << Std::endl;
 				}
 
-				rlebuf->write1((dlen+extra) << _compression);
+				rlebuf->writeByte((dlen+extra) << _compression);
 				rlebuf->write(outbuf,dlen+extra);
 			}
 			else {
-				rlebuf->write1((dlen<<1)|1);
-				rlebuf->write1(source->read1());
+				rlebuf->writeByte((dlen<<1)|1);
+				rlebuf->writeByte(source->readByte());
 				xpos+=dlen;
 			}
 
 		} while (xpos < _width);
 	}
 
-	_bytes_rle = rlebuf->getPos();
+	_bytes_rle = rlebuf->pos();
 	_rle_data = new uint8[_bytes_rle];
-	memcpy (_rle_data, rlebuf->getBuf(), _bytes_rle);
+	memcpy (_rle_data, rlebuf->getData(), _bytes_rle);
 }
 
 void ConvertShapeFrame::GetPixels(uint8 *buf, int32 count, int32 x, int32 y)
@@ -404,14 +404,14 @@ int ConvertShape::CalcNumFrames(IDataSource *source, const ConvertShapeFormat *c
 	int f=0;
 	uint32 first_offset = 0xFFFFFFFF;
 
-	uint32 save_pos = source->getPos();
+	uint32 save_pos = source->pos();
 
 	for (f=0;;f++) {
 
 		// Seek to initial pos
 		source->seek(start_pos + csf->_len_header + (csf->_len_frameheader*f));
 
-		if ((source->getPos()-start_pos) >= first_offset) break;
+		if ((source->pos()-start_pos) >= first_offset) break;
 
 		// Read the offset
 		uint32 frame_offset = csf->_len_header + (csf->_len_frameheader*f);
@@ -442,7 +442,7 @@ bool ConvertShape::Check(IDataSource *source, const ConvertShapeFormat *csf, uin
 	bool result = true;
 
 	// Just to be safe
-	int start_pos = source->getPos();
+	int start_pos = source->pos();
 
 	// Read the ident
 	if (csf->_bytes_ident)
@@ -575,10 +575,10 @@ bool ConvertShape::Check(IDataSource *source, const ConvertShapeFormat *csf, uin
 				// Compressed
 				if (frame->_compression) do
 				{
-					xpos += source->read1();
+					xpos += source->readByte();
 					if (xpos == frame->_width) break;
 
-					dlen = source->read1();
+					dlen = source->readByte();
 					int type = dlen & 1;
 					dlen >>= 1;
 
@@ -591,17 +591,17 @@ bool ConvertShape::Check(IDataSource *source, const ConvertShapeFormat *csf, uin
 				// Uncompressed
 				else do
 				{
-					xpos += source->read1();
+					xpos += source->readByte();
 					if (xpos == frame->_width) break;
 
-					dlen = source->read1();
+					dlen = source->readByte();
 					source->skip(dlen);
 
 					xpos += dlen;
 				} while (xpos < frame->_width);
 
 				// Calc 'real' bytes rle
-				int32 highest_rle_byte = source->getPos();
+				int32 highest_rle_byte = source->pos();
 				highest_rle_byte -= start_pos + frame_offset + csf->_len_frameheader2 + frame->_height*csf->_bytes_line_offset;
 
 				// Too many bytes
@@ -631,7 +631,7 @@ bool ConvertShape::CheckUnsafe(IDataSource *source, const ConvertShapeFormat *cs
 	bool result = true;
 
 	// Just to be safe
-	const uint32 start_pos = source->getPos();
+	const uint32 start_pos = source->pos();
 
 	// Read the ident
 	if (csf->_bytes_ident)
@@ -739,7 +739,7 @@ bool ConvertShape::CheckUnsafe(IDataSource *source, const ConvertShapeFormat *cs
 void ConvertShape::Write(ODataSource *dest, const ConvertShapeFormat *csf, uint32 &write_len)
 {
 	// Just to be safe
-	const uint32 start_pos = dest->getPos();
+	const uint32 start_pos = dest->pos();
 
 	// Write the ident
 	if (csf->_bytes_ident) dest->write(csf->_ident, csf->_bytes_ident);
@@ -756,7 +756,7 @@ void ConvertShape::Write(ODataSource *dest, const ConvertShapeFormat *csf, uint3
 	}
 
 	// Write filler space for the frame details
-	for (uint32 i = 0; i < _num_frames*csf->_len_frameheader; i++) dest->write1(0);
+	for (uint32 i = 0; i < _num_frames*csf->_len_frameheader; i++) dest->writeByte(0);
 
 	// Now write the _frames
 	for(uint32 f = 0; f < _num_frames; f++) 
@@ -764,7 +764,7 @@ void ConvertShape::Write(ODataSource *dest, const ConvertShapeFormat *csf, uint3
 		ConvertShapeFrame *frame = _frames+f;
 
 		// Get the frame offset
-		uint32 frame_offset = dest->getPos() - start_pos;
+		uint32 frame_offset = dest->pos() - start_pos;
 
 		// Seek to the frame header pos
 		dest->seek(start_pos + csf->_len_header + (csf->_len_frameheader*f));
@@ -812,7 +812,7 @@ void ConvertShape::Write(ODataSource *dest, const ConvertShapeFormat *csf, uint3
 	}
 
 	// Just cheat
-	write_len = dest->getPos() - start_pos;
+	write_len = dest->pos() - start_pos;
 }
 
 
diff --git a/engines/ultima/ultima8/convert/u8/convert_usecode_u8.h b/engines/ultima/ultima8/convert/u8/convert_usecode_u8.h
index c22103c685..dd242f6df1 100644
--- a/engines/ultima/ultima8/convert/u8/convert_usecode_u8.h
+++ b/engines/ultima/ultima8/convert/u8/convert_usecode_u8.h
@@ -40,7 +40,7 @@ public:
 	{
 		uint32 _maxOffset;
 	};
-	uint32 read4(IDataSource *) { return 0; }
+	uint32 readUint32LE(IDataSource *) { return 0; }
 	uint32 _curOffset;
 
 	virtual const char* const *intrinsics()=0;
@@ -74,7 +74,7 @@ public:
 		EventMap.clear();
 		for (uint32 i=0; i<32; ++i)
 		{
-			uint32 offset = read4(ucfile);
+			uint32 offset = readUint32LE(ucfile);
 			EventMap[offset] = i;
 #ifdef DISASM_DEBUG
 			pout << "Event " << i << ": " << Std::hex << Std::setw(4) << offset << Std::dec << endl;
@@ -412,15 +412,15 @@ const char * const ConvertUsecodeU8::_event_names[] = {
 void ConvertUsecodeU8::readheader(IDataSource *ucfile, UsecodeHeader &uch, uint32 &curOffset_) {
 	#ifdef DISASM_DEBUG
 	perr << Std::setfill('0') << Std::hex;
-	perr << "unknown1: " << Std::setw(4) << read4(ucfile) << endl; // unknown
-	uch.maxOffset = read4(ucfile) - 0x0C; // file size
+	perr << "unknown1: " << Std::setw(4) << readUint32LE(ucfile) << endl; // unknown
+	uch.maxOffset = readUint32LE(ucfile) - 0x0C; // file size
 	perr << "maxoffset: " << Std::setw(4) << maxOffset << endl;
-	perr << "unknown2: " << Std::setw(4) << read4(ucfile) << endl; // unknown
+	perr << "unknown2: " << Std::setw(4) << readUint32LE(ucfile) << endl; // unknown
 	curOffset_ = 0;
 	#else
-	read4(ucfile); // unknown
-	uch._maxOffset = read4(ucfile) - 0x0C; // file size
-	read4(ucfile); // unknown
+	readUint32LE(ucfile); // unknown
+	uch._maxOffset = readUint32LE(ucfile) - 0x0C; // file size
+	readUint32LE(ucfile); // unknown
 	curOffset_ = 0;
 	#endif
 }
diff --git a/engines/ultima/ultima8/filesys/flex_file.cpp b/engines/ultima/ultima8/filesys/flex_file.cpp
index 44bd997fd7..d912a65bfe 100644
--- a/engines/ultima/ultima8/filesys/flex_file.cpp
+++ b/engines/ultima/ultima8/filesys/flex_file.cpp
@@ -36,7 +36,7 @@ FlexFile::FlexFile(IDataSource *ds_) : _ds(ds_), _count(0) {
 
 	if (_valid) {
 		_ds->seek(0x54);
-		_count = _ds->read4();
+		_count = _ds->readUint32LE();
 	}
 }
 
@@ -66,7 +66,7 @@ bool FlexFile::isFlexFile(IDataSource *_ds) {
 
 uint32 FlexFile::getOffset(uint32 index) {
 	_ds->seek(0x80 + 8 * index);
-	return _ds->read4();
+	return _ds->readUint32LE();
 }
 
 uint8 *FlexFile::getObject(uint32 index, uint32 *sizep) {
@@ -92,7 +92,7 @@ uint32 FlexFile::getSize(uint32 index) const {
 	if (index >= _count) return 0;
 
 	_ds->seek(0x84 + 8 * index);
-	uint32 length = _ds->read4();
+	uint32 length = _ds->readUint32LE();
 
 	return length;
 }
diff --git a/engines/ultima/ultima8/filesys/idata_source.h b/engines/ultima/ultima8/filesys/idata_source.h
index 695e555bb6..d195b76f37 100644
--- a/engines/ultima/ultima8/filesys/idata_source.h
+++ b/engines/ultima/ultima8/filesys/idata_source.h
@@ -35,66 +35,34 @@ public:
 	IDataSource() {}
 	virtual ~IDataSource() {}
 
-	virtual uint8 read1() = 0;
-	virtual uint16 read2() = 0;
+	virtual uint8 readByte() = 0;
+	virtual uint16 readUint16LE() = 0;
 	virtual uint16 read2high() = 0;
 	virtual uint32 read3() = 0;
-	virtual uint32 read4() = 0;
+	virtual uint32 readUint32LE() = 0;
 	virtual uint32 read4high() = 0;
 	virtual int32 read(void *str, int32 num_bytes) = 0;
 
 	uint32 readX(uint32 num_bytes) {
 		assert(num_bytes > 0 && num_bytes <= 4);
-		if (num_bytes == 1) return read1();
-		else if (num_bytes == 2) return read2();
+		if (num_bytes == 1) return readByte();
+		else if (num_bytes == 2) return readUint16LE();
 		else if (num_bytes == 3) return read3();
-		else return read4();
+		else return readUint32LE();
 	}
 
 	int32 readXS(uint32 num_bytes) {
 		assert(num_bytes > 0 && num_bytes <= 4);
-		if (num_bytes == 1) return static_cast<int8>(read1());
-		else if (num_bytes == 2) return static_cast<int16>(read2());
+		if (num_bytes == 1) return static_cast<int8>(readByte());
+		else if (num_bytes == 2) return static_cast<int16>(readUint16LE());
 		else if (num_bytes == 3) return (((static_cast<int32>(read3())) << 8) >> 8);
-		else return static_cast<int32>(read4());
-	}
-
-	/* FIXME: Dubious conversion between float and int */
-	float readf() {
-#if 1
-		union {
-			uint32  i;
-			float   f;
-		} int_float;
-		int_float.i = read4();
-		return int_float.f;
-#else
-		uint32 i = read4();
-		uint32 mantissa = i & 0x3FFFFF;
-		int32 exponent = ((i >> 23) & 0xFF);
-
-		// Zero
-		if (!exponent && !mantissa)
-			return 0.0F;
-		// Infinity and NaN (don't handle them)
-		else if (exponent == 0xFF)
-			return 0.0F;
-		// Normalized - Add the leading one
-		else if (exponent)
-			mantissa |= 0x400000;
-		// Denormalized - Set the exponent to 1
-		else
-			exponent = 1;
-
-		float f = Std::ldexp(mantissa / 8388608.0, exponent - 127);
-		return (i >> 31) ? -f : f;
-#endif
+		else return static_cast<int32>(readUint32LE());
 	}
 
 	void readline(Std::string &str) {
 		str.clear();
-		while (!eof()) {
-			char character =  static_cast<char>(read1());
+		while (!eos()) {
+			char character =  static_cast<char>(readByte());
 
 			if (character == '\r') continue;    // Skip cr
 			else if (character == '\n') break;  // break on line feed
@@ -105,9 +73,9 @@ public:
 
 	virtual void seek(uint32 pos) = 0;
 	virtual void skip(int32 delta) = 0;
-	virtual uint32 getSize() const = 0;
-	virtual uint32 getPos() const = 0;
-	virtual bool eof() const = 0;
+	virtual uint32 size() const = 0;
+	virtual uint32 pos() const = 0;
+	virtual bool eos() const = 0;
 
 	virtual Common::SeekableReadStream *GetRawStream() {
 		return nullptr;
@@ -132,12 +100,12 @@ public:
 	}
 
 	//  Read a byte value
-	uint8 read1() override {
+	uint8 readByte() override {
 		return static_cast<uint8>(_in->readByte());
 	}
 
 	//  Read a 2-byte value, lsb first.
-	uint16 read2() override {
+	uint16 readUint16LE() override {
 		return _in->readUint16LE();
 	}
 
@@ -156,7 +124,7 @@ public:
 	}
 
 	//  Read a 4-byte long value, lsb first.
-	uint32 read4() override {
+	uint32 readUint32LE() override {
 		return _in->readUint32LE();
 	}
 
@@ -177,15 +145,15 @@ public:
 		_in->seek(pos, SEEK_CUR);
 	}
 
-	uint32 getSize() const override {
+	uint32 size() const override {
 		return _in->size();
 	}
 
-	uint32 getPos() const override {
+	uint32 pos() const override {
 		return _in->pos();
 	}
 
-	bool eof() const override {
+	bool eos() const override {
 		return _in->eos();
 	}
 
@@ -230,13 +198,13 @@ public:
 		_buf = _bufPtr = nullptr;
 	}
 
-	uint8 read1() override {
+	uint8 readByte() override {
 		uint8 b0;
 		b0 = *_bufPtr++;
 		return (b0);
 	}
 
-	uint16 read2() override {
+	uint16 readUint16LE() override {
 		uint8 b0, b1;
 		b0 = *_bufPtr++;
 		b1 = *_bufPtr++;
@@ -258,7 +226,7 @@ public:
 		return (b0 | (b1 << 8) | (b2 << 16));
 	}
 
-	uint32 read4() override {
+	uint32 readUint32LE() override {
 		uint8 b0, b1, b2, b3;
 		b0 = *_bufPtr++;
 		b1 = *_bufPtr++;
@@ -294,15 +262,15 @@ public:
 		_bufPtr += delta;
 	}
 
-	uint32 getSize() const override {
+	uint32 size() const override {
 		return _size;
 	}
 
-	uint32 getPos() const override {
+	uint32 pos() const override {
 		return static_cast<uint32>(_bufPtr - _buf);
 	}
 
-	bool eof() const override {
+	bool eos() const override {
 		return (static_cast<uint32>(_bufPtr - _buf)) >= _size;
 	}
 };
diff --git a/engines/ultima/ultima8/filesys/odata_source.h b/engines/ultima/ultima8/filesys/odata_source.h
index 11400579e9..8b7e4b15b8 100644
--- a/engines/ultima/ultima8/filesys/odata_source.h
+++ b/engines/ultima/ultima8/filesys/odata_source.h
@@ -37,20 +37,20 @@ public:
 	ODataSource() {}
 	virtual ~ODataSource() {}
 
-	virtual void write1(uint32) = 0;
-	virtual void write2(uint16) = 0;
+	virtual void writeByte(uint32) = 0;
+	virtual void writeUint16LE(uint16) = 0;
 	virtual void write2high(uint16) = 0;
 	virtual void write3(uint32) = 0;
-	virtual void write4(uint32) = 0;
+	virtual void writeUint32LE(uint32) = 0;
 	virtual void write4high(uint32) = 0;
 	virtual void write(const void *str, uint32 num_bytes) = 0;
 
 	void writeX(uint32 val, uint32 num_bytes) {
 		assert(num_bytes > 0 && num_bytes <= 4);
-		if (num_bytes == 1) write1(static_cast<uint8>(val));
-		else if (num_bytes == 2) write2(static_cast<uint16>(val));
+		if (num_bytes == 1) writeByte(static_cast<uint8>(val));
+		else if (num_bytes == 2) writeUint16LE(static_cast<uint16>(val));
 		else if (num_bytes == 3) write3(val);
-		else write4(val);
+		else writeUint32LE(val);
 	}
 
 	virtual Common::WriteStream *GetRawStream() {
@@ -59,8 +59,8 @@ public:
 
 	virtual void seek(uint32 pos) = 0;
 	virtual void skip(int32 delta) = 0;
-	virtual uint32 getSize() const = 0;
-	virtual uint32 getPos() const = 0;
+	virtual uint32 size() const = 0;
+	virtual uint32 pos() const = 0;
 };
 
 
@@ -80,11 +80,11 @@ public:
 		return !_out->err();
 	}
 
-	void write1(uint32 val) override {
+	void writeByte(uint32 val) override {
 		_out->writeByte(val & 0xff);
 	}
 
-	void write2(uint16 val) override {
+	void writeUint16LE(uint16 val) override {
 		_out->writeUint16LE(val);
 	}
 
@@ -98,7 +98,7 @@ public:
 		_out->writeByte(static_cast<byte>((val >> 16) & 0xff));
 	}
 
-	void write4(uint32 val) override {
+	void writeUint32LE(uint32 val) override {
 		_out->writeUint32LE(val);
 	}
 
@@ -122,13 +122,13 @@ public:
 		ws->seek(amount, SEEK_CUR);
 	}
 
-	uint32 getSize() const override {
+	uint32 size() const override {
 		Common::SeekableWriteStream *ws = dynamic_cast<Common::SeekableWriteStream *>(_out);
 		assert(ws);
 		return ws->size();
 	}
 
-	uint32 getPos() const override {
+	uint32 pos() const override {
 		Common::SeekableWriteStream *ws = dynamic_cast<Common::SeekableWriteStream *>(_out);
 		assert(ws);
 		return _out->pos();
@@ -158,11 +158,11 @@ public:
 
 	~OBufferDataSource() override {};
 
-	void write1(uint32 val) override {
+	void writeByte(uint32 val) override {
 		*_bufPtr++ = val & 0xff;
 	};
 
-	void write2(uint16 val) override {
+	void writeUint16LE(uint16 val) override {
 		*_bufPtr++ = val & 0xff;
 		*_bufPtr++ = (val >> 8) & 0xff;
 	};
@@ -178,7 +178,7 @@ public:
 		*_bufPtr++ = (val >> 16) & 0xff;
 	};
 
-	void write4(uint32 val) override {
+	void writeUint32LE(uint32 val) override {
 		*_bufPtr++ = val & 0xff;
 		*_bufPtr++ = (val >> 8) & 0xff;
 		*_bufPtr++ = (val >> 16) & 0xff;
@@ -205,94 +205,15 @@ public:
 		_bufPtr += pos;
 	};
 
-	uint32 getSize() const override {
+	uint32 size() const override {
 		return _size;
 	};
 
-	uint32 getPos() const override {
+	uint32 pos() const override {
 		return static_cast<uint32>(_bufPtr - _buf);
 	};
 };
 
-class ODequeDataSource : public ODataSource {
-private:
-	Std::deque<byte> _out;
-
-public:
-	ODequeDataSource() {}
-
-	~ODequeDataSource() override {}
-
-	const Std::deque<byte> &buf() const {
-		return _out;
-	}
-
-	void write1(uint32 val) override {
-		_out.push_back(static_cast<byte>(val & 0xff));
-	}
-
-	void write2(uint16 val) override {
-		_out.push_back(static_cast<byte>(val & 0xff));
-		_out.push_back(static_cast<byte>((val >> 8) & 0xff));
-	}
-
-	void write2high(uint16 val) override {
-		_out.push_back(static_cast<byte>((val >> 8) & 0xff));
-		_out.push_back(static_cast<byte>(val & 0xff));
-	}
-
-	void write3(uint32 val) override {
-		_out.push_back(static_cast<byte>(val & 0xff));
-		_out.push_back(static_cast<byte>((val >> 8) & 0xff));
-		_out.push_back(static_cast<byte>((val >> 16) & 0xff));
-	}
-
-	void write4(uint32 val) override {
-		_out.push_back(static_cast<byte>(val & 0xff));
-		_out.push_back(static_cast<byte>((val >> 8) & 0xff));
-		_out.push_back(static_cast<byte>((val >> 16) & 0xff));
-		_out.push_back(static_cast<byte>((val >> 24) & 0xff));
-	}
-
-	void write4high(uint32 val) override {
-		_out.push_back(static_cast<byte>((val >> 24) & 0xff));
-		_out.push_back(static_cast<byte>((val >> 16) & 0xff));
-		_out.push_back(static_cast<byte>((val >> 8) & 0xff));
-		_out.push_back(static_cast<byte>(val & 0xff));
-	}
-
-	void write(const void *b, uint32 length) override {
-		write(b, length, length);
-	}
-
-	virtual void write(const void *b, uint32 length, uint32 pad_length) {
-		for (uint32 i = 0; i < length; i++)
-			_out.push_back(static_cast<const char *>(b)[i]);
-		if (pad_length > length)
-			for (pad_length -= length; pad_length > 0; --pad_length)
-				_out.push_back(static_cast<byte>(0x00));
-	}
-
-	virtual void clear()          {
-		_out.clear();
-	}
-
-	void seek(uint32 /*pos*/) override {
-		/*_out->seekp(pos); FIXME: Do something here. */
-	}
-	void skip(int32 /*pos*/) override {
-		/*_out->seekp(pos, Std::ios::cur); FIXME: Do something here. */
-	}
-
-	uint32 getSize() const override {
-		return static_cast<uint32>(_out.size());
-	}
-
-	uint32 getPos() const override {
-		return static_cast<uint32>(_out.size()); /*return _out->tellp(); FIXME: Do something here. */
-	}
-};
-
 class OAutoBufferDataSource: public ODataSource {
 protected:
 	uint8 *_buf;
@@ -337,7 +258,7 @@ public:
 	};
 
 	//! Get a pointer to the data buffer.
-	const uint8 *getBuf() {
+	const uint8 *getData() {
 		return _buf;
 	}
 
@@ -345,12 +266,12 @@ public:
 		delete [] _buf;
 	}
 
-	void write1(uint32 val) override {
+	void writeByte(uint32 val) override {
 		checkResize(1);
 		*_bufPtr++ = val & 0xff;
 	};
 
-	void write2(uint16 val) override {
+	void writeUint16LE(uint16 val) override {
 		checkResize(2);
 		*_bufPtr++ = val & 0xff;
 		*_bufPtr++ = (val >> 8) & 0xff;
@@ -369,7 +290,7 @@ public:
 		*_bufPtr++ = (val >> 16) & 0xff;
 	};
 
-	void write4(uint32 val) override {
+	void writeUint32LE(uint32 val) override {
 		checkResize(4);
 		*_bufPtr++ = val & 0xff;
 		*_bufPtr++ = (val >> 8) & 0xff;
@@ -414,11 +335,11 @@ public:
 		_bufPtr = const_cast<unsigned char *>(_buf) + _loc;
 	};
 
-	uint32 getSize() const override {
+	uint32 size() const override {
 		return _size;
 	};
 
-	uint32 getPos() const override {
+	uint32 pos() const override {
 		return static_cast<uint32>(_bufPtr - _buf);
 	};
 
diff --git a/engines/ultima/ultima8/filesys/savegame.cpp b/engines/ultima/ultima8/filesys/savegame.cpp
index 2b96d605aa..58e506e266 100644
--- a/engines/ultima/ultima8/filesys/savegame.cpp
+++ b/engines/ultima/ultima8/filesys/savegame.cpp
@@ -134,7 +134,7 @@ bool SavegameWriter::writeFile(const Std::string &name, const uint8 *data, uint3
 }
 
 bool SavegameWriter::writeFile(const Std::string &name, OAutoBufferDataSource *ods) {
-	return writeFile(name, ods->getBuf(), ods->getSize());
+	return writeFile(name, ods->getData(), ods->size());
 }
 
 } // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/filesys/u8_save_file.cpp b/engines/ultima/ultima8/filesys/u8_save_file.cpp
index 799bb43f63..48a28f24c2 100644
--- a/engines/ultima/ultima8/filesys/u8_save_file.cpp
+++ b/engines/ultima/ultima8/filesys/u8_save_file.cpp
@@ -54,21 +54,21 @@ bool U8SaveFile::isU8SaveFile(IDataSource *_ds) {
 
 bool U8SaveFile::readMetadata() {
 	_ds->seek(0x18);
-	_count = _ds->read2();
+	_count = _ds->readUint16LE();
 
 	_offsets.resize(_count);
 	_sizes.resize(_count);
 
 	for (unsigned int i = 0; i < _count; ++i) {
-		uint32 namelen = _ds->read4();
+		uint32 namelen = _ds->readUint32LE();
 		char *buf = new char[namelen];
 		_ds->read(buf, static_cast<int32>(namelen));
 		Std::string filename = buf;
 		_indices[filename] = i;
 		storeIndexedName(filename);
 		delete[] buf;
-		_sizes[i] = _ds->read4();
-		_offsets[i] = _ds->getPos();
+		_sizes[i] = _ds->readUint32LE();
+		_offsets[i] = _ds->pos();
 		_ds->skip(_sizes[i]); // skip data
 	}
 
diff --git a/engines/ultima/ultima8/games/game_data.cpp b/engines/ultima/ultima8/games/game_data.cpp
index a5ec71c25a..9178acdcac 100644
--- a/engines/ultima/ultima8/games/game_data.cpp
+++ b/engines/ultima/ultima8/games/game_data.cpp
@@ -303,7 +303,7 @@ void GameData::loadU8Data() {
 		MapGlob *glob = 0;
 		IDataSource *globds = globflex->get_datasource(i);
 
-		if (globds && globds->getSize()) {
+		if (globds && globds->size()) {
 			glob = new MapGlob();
 			glob->read(globds);
 		}
@@ -554,7 +554,7 @@ void GameData::loadRemorseData() {
 		MapGlob *glob = 0;
 		IDataSource *globds = globflex->get_datasource(i);
 
-		if (globds && globds->getSize()) {
+		if (globds && globds->size()) {
 			glob = new MapGlob();
 			glob->read(globds);
 		}
diff --git a/engines/ultima/ultima8/games/remorse_game.cpp b/engines/ultima/ultima8/games/remorse_game.cpp
index 09eaaeff66..e3add69c06 100644
--- a/engines/ultima/ultima8/games/remorse_game.cpp
+++ b/engines/ultima/ultima8/games/remorse_game.cpp
@@ -126,35 +126,35 @@ void RemorseGame::writeSaveInfo(ODataSource *ods) {
 
 	const Std::string &avname = av->getName();
 	uint8 namelength = static_cast<uint8>(avname.size());
-	ods->write1(namelength);
+	ods->writeByte(namelength);
 	for (unsigned int i = 0; i < namelength; ++i)
-		ods->write1(static_cast<uint8>(avname[i]));
+		ods->writeByte(static_cast<uint8>(avname[i]));
 
 	av->getLocation(x, y, z);
-	ods->write2(av->getMapNum());
-	ods->write4(static_cast<uint32>(x));
-	ods->write4(static_cast<uint32>(y));
-	ods->write4(static_cast<uint32>(z));
-
-	ods->write2(av->getStr());
-	ods->write2(av->getInt());
-	ods->write2(av->getDex());
-	ods->write2(av->getHP());
-	ods->write2(av->getMaxHP());
-	ods->write2(av->getMana());
-	ods->write2(av->getMaxMana());
-	ods->write2(av->getArmourClass());
-	ods->write2(av->getTotalWeight());
+	ods->writeUint16LE(av->getMapNum());
+	ods->writeUint32LE(static_cast<uint32>(x));
+	ods->writeUint32LE(static_cast<uint32>(y));
+	ods->writeUint32LE(static_cast<uint32>(z));
+
+	ods->writeUint16LE(av->getStr());
+	ods->writeUint16LE(av->getInt());
+	ods->writeUint16LE(av->getDex());
+	ods->writeUint16LE(av->getHP());
+	ods->writeUint16LE(av->getMaxHP());
+	ods->writeUint16LE(av->getMana());
+	ods->writeUint16LE(av->getMaxMana());
+	ods->writeUint16LE(av->getArmourClass());
+	ods->writeUint16LE(av->getTotalWeight());
 
 	for (unsigned int i = 1; i <= 6; i++) {
 		const uint16 objid = av->getEquip(i);
 		const Item *item = getItem(objid);
 		if (item) {
-			ods->write4(item->getShape());
-			ods->write4(item->getFrame());
+			ods->writeUint32LE(item->getShape());
+			ods->writeUint32LE(item->getFrame());
 		} else {
-			ods->write4(0);
-			ods->write4(0);
+			ods->writeUint32LE(0);
+			ods->writeUint32LE(0);
 		}
 	}
 #endif
diff --git a/engines/ultima/ultima8/games/u8_game.cpp b/engines/ultima/ultima8/games/u8_game.cpp
index cae3f6c264..b74e54dd6d 100644
--- a/engines/ultima/ultima8/games/u8_game.cpp
+++ b/engines/ultima/ultima8/games/u8_game.cpp
@@ -246,45 +246,45 @@ void U8Game::writeSaveInfo(ODataSource *ods) {
 
 	const Std::string &avname = av->getName();
 	const uint8 namelength = static_cast<uint8>(avname.size());
-	ods->write1(namelength);
+	ods->writeByte(namelength);
 	for (unsigned int i = 0; i < namelength; ++i)
-		ods->write1(static_cast<uint8>(avname[i]));
+		ods->writeByte(static_cast<uint8>(avname[i]));
 
 	av->getLocation(x, y, z);
-	ods->write2(av->getMapNum());
-	ods->write4(static_cast<uint32>(x));
-	ods->write4(static_cast<uint32>(y));
-	ods->write4(static_cast<uint32>(z));
-
-	ods->write2(av->getStr());
-	ods->write2(av->getInt());
-	ods->write2(av->getDex());
-	ods->write2(av->getHP());
-	ods->write2(av->getMaxHP());
-	ods->write2(av->getMana());
-	ods->write2(av->getMaxMana());
-	ods->write2(av->getArmourClass());
-	ods->write2(av->getTotalWeight());
+	ods->writeUint16LE(av->getMapNum());
+	ods->writeUint32LE(static_cast<uint32>(x));
+	ods->writeUint32LE(static_cast<uint32>(y));
+	ods->writeUint32LE(static_cast<uint32>(z));
+
+	ods->writeUint16LE(av->getStr());
+	ods->writeUint16LE(av->getInt());
+	ods->writeUint16LE(av->getDex());
+	ods->writeUint16LE(av->getHP());
+	ods->writeUint16LE(av->getMaxHP());
+	ods->writeUint16LE(av->getMana());
+	ods->writeUint16LE(av->getMaxMana());
+	ods->writeUint16LE(av->getArmourClass());
+	ods->writeUint16LE(av->getTotalWeight());
 
 	for (unsigned int i = 1; i <= 6; i++) {
 		uint16 objid = av->getEquip(i);
 		Item *item = getItem(objid);
 		if (item) {
-			ods->write4(item->getShape());
-			ods->write4(item->getFrame());
+			ods->writeUint32LE(item->getShape());
+			ods->writeUint32LE(item->getFrame());
 		} else {
-			ods->write4(0);
-			ods->write4(0);
+			ods->writeUint32LE(0);
+			ods->writeUint32LE(0);
 		}
 	}
 }
 
 Std::string U8Game::getCreditText(IDataSource *ids) {
 	Std::string text;
-	unsigned int size = ids->getSize();
+	unsigned int size = ids->size();
 	text.resize(size);
 	for (unsigned int i = 0; i < size; ++i) {
-		uint8 c = ids->read1();
+		uint8 c = ids->readByte();
 		int x;
 		switch (i) {
 		case 0:
diff --git a/engines/ultima/ultima8/graphics/anim_dat.cpp b/engines/ultima/ultima8/graphics/anim_dat.cpp
index 7c75320c1c..907f0af8d8 100644
--- a/engines/ultima/ultima8/graphics/anim_dat.cpp
+++ b/engines/ultima/ultima8/graphics/anim_dat.cpp
@@ -70,7 +70,7 @@ void AnimDat::load(IDataSource *ds) {
 
 	for (unsigned int shape = 0; shape < _anims.size(); shape++) {
 		ds->seek(4 * shape);
-		uint32 offset = ds->read4();
+		uint32 offset = ds->readUint32LE();
 
 		if (offset == 0) {
 			_anims[shape] = nullptr;
@@ -84,7 +84,7 @@ void AnimDat::load(IDataSource *ds) {
 
 		for (unsigned int action = 0; action < actioncount; action++) {
 			ds->seek(offset + action * 4);
-			uint32 actionoffset = ds->read4();
+			uint32 actionoffset = ds->readUint32LE();
 
 			if (actionoffset == 0) {
 				a->_actions[action] = 0;
@@ -97,11 +97,11 @@ void AnimDat::load(IDataSource *ds) {
 			a->_actions[action]->_action = action;
 
 			ds->seek(actionoffset);
-			uint32 actionsize = ds->read1();
+			uint32 actionsize = ds->readByte();
 			a->_actions[action]->_size = actionsize;
-			a->_actions[action]->_flags = ds->read1();
-			a->_actions[action]->_frameRepeat = ds->read1();
-			a->_actions[action]->_flags |= ds->read1() << 8;
+			a->_actions[action]->_flags = ds->readByte();
+			a->_actions[action]->_frameRepeat = ds->readByte();
+			a->_actions[action]->_flags |= ds->readByte() << 8;
 
 			unsigned int dirCount = 8;
 			if (GAME_IS_CRUSADER &&
@@ -115,26 +115,26 @@ void AnimDat::load(IDataSource *ds) {
 
 				for (unsigned int j = 0; j < actionsize; j++) {
 					if (GAME_IS_U8) {
-						f._frame = ds->read1(); // & 0x7FF;
-						uint8 x = ds->read1();
+						f._frame = ds->readByte(); // & 0x7FF;
+						uint8 x = ds->readByte();
 						f._frame += (x & 0x7) << 8;
 						f._deltaZ = ds->readXS(1);
-						f._sfx = ds->read1();
+						f._sfx = ds->readByte();
 						f._deltaDir = ds->readXS(1);
-						f._flags = ds->read1();
+						f._flags = ds->readByte();
 						f._flags += (x & 0xF8) << 8;
 					} else if (GAME_IS_CRUSADER) {
 						// byte 0: low byte of frame
-						f._frame = ds->read1();
+						f._frame = ds->readByte();
 						// byte 1: low nibble part of frame
-						uint8 x = ds->read1();
+						uint8 x = ds->readByte();
 						f._frame += (x & 0xF) << 8;
 						// byte 2, 3: unknown; byte 3 might contain flags
 						ds->skip(2);
 						// byte 4: deltadir (signed)
 						f._deltaDir = ds->readXS(1);
 						// byte 5: flags?
-						f._flags = ds->read1();
+						f._flags = ds->readByte();
 						// byte 6, 7: unknown
 						ds->skip(2);
 
diff --git a/engines/ultima/ultima8/graphics/frame_id.cpp b/engines/ultima/ultima8/graphics/frame_id.cpp
index e5832ae251..22be5d4cf4 100644
--- a/engines/ultima/ultima8/graphics/frame_id.cpp
+++ b/engines/ultima/ultima8/graphics/frame_id.cpp
@@ -30,15 +30,15 @@ namespace Ultima {
 namespace Ultima8 {
 
 void FrameID::save(ODataSource *ods) {
-	ods->write2(_flexId);
-	ods->write4(_shapeNum);
-	ods->write4(_frameNum);
+	ods->writeUint16LE(_flexId);
+	ods->writeUint32LE(_shapeNum);
+	ods->writeUint32LE(_frameNum);
 }
 
 bool FrameID::load(IDataSource *ids) {
-	_flexId = ids->read2();
-	_shapeNum = ids->read4();
-	_frameNum = ids->read4();
+	_flexId = ids->readUint16LE();
+	_shapeNum = ids->readUint32LE();
+	_frameNum = ids->readUint32LE();
 	return true;
 }
 
diff --git a/engines/ultima/ultima8/graphics/gump_shape_archive.cpp b/engines/ultima/ultima8/graphics/gump_shape_archive.cpp
index 2d122fba47..664042f247 100644
--- a/engines/ultima/ultima8/graphics/gump_shape_archive.cpp
+++ b/engines/ultima/ultima8/graphics/gump_shape_archive.cpp
@@ -37,14 +37,14 @@ GumpShapeArchive::~GumpShapeArchive() {
 }
 
 void GumpShapeArchive::loadGumpage(IDataSource *ds) {
-	unsigned int total = ds->getSize() / 8;
+	unsigned int total = ds->size() / 8;
 	_gumpItemArea.resize(total + 1);
 	for (unsigned int i = 1; i <= total; ++i) {
 		int x, y, w, h;
-		x = static_cast<int16>(ds->read2());
-		y = static_cast<int16>(ds->read2());
-		w = static_cast<int16>(ds->read2()) - x;
-		h = static_cast<int16>(ds->read2()) - y;
+		x = static_cast<int16>(ds->readUint16LE());
+		y = static_cast<int16>(ds->readUint16LE());
+		w = static_cast<int16>(ds->readUint16LE()) - x;
+		h = static_cast<int16>(ds->readUint16LE()) - y;
 		_gumpItemArea[i] = new Rect(x, y, w, h);
 	}
 }
diff --git a/engines/ultima/ultima8/graphics/inverter_process.cpp b/engines/ultima/ultima8/graphics/inverter_process.cpp
index 1f916a8c79..59b96f64b6 100644
--- a/engines/ultima/ultima8/graphics/inverter_process.cpp
+++ b/engines/ultima/ultima8/graphics/inverter_process.cpp
@@ -79,13 +79,13 @@ void InverterProcess::run() {
 void InverterProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write2(static_cast<uint16>(_targetState));
+	ods->writeUint16LE(static_cast<uint16>(_targetState));
 }
 
 bool InverterProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_targetState = ids->read2();
+	_targetState = ids->readUint16LE();
 
 	_inverter = this; //static
 	return true;
diff --git a/engines/ultima/ultima8/graphics/palette.cpp b/engines/ultima/ultima8/graphics/palette.cpp
index c1fa741b57..e402abbc52 100644
--- a/engines/ultima/ultima8/graphics/palette.cpp
+++ b/engines/ultima/ultima8/graphics/palette.cpp
@@ -31,7 +31,7 @@ namespace Ultima8 {
 void Palette::load(IDataSource &ds, IDataSource &xformds) {
 	load(ds);
 	for (int i = 0; i < 256; i++)
-		_xform_untransformed[i] = xformds.read4();
+		_xform_untransformed[i] = xformds.readUint32LE();
 }
 
 void Palette::load(IDataSource &ds) {
diff --git a/engines/ultima/ultima8/graphics/palette_fader_process.cpp b/engines/ultima/ultima8/graphics/palette_fader_process.cpp
index 1443d2c4ff..2775c3a4d3 100644
--- a/engines/ultima/ultima8/graphics/palette_fader_process.cpp
+++ b/engines/ultima/ultima8/graphics/palette_fader_process.cpp
@@ -101,28 +101,28 @@ void PaletteFaderProcess::run() {
 void PaletteFaderProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write4(static_cast<uint32>(_priority));
-	ods->write4(static_cast<uint32>(_counter));
-	ods->write4(static_cast<uint32>(_maxCounter));
+	ods->writeUint32LE(static_cast<uint32>(_priority));
+	ods->writeUint32LE(static_cast<uint32>(_counter));
+	ods->writeUint32LE(static_cast<uint32>(_maxCounter));
 	unsigned int i;
 	for (i = 0; i < 12; ++i)
-		ods->write2(_oldMatrix[i]);
+		ods->writeUint16LE(_oldMatrix[i]);
 	for (i = 0; i < 12; ++i)
-		ods->write2(_newMatrix[i]);
+		ods->writeUint16LE(_newMatrix[i]);
 }
 
 bool PaletteFaderProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_priority = static_cast<int>(ids->read4());
-	_counter = static_cast<int>(ids->read4());
-	_maxCounter = static_cast<int>(ids->read4());
+	_priority = static_cast<int>(ids->readUint32LE());
+	_counter = static_cast<int>(ids->readUint32LE());
+	_maxCounter = static_cast<int>(ids->readUint32LE());
 
 	unsigned int i;
 	for (i = 0; i < 12; ++i)
-		_oldMatrix[i] = ids->read2();
+		_oldMatrix[i] = ids->readUint16LE();
 	for (i = 0; i < 12; ++i)
-		_newMatrix[i] = ids->read2();
+		_newMatrix[i] = ids->readUint16LE();
 
 	_fader = this; //static
 	return true;
diff --git a/engines/ultima/ultima8/graphics/shape.cpp b/engines/ultima/ultima8/graphics/shape.cpp
index 29fe8ee275..3afe16eb90 100644
--- a/engines/ultima/ultima8/graphics/shape.cpp
+++ b/engines/ultima/ultima8/graphics/shape.cpp
@@ -51,7 +51,7 @@ Shape::Shape(const uint8 *data, uint32 size, const ConvertShapeFormat *format,
 Shape::Shape(IDataSource *src, const ConvertShapeFormat *format)
 	: _flexId(0), _shapeNum(0), _palette(nullptr) {
 	// NB: U8 style!
-	uint32 size = src->getSize();
+	uint32 size = src->size();
 	uint8 *data = new uint8[size];
 	src->read(data, size);
 
@@ -170,7 +170,7 @@ Common::Array<RawShapeFrame *> Shape::loadGenericFormat(const uint8 *data, uint3
 	uint8 special[256];
 	if (format->_bytes_special) {
 		memset(special, 0, 256);
-		for (uint32 i = 0; i < format->_bytes_special; i++) special[ds.read1() & 0xFF] = i + 2;
+		for (uint32 i = 0; i < format->_bytes_special; i++) special[ds.readByte() & 0xFF] = i + 2;
 	}
 
 	// Skip unknown
diff --git a/engines/ultima/ultima8/graphics/skf_player.cpp b/engines/ultima/ultima8/graphics/skf_player.cpp
index 756b6407d2..fd70a2308b 100644
--- a/engines/ultima/ultima8/graphics/skf_player.cpp
+++ b/engines/ultima/ultima8/graphics/skf_player.cpp
@@ -93,15 +93,15 @@ SKFPlayer::~SKFPlayer() {
 }
 
 void SKFPlayer::parseEventList(IDataSource *eventlist) {
-	uint16 frame = eventlist->read2();
+	uint16 frame = eventlist->readUint16LE();
 	while (frame != 0xFFFF) {
 		SKFEvent *ev = new SKFEvent;
 		ev->_frame = frame;
-		ev->_action = static_cast<SKFAction>(eventlist->read2());
-		ev->_data = eventlist->read2();
+		ev->_action = static_cast<SKFAction>(eventlist->readUint16LE());
+		ev->_data = eventlist->readUint16LE();
 		_events.push_back(ev);
 
-		frame = eventlist->read2();
+		frame = eventlist->readUint16LE();
 	}
 }
 
@@ -279,10 +279,10 @@ void SKFPlayer::run() {
 
 		// read object
 		object = _skf->get_datasource(_curObject);
-		if (!object || object->getSize() < 2)
+		if (!object || object->size() < 2)
 			continue;
 
-		objecttype = object->read2();
+		objecttype = object->readUint16LE();
 
 //		pout << "Object " << _curObject << "/" << _skf->getCount()
 //			 << ", type = " << objecttype << Std::endl;
diff --git a/engines/ultima/ultima8/graphics/type_flags.cpp b/engines/ultima/ultima8/graphics/type_flags.cpp
index b18010ab70..4483e85aa2 100644
--- a/engines/ultima/ultima8/graphics/type_flags.cpp
+++ b/engines/ultima/ultima8/graphics/type_flags.cpp
@@ -60,7 +60,7 @@ void TypeFlags::load(IDataSource *ds) {
 		blocksize = 9;
 	}
 
-	uint32 size = ds->getSize();
+	uint32 size = ds->size();
 	uint32 count = size / blocksize;
 
 	_shapeInfo.clear();
diff --git a/engines/ultima/ultima8/graphics/wpn_ovlay_dat.cpp b/engines/ultima/ultima8/graphics/wpn_ovlay_dat.cpp
index 0f910204cb..7c3a7f1aaf 100644
--- a/engines/ultima/ultima8/graphics/wpn_ovlay_dat.cpp
+++ b/engines/ultima/ultima8/graphics/wpn_ovlay_dat.cpp
@@ -71,7 +71,7 @@ void WpnOvlayDat::load(RawArchive *overlaydat) {
 		IDataSource *ds = overlaydat->get_datasource(action);
 		_overlay[action] = nullptr;
 
-		if (ds && ds->getSize()) {
+		if (ds && ds->size()) {
 			// get Avatar's animation
 			AnimAction *anim = msf->getAnim(1, action);
 			if (!anim) {
@@ -85,7 +85,7 @@ void WpnOvlayDat::load(RawArchive *overlaydat) {
 			unsigned int animlength = anim->_size;
 			unsigned int dircount = anim->_dirCount;
 
-			unsigned int typecount = ds->getSize() / (4 * dircount * animlength);
+			unsigned int typecount = ds->size() / (4 * dircount * animlength);
 			awo->_overlay.resize(typecount);
 
 			for (unsigned int type = 0; type < typecount; type++) {
@@ -100,7 +100,7 @@ void WpnOvlayDat::load(RawArchive *overlaydat) {
 						ds->seek(4 * offset);
 						f._xOff = ds->readXS(1);
 						f._yOff = ds->readXS(1);
-						f._frame = ds->read2();
+						f._frame = ds->readUint16LE();
 
 						awo->_overlay[type]._frames[dir][frame] = f;
 					}
diff --git a/engines/ultima/ultima8/gumps/bark_gump.cpp b/engines/ultima/ultima8/gumps/bark_gump.cpp
index b80c40d372..be348fe3ff 100644
--- a/engines/ultima/ultima8/gumps/bark_gump.cpp
+++ b/engines/ultima/ultima8/gumps/bark_gump.cpp
@@ -181,25 +181,25 @@ Gump *BarkGump::OnMouseDown(int button, int32 mx, int32 my) {
 void BarkGump::saveData(ODataSource *ods) {
 	ItemRelativeGump::saveData(ods);
 
-	ods->write4(static_cast<uint32>(_counter));
-	ods->write2(_textWidget);
-	ods->write4(_speechShapeNum);
-	ods->write4(_speechLength);
-	ods->write4(_totalTextHeight);
-	ods->write4(static_cast<uint32>(_barked.size()));
+	ods->writeUint32LE(static_cast<uint32>(_counter));
+	ods->writeUint16LE(_textWidget);
+	ods->writeUint32LE(_speechShapeNum);
+	ods->writeUint32LE(_speechLength);
+	ods->writeUint32LE(_totalTextHeight);
+	ods->writeUint32LE(static_cast<uint32>(_barked.size()));
 	ods->write(_barked.c_str(), _barked.size());
 }
 
 bool BarkGump::loadData(IDataSource *ids, uint32 version) {
 	if (!ItemRelativeGump::loadData(ids, version)) return false;
 
-	_counter = static_cast<int32>(ids->read4());
-	_textWidget = ids->read2();
-	_speechShapeNum = ids->read4();
-	_speechLength = ids->read4();
-	_totalTextHeight = ids->read4();
+	_counter = static_cast<int32>(ids->readUint32LE());
+	_textWidget = ids->readUint16LE();
+	_speechShapeNum = ids->readUint32LE();
+	_speechLength = ids->readUint32LE();
+	_totalTextHeight = ids->readUint32LE();
 
-	uint32 slen = ids->read4();
+	uint32 slen = ids->readUint32LE();
 	if (slen > 0) {
 		char *buf = new char[slen + 1];
 		ids->read(buf, slen);
diff --git a/engines/ultima/ultima8/gumps/container_gump.cpp b/engines/ultima/ultima8/gumps/container_gump.cpp
index fc80e8a9c6..25a3292686 100644
--- a/engines/ultima/ultima8/gumps/container_gump.cpp
+++ b/engines/ultima/ultima8/gumps/container_gump.cpp
@@ -537,19 +537,19 @@ void ContainerGump::DropItem(Item *item, int mx, int my) {
 void ContainerGump::saveData(ODataSource *ods) {
 	ItemRelativeGump::saveData(ods);
 
-	ods->write4(static_cast<uint32>(_itemArea.x));
-	ods->write4(static_cast<uint32>(_itemArea.y));
-	ods->write4(static_cast<uint32>(_itemArea.w));
-	ods->write4(static_cast<uint32>(_itemArea.h));
+	ods->writeUint32LE(static_cast<uint32>(_itemArea.x));
+	ods->writeUint32LE(static_cast<uint32>(_itemArea.y));
+	ods->writeUint32LE(static_cast<uint32>(_itemArea.w));
+	ods->writeUint32LE(static_cast<uint32>(_itemArea.h));
 }
 
 bool ContainerGump::loadData(IDataSource *ids, uint32 version) {
 	if (!ItemRelativeGump::loadData(ids, version)) return false;
 
-	int32 iax = static_cast<int32>(ids->read4());
-	int32 iay = static_cast<int32>(ids->read4());
-	int32 iaw = static_cast<int32>(ids->read4());
-	int32 iah = static_cast<int32>(ids->read4());
+	int32 iax = static_cast<int32>(ids->readUint32LE());
+	int32 iay = static_cast<int32>(ids->readUint32LE());
+	int32 iaw = static_cast<int32>(ids->readUint32LE());
+	int32 iah = static_cast<int32>(ids->readUint32LE());
 	_itemArea.Set(iax, iay, iaw, iah);
 
 	return true;
diff --git a/engines/ultima/ultima8/gumps/gump.cpp b/engines/ultima/ultima8/gumps/gump.cpp
index 6d9351b602..fe47eb1ba1 100644
--- a/engines/ultima/ultima8/gumps/gump.cpp
+++ b/engines/ultima/ultima8/gumps/gump.cpp
@@ -784,32 +784,32 @@ bool Gump::mustSave(bool toplevel) const {
 void Gump::saveData(ODataSource *ods) {
 	Object::saveData(ods);
 
-	ods->write2(_owner);
-	ods->write4(static_cast<uint32>(_x));
-	ods->write4(static_cast<uint32>(_y));
-	ods->write4(static_cast<uint32>(_dims.x));
-	ods->write4(static_cast<uint32>(_dims.y));
-	ods->write4(static_cast<uint32>(_dims.w));
-	ods->write4(static_cast<uint32>(_dims.h));
-	ods->write4(_flags);
-	ods->write4(static_cast<uint32>(_layer));
-	ods->write4(static_cast<uint32>(_index));
+	ods->writeUint16LE(_owner);
+	ods->writeUint32LE(static_cast<uint32>(_x));
+	ods->writeUint32LE(static_cast<uint32>(_y));
+	ods->writeUint32LE(static_cast<uint32>(_dims.x));
+	ods->writeUint32LE(static_cast<uint32>(_dims.y));
+	ods->writeUint32LE(static_cast<uint32>(_dims.w));
+	ods->writeUint32LE(static_cast<uint32>(_dims.h));
+	ods->writeUint32LE(_flags);
+	ods->writeUint32LE(static_cast<uint32>(_layer));
+	ods->writeUint32LE(static_cast<uint32>(_index));
 
 	uint16 flex = 0;
 	uint32 shapenum = 0;
 	if (_shape) {
 		_shape->getShapeId(flex, shapenum);
 	}
-	ods->write2(flex);
-	ods->write4(shapenum);
+	ods->writeUint16LE(flex);
+	ods->writeUint32LE(shapenum);
 
-	ods->write4(_frameNum);
+	ods->writeUint32LE(_frameNum);
 	if (_focusChild)
-		ods->write2(_focusChild->getObjId());
+		ods->writeUint16LE(_focusChild->getObjId());
 	else
-		ods->write2(0);
-	ods->write2(_notifier);
-	ods->write4(_processResult);
+		ods->writeUint16LE(0);
+	ods->writeUint16LE(_notifier);
+	ods->writeUint32LE(_processResult);
 
 	unsigned int childcount = 0;
 	Std::list<Gump *>::iterator it;
@@ -819,7 +819,7 @@ void Gump::saveData(ODataSource *ods) {
 	}
 
 	// write children:
-	ods->write4(childcount);
+	ods->writeUint32LE(childcount);
 	for (it = _children.begin(); it != _children.end(); ++it) {
 		if (!(*it)->mustSave(false)) continue;
 
@@ -830,35 +830,35 @@ void Gump::saveData(ODataSource *ods) {
 bool Gump::loadData(IDataSource *ids, uint32 version) {
 	if (!Object::loadData(ids, version)) return false;
 
-	_owner = ids->read2();
-	_x = static_cast<int32>(ids->read4());
-	_y = static_cast<int32>(ids->read4());
+	_owner = ids->readUint16LE();
+	_x = static_cast<int32>(ids->readUint32LE());
+	_y = static_cast<int32>(ids->readUint32LE());
 
-	int dx = static_cast<int32>(ids->read4());
-	int dy = static_cast<int32>(ids->read4());
-	int dw = static_cast<int32>(ids->read4());
-	int dh = static_cast<int32>(ids->read4());
+	int dx = static_cast<int32>(ids->readUint32LE());
+	int dy = static_cast<int32>(ids->readUint32LE());
+	int dw = static_cast<int32>(ids->readUint32LE());
+	int dh = static_cast<int32>(ids->readUint32LE());
 	_dims.Set(dx, dy, dw, dh);
 
-	_flags = ids->read4();
-	_layer = static_cast<int32>(ids->read4());
-	_index = static_cast<int32>(ids->read4());
+	_flags = ids->readUint32LE();
+	_layer = static_cast<int32>(ids->readUint32LE());
+	_index = static_cast<int32>(ids->readUint32LE());
 
 	_shape = nullptr;
-	ShapeArchive *flex = GameData::get_instance()->getShapeFlex(ids->read2());
-	uint32 shapenum = ids->read4();
+	ShapeArchive *flex = GameData::get_instance()->getShapeFlex(ids->readUint16LE());
+	uint32 shapenum = ids->readUint32LE();
 	if (flex) {
 		_shape = flex->getShape(shapenum);
 	}
 
-	_frameNum = ids->read4();
-	uint16 focusid = ids->read2();
+	_frameNum = ids->readUint32LE();
+	uint16 focusid = ids->readUint16LE();
 	_focusChild = nullptr;
-	_notifier = ids->read2();
-	_processResult = ids->read4();
+	_notifier = ids->readUint16LE();
+	_processResult = ids->readUint32LE();
 
 	// read children
-	uint32 childcount = ids->read4();
+	uint32 childcount = ids->readUint32LE();
 	for (unsigned int i = 0; i < childcount; ++i) {
 		Object *obj = ObjectManager::get_instance()->loadObject(ids, version);
 		Gump *child = p_dynamic_cast<Gump *>(obj);
diff --git a/engines/ultima/ultima8/gumps/gump_notify_process.cpp b/engines/ultima/ultima8/gumps/gump_notify_process.cpp
index 7c4407e0cb..8956f8e121 100644
--- a/engines/ultima/ultima8/gumps/gump_notify_process.cpp
+++ b/engines/ultima/ultima8/gumps/gump_notify_process.cpp
@@ -77,13 +77,13 @@ void GumpNotifyProcess::dumpInfo() const {
 void GumpNotifyProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write2(_gump);
+	ods->writeUint16LE(_gump);
 }
 
 bool GumpNotifyProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_gump = ids->read2();
+	_gump = ids->readUint16LE();
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/gumps/paperdoll_gump.cpp b/engines/ultima/ultima8/gumps/paperdoll_gump.cpp
index 96a4a5ec21..e09d80ec5b 100644
--- a/engines/ultima/ultima8/gumps/paperdoll_gump.cpp
+++ b/engines/ultima/ultima8/gumps/paperdoll_gump.cpp
@@ -412,13 +412,13 @@ void PaperdollGump::ChildNotify(Gump *child, uint32 message) {
 void PaperdollGump::saveData(ODataSource *ods) {
 	ContainerGump::saveData(ods);
 
-	ods->write2(_statButtonId);
+	ods->writeUint16LE(_statButtonId);
 }
 
 bool PaperdollGump::loadData(IDataSource *ids, uint32 version) {
 	if (!ContainerGump::loadData(ids, version)) return false;
 
-	_statButtonId = ids->read2();
+	_statButtonId = ids->readUint16LE();
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/gumps/widgets/button_widget.cpp b/engines/ultima/ultima8/gumps/widgets/button_widget.cpp
index 955b6d924b..fabe8b8e69 100644
--- a/engines/ultima/ultima8/gumps/widgets/button_widget.cpp
+++ b/engines/ultima/ultima8/gumps/widgets/button_widget.cpp
@@ -202,46 +202,46 @@ void ButtonWidget::saveData(ODataSource *ods) {
 	if (_shapeUp) {
 		_shapeUp->getShapeId(flex, shapenum);
 	}
-	ods->write2(flex);
-	ods->write4(shapenum);
-	ods->write4(_frameNumUp);
+	ods->writeUint16LE(flex);
+	ods->writeUint32LE(shapenum);
+	ods->writeUint32LE(_frameNumUp);
 
 	flex = 0;
 	shapenum = 0;
 	if (_shapeDown) {
 		_shapeDown->getShapeId(flex, shapenum);
 	}
-	ods->write2(flex);
-	ods->write4(shapenum);
-	ods->write4(_frameNumDown);
-	ods->write2(_textWidget);
-	ods->write4(_mouseOverBlendCol);
+	ods->writeUint16LE(flex);
+	ods->writeUint32LE(shapenum);
+	ods->writeUint32LE(_frameNumDown);
+	ods->writeUint16LE(_textWidget);
+	ods->writeUint32LE(_mouseOverBlendCol);
 
 	uint8 m = (_mouseOver ? 1 : 0);
-	ods->write1(m);
+	ods->writeByte(m);
 }
 
 bool ButtonWidget::loadData(IDataSource *ids, uint32 version) {
 	if (!Gump::loadData(ids, version)) return false;
 
 	_shapeUp = nullptr;
-	ShapeArchive *flex = GameData::get_instance()->getShapeFlex(ids->read2());
-	uint32 shapenum = ids->read4();
+	ShapeArchive *flex = GameData::get_instance()->getShapeFlex(ids->readUint16LE());
+	uint32 shapenum = ids->readUint32LE();
 	if (flex) {
 		_shapeUp = flex->getShape(shapenum);
 	}
-	_frameNumUp = ids->read4();
+	_frameNumUp = ids->readUint32LE();
 
 	_shapeDown = nullptr;
-	flex = GameData::get_instance()->getShapeFlex(ids->read2());
-	shapenum = ids->read4();
+	flex = GameData::get_instance()->getShapeFlex(ids->readUint16LE());
+	shapenum = ids->readUint32LE();
 	if (flex) {
 		_shapeDown = flex->getShape(shapenum);
 	}
-	_frameNumDown = ids->read4();
-	_textWidget = ids->read2();
-	_mouseOverBlendCol = ids->read4();
-	_mouseOver = (ids->read1() != 0);
+	_frameNumDown = ids->readUint32LE();
+	_textWidget = ids->readUint16LE();
+	_mouseOverBlendCol = ids->readUint32LE();
+	_mouseOver = (ids->readByte() != 0);
 
 	// HACK ALERT
 	if (_textWidget != 0) {
diff --git a/engines/ultima/ultima8/gumps/widgets/text_widget.cpp b/engines/ultima/ultima8/gumps/widgets/text_widget.cpp
index 8e87c8131b..28380f3e97 100644
--- a/engines/ultima/ultima8/gumps/widgets/text_widget.cpp
+++ b/engines/ultima/ultima8/gumps/widgets/text_widget.cpp
@@ -217,31 +217,31 @@ Gump *TextWidget::OnMouseMotion(int32 mx, int32 my) {
 void TextWidget::saveData(ODataSource *ods) {
 	Gump::saveData(ods);
 
-	ods->write1(_gameFont ? 1 : 0);
-	ods->write4(static_cast<uint32>(_fontNum));
-	ods->write4(_blendColour);
-	ods->write4(static_cast<uint32>(_currentStart));
-	ods->write4(static_cast<uint32>(_currentEnd));
-	ods->write4(static_cast<uint32>(_targetWidth));
-	ods->write4(static_cast<uint32>(_targetHeight));
-	ods->write2(static_cast<uint16>(_textAlign));
-	ods->write4(_text.size());
+	ods->writeByte(_gameFont ? 1 : 0);
+	ods->writeUint32LE(static_cast<uint32>(_fontNum));
+	ods->writeUint32LE(_blendColour);
+	ods->writeUint32LE(static_cast<uint32>(_currentStart));
+	ods->writeUint32LE(static_cast<uint32>(_currentEnd));
+	ods->writeUint32LE(static_cast<uint32>(_targetWidth));
+	ods->writeUint32LE(static_cast<uint32>(_targetHeight));
+	ods->writeUint16LE(static_cast<uint16>(_textAlign));
+	ods->writeUint32LE(_text.size());
 	ods->write(_text.c_str(), _text.size());
 }
 
 bool TextWidget::loadData(IDataSource *ids, uint32 version) {
 	if (!Gump::loadData(ids, version)) return false;
 
-	_gameFont = (ids->read1() != 0);
-	_fontNum = static_cast<int>(ids->read4());
-	_blendColour = ids->read4();
-	_currentStart = static_cast<int>(ids->read4());
-	_currentEnd = static_cast<int>(ids->read4());
-	_targetWidth = static_cast<int>(ids->read4());
-	_targetHeight = static_cast<int>(ids->read4());
-	_textAlign = static_cast<Font::TextAlign>(ids->read2());
+	_gameFont = (ids->readByte() != 0);
+	_fontNum = static_cast<int>(ids->readUint32LE());
+	_blendColour = ids->readUint32LE();
+	_currentStart = static_cast<int>(ids->readUint32LE());
+	_currentEnd = static_cast<int>(ids->readUint32LE());
+	_targetWidth = static_cast<int>(ids->readUint32LE());
+	_targetHeight = static_cast<int>(ids->readUint32LE());
+	_textAlign = static_cast<Font::TextAlign>(ids->readUint16LE());
 
-	uint32 slen = ids->read4();
+	uint32 slen = ids->readUint32LE();
 	if (slen > 0) {
 		char *buf = new char[slen + 1];
 		ids->read(buf, slen);
diff --git a/engines/ultima/ultima8/kernel/delay_process.cpp b/engines/ultima/ultima8/kernel/delay_process.cpp
index e838e017a1..ac3f209296 100644
--- a/engines/ultima/ultima8/kernel/delay_process.cpp
+++ b/engines/ultima/ultima8/kernel/delay_process.cpp
@@ -54,14 +54,14 @@ void DelayProcess::dumpInfo() const {
 bool DelayProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_count = static_cast<int>(ids->read4());
+	_count = static_cast<int>(ids->readUint32LE());
 
 	return true;
 }
 
 void DelayProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
-	ods->write4(static_cast<uint32>(_count));
+	ods->writeUint32LE(static_cast<uint32>(_count));
 }
 
 } // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/kernel/kernel.cpp b/engines/ultima/ultima8/kernel/kernel.cpp
index 708029be2d..5f6ca93aac 100644
--- a/engines/ultima/ultima8/kernel/kernel.cpp
+++ b/engines/ultima/ultima8/kernel/kernel.cpp
@@ -322,20 +322,20 @@ void Kernel::killProcessesNotOfType(ObjId objid, uint16 processtype, bool fail)
 }
 
 void Kernel::save(ODataSource *ods) {
-	ods->write4(_frameNum);
+	ods->writeUint32LE(_frameNum);
 	_pIDs->save(ods);
-	ods->write4(_processes.size());
+	ods->writeUint32LE(_processes.size());
 	for (ProcessIterator it = _processes.begin(); it != _processes.end(); ++it) {
 		(*it)->save(ods);
 	}
 }
 
 bool Kernel::load(IDataSource *ids, uint32 version) {
-	_frameNum = ids->read4();
+	_frameNum = ids->readUint32LE();
 
 	if (!_pIDs->load(ids, version)) return false;
 
-	const uint32 pcount = ids->read4();
+	const uint32 pcount = ids->readUint32LE();
 
 	for (unsigned int i = 0; i < pcount; ++i) {
 		Process *p = loadProcess(ids, version);
@@ -347,7 +347,7 @@ bool Kernel::load(IDataSource *ids, uint32 version) {
 }
 
 Process *Kernel::loadProcess(IDataSource *ids, uint32 version) {
-	const uint16 classlen = ids->read2();
+	const uint16 classlen = ids->readUint16LE();
 	char *buf = new char[classlen + 1];
 	ids->read(buf, classlen);
 	buf[classlen] = 0;
diff --git a/engines/ultima/ultima8/kernel/object.cpp b/engines/ultima/ultima8/kernel/object.cpp
index 4da725684d..7975ad611a 100644
--- a/engines/ultima/ultima8/kernel/object.cpp
+++ b/engines/ultima/ultima8/kernel/object.cpp
@@ -80,7 +80,7 @@ void Object::writeObjectHeader(ODataSource *ods) const {
 	const char *cname = GetClassType()._className; // note: virtual
 	uint16 clen = strlen(cname);
 
-	ods->write2(clen);
+	ods->writeUint16LE(clen);
 	ods->write(cname, clen);
 }
 
@@ -88,11 +88,11 @@ void Object::saveData(ODataSource *ods) {
 	// note: Object is unversioned. If we ever want to version it,
 	// increase the global savegame version
 
-	ods->write2(_objId);
+	ods->writeUint16LE(_objId);
 }
 
 bool Object::loadData(IDataSource *ids, uint32 version) {
-	_objId = ids->read2();
+	_objId = ids->readUint16LE();
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/kernel/object_manager.cpp b/engines/ultima/ultima8/kernel/object_manager.cpp
index 8666f25f03..2dce59685f 100644
--- a/engines/ultima/ultima8/kernel/object_manager.cpp
+++ b/engines/ultima/ultima8/kernel/object_manager.cpp
@@ -232,7 +232,7 @@ void ObjectManager::save(ODataSource *ods) {
 		object->save(ods);
 	}
 
-	ods->write2(0);
+	ods->writeUint16LE(0);
 }
 
 
@@ -242,7 +242,7 @@ bool ObjectManager::load(IDataSource *ids, uint32 version) {
 
 	do {
 		// peek ahead for terminator
-		uint16 classlen = ids->read2();
+		uint16 classlen = ids->readUint16LE();
 		if (classlen == 0) break;
 		char *buf = new char[classlen + 1];
 		ids->read(buf, classlen);
@@ -291,7 +291,7 @@ bool ObjectManager::load(IDataSource *ids, uint32 version) {
 }
 
 Object *ObjectManager::loadObject(IDataSource *ids, uint32 version) {
-	uint16 classlen = ids->read2();
+	uint16 classlen = ids->readUint16LE();
 	char *buf = new char[classlen + 1];
 	ids->read(buf, classlen);
 	buf[classlen] = 0;
diff --git a/engines/ultima/ultima8/kernel/process.cpp b/engines/ultima/ultima8/kernel/process.cpp
index 9ae109907d..4e90f3a4f4 100644
--- a/engines/ultima/ultima8/kernel/process.cpp
+++ b/engines/ultima/ultima8/kernel/process.cpp
@@ -128,31 +128,31 @@ void Process::writeProcessHeader(ODataSource *ods) {
 	const char *cname = GetClassType()._className; // virtual
 	uint16 clen = strlen(cname);
 
-	ods->write2(clen);
+	ods->writeUint16LE(clen);
 	ods->write(cname, clen);
 }
 
 void Process::saveData(ODataSource *ods) {
-	ods->write2(_pid);
-	ods->write4(_flags);
-	ods->write2(_itemNum);
-	ods->write2(_type);
-	ods->write4(_result);
-	ods->write4(static_cast<uint32>(_waiting.size()));
+	ods->writeUint16LE(_pid);
+	ods->writeUint32LE(_flags);
+	ods->writeUint16LE(_itemNum);
+	ods->writeUint16LE(_type);
+	ods->writeUint32LE(_result);
+	ods->writeUint32LE(static_cast<uint32>(_waiting.size()));
 	for (unsigned int i = 0; i < _waiting.size(); ++i)
-		ods->write2(_waiting[i]);
+		ods->writeUint16LE(_waiting[i]);
 }
 
 bool Process::loadData(IDataSource *ids, uint32 version) {
-	_pid = ids->read2();
-	_flags = ids->read4();
-	_itemNum = ids->read2();
-	_type = ids->read2();
-	_result = ids->read4();
-	uint32 waitcount = ids->read4();
+	_pid = ids->readUint16LE();
+	_flags = ids->readUint32LE();
+	_itemNum = ids->readUint16LE();
+	_type = ids->readUint16LE();
+	_result = ids->readUint32LE();
+	uint32 waitcount = ids->readUint32LE();
 	_waiting.resize(waitcount);
 	for (unsigned int i = 0; i < waitcount; ++i)
-		_waiting[i] = ids->read2();
+		_waiting[i] = ids->readUint16LE();
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/misc/id_man.cpp b/engines/ultima/ultima8/misc/id_man.cpp
index 2ae2d2552f..da9ee898b6 100644
--- a/engines/ultima/ultima8/misc/id_man.cpp
+++ b/engines/ultima/ultima8/misc/id_man.cpp
@@ -184,25 +184,25 @@ void idMan::clearID(uint16 id) {
 }
 
 void idMan::save(ODataSource *ods) {
-	ods->write2(_begin);
-	ods->write2(_end);
-	ods->write2(_maxEnd);
-	ods->write2(_startCount);
-	ods->write2(_usedCount);
+	ods->writeUint16LE(_begin);
+	ods->writeUint16LE(_end);
+	ods->writeUint16LE(_maxEnd);
+	ods->writeUint16LE(_startCount);
+	ods->writeUint16LE(_usedCount);
 	uint16 cur = _first;
 	while (cur) {
-		ods->write2(cur);
+		ods->writeUint16LE(cur);
 		cur = _ids[cur];
 	}
-	ods->write2(0); // terminator
+	ods->writeUint16LE(0); // terminator
 }
 
 bool idMan::load(IDataSource *ds, uint32 version) {
-	_begin = ds->read2();
-	_end = ds->read2();
-	_maxEnd = ds->read2();
-	_startCount = ds->read2();
-	uint16 realusedcount = ds->read2();
+	_begin = ds->readUint16LE();
+	_end = ds->readUint16LE();
+	_maxEnd = ds->readUint16LE();
+	_startCount = ds->readUint16LE();
+	uint16 realusedcount = ds->readUint16LE();
 
 	_ids.resize(_end + 1);
 
@@ -211,10 +211,10 @@ bool idMan::load(IDataSource *ds, uint32 version) {
 	}
 	_first = _last = 0;
 
-	uint16 cur = ds->read2();
+	uint16 cur = ds->readUint16LE();
 	while (cur) {
 		clearID(cur);
-		cur = ds->read2();
+		cur = ds->readUint16LE();
 	}
 
 	_usedCount = realusedcount;
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index 609393251c..d099bf4d08 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -914,17 +914,17 @@ void Ultima8Engine::writeSaveInfo(ODataSource *ods) {
 	TimeDate timeInfo;
 	g_system->getTimeAndDate(timeInfo);
 
-	ods->write2(static_cast<uint16>(timeInfo.tm_year + 1900));
-	ods->write1(static_cast<uint8>(timeInfo.tm_mon + 1));
-	ods->write1(static_cast<uint8>(timeInfo.tm_mday));
-	ods->write1(static_cast<uint8>(timeInfo.tm_hour));
-	ods->write1(static_cast<uint8>(timeInfo.tm_min));
-	ods->write1(static_cast<uint8>(timeInfo.tm_sec));
-	ods->write4(_saveCount);
-	ods->write4(getGameTimeInSeconds());
+	ods->writeUint16LE(static_cast<uint16>(timeInfo.tm_year + 1900));
+	ods->writeByte(static_cast<uint8>(timeInfo.tm_mon + 1));
+	ods->writeByte(static_cast<uint8>(timeInfo.tm_mday));
+	ods->writeByte(static_cast<uint8>(timeInfo.tm_hour));
+	ods->writeByte(static_cast<uint8>(timeInfo.tm_min));
+	ods->writeByte(static_cast<uint8>(timeInfo.tm_sec));
+	ods->writeUint32LE(_saveCount);
+	ods->writeUint32LE(getGameTimeInSeconds());
 
 	uint8 c = (_hasCheated ? 1 : 0);
-	ods->write1(c);
+	ods->writeByte(c);
 
 	// write _game-specific info
 	_game->writeSaveInfo(ods);
@@ -1379,49 +1379,49 @@ uint32 Ultima8Engine::getGameTimeInSeconds() {
 
 void Ultima8Engine::save(ODataSource *ods) {
 	uint8 s = (_avatarInStasis ? 1 : 0);
-	ods->write1(s);
+	ods->writeByte(s);
 
 	int32 absoluteTime = Kernel::get_instance()->getFrameNum() + _timeOffset;
-	ods->write4(static_cast<uint32>(absoluteTime));
-	ods->write2(_avatarMoverProcess->getPid());
+	ods->writeUint32LE(static_cast<uint32>(absoluteTime));
+	ods->writeUint16LE(_avatarMoverProcess->getPid());
 
 	Palette *pal = PaletteManager::get_instance()->getPalette(PaletteManager::Pal_Game);
-	for (int i = 0; i < 12; i++) ods->write2(pal->_matrix[i]);
-	ods->write2(pal->_transform);
+	for (int i = 0; i < 12; i++) ods->writeUint16LE(pal->_matrix[i]);
+	ods->writeUint16LE(pal->_transform);
 
-	ods->write2(static_cast<uint16>(_inversion));
+	ods->writeUint16LE(static_cast<uint16>(_inversion));
 
-	ods->write4(_saveCount);
+	ods->writeUint32LE(_saveCount);
 
 	uint8 c = (_hasCheated ? 1 : 0);
-	ods->write1(c);
+	ods->writeByte(c);
 }
 
 bool Ultima8Engine::load(IDataSource *ids, uint32 version) {
-	_avatarInStasis = (ids->read1() != 0);
+	_avatarInStasis = (ids->readByte() != 0);
 
 	// no gump should be moused over after load
 	_mouse->resetMouseOverGump();
 
-	int32 absoluteTime = static_cast<int32>(ids->read4());
+	int32 absoluteTime = static_cast<int32>(ids->readUint32LE());
 	_timeOffset = absoluteTime - Kernel::get_instance()->getFrameNum();
 
-	uint16 amppid = ids->read2();
+	uint16 amppid = ids->readUint16LE();
 	_avatarMoverProcess = p_dynamic_cast<AvatarMoverProcess *>(Kernel::get_instance()->getProcess(amppid));
 
 	int16 matrix[12];
 	for (int i = 0; i < 12; i++)
-		matrix[i] = ids->read2();
+		matrix[i] = ids->readUint16LE();
 
 	PaletteManager::get_instance()->transformPalette(PaletteManager::Pal_Game, matrix);
 	Palette *pal = PaletteManager::get_instance()->getPalette(PaletteManager::Pal_Game);
-	pal->_transform = static_cast<PalTransforms>(ids->read2());
+	pal->_transform = static_cast<PalTransforms>(ids->readUint16LE());
 
-	_inversion = ids->read2();
+	_inversion = ids->readUint16LE();
 
-	_saveCount = ids->read4();
+	_saveCount = ids->readUint32LE();
 
-	_hasCheated = (ids->read1() != 0);
+	_hasCheated = (ids->readByte() != 0);
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/usecode/bit_set.cpp b/engines/ultima/ultima8/usecode/bit_set.cpp
index ea8e3f9568..6dcf0cdb3b 100644
--- a/engines/ultima/ultima8/usecode/bit_set.cpp
+++ b/engines/ultima/ultima8/usecode/bit_set.cpp
@@ -116,12 +116,12 @@ void BitSet::setBits(unsigned int pos, unsigned int n, uint32 bits) {
 }
 
 void BitSet::save(ODataSource *ods) {
-	ods->write4(_size);
+	ods->writeUint32LE(_size);
 	ods->write(_data, _bytes);
 }
 
 bool BitSet::load(IDataSource *ids, uint32 version) {
-	uint32 s = ids->read4();
+	uint32 s = ids->readUint32LE();
 	setSize(s);
 	ids->read(_data, _bytes);
 
diff --git a/engines/ultima/ultima8/usecode/uc_list.cpp b/engines/ultima/ultima8/usecode/uc_list.cpp
index e54e48b1ed..ce0d4344d2 100644
--- a/engines/ultima/ultima8/usecode/uc_list.cpp
+++ b/engines/ultima/ultima8/usecode/uc_list.cpp
@@ -117,15 +117,15 @@ void UCList::removeString(uint16 s, bool nodel) {
 }
 
 void UCList::save(ODataSource *ods) {
-	ods->write4(_elementSize);
-	ods->write4(_size);
+	ods->writeUint32LE(_elementSize);
+	ods->writeUint32LE(_size);
 	ods->write(&(_elements[0]), _size * _elementSize);
 }
 
 
 bool UCList::load(IDataSource *ids, uint32 version) {
-	_elementSize = ids->read4();
-	_size = ids->read4();
+	_elementSize = ids->readUint32LE();
+	_size = ids->readUint32LE();
 	_elements.resize(_size * _elementSize);
 	ids->read(&(_elements[0]), _size * _elementSize);
 
diff --git a/engines/ultima/ultima8/usecode/uc_machine.cpp b/engines/ultima/ultima8/usecode/uc_machine.cpp
index 8b4d4719b8..5282b515e9 100644
--- a/engines/ultima/ultima8/usecode/uc_machine.cpp
+++ b/engines/ultima/ultima8/usecode/uc_machine.cpp
@@ -155,7 +155,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		//! guard against reading past end of class
 		//! guard against other error conditions
 
-		uint8 opcode = cs.read1();
+		uint8 opcode = cs.readByte();
 
 #ifdef DEBUG
 		uint16 trace_classid = p->_classId;
@@ -179,7 +179,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x00:
 			// 00 xx
 			// pop 16 bit int, and assign LS 8 bit int into bp+xx
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			ui16a = p->_stack.pop2();
 			p->_stack.assign1(p->_bp + si8a, static_cast<uint8>(ui16a));
 			LOGPF(("pop byte\t%s = %02Xh\n", print_bp(si8a), ui16a));
@@ -188,7 +188,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x01:
 			// 01 xx
 			// pop 16 bit int into bp+xx
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			ui16a = p->_stack.pop2();
 			p->_stack.assign2(p->_bp + si8a, ui16a);
 			LOGPF(("pop\t\t%s = %04Xh\n", print_bp(si8a), ui16a));
@@ -197,7 +197,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x02:
 			// 02 xx
 			// pop 32 bit int into bp+xx
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			ui32a = p->_stack.pop4();
 			p->_stack.assign4(p->_bp + si8a, ui32a);
 			LOGPF(("pop dword\t%s = %08Xh\n", print_bp(si8a), ui32a));
@@ -207,8 +207,8 @@ void UCMachine::execProcess(UCProcess *p) {
 			// 03 xx yy
 			// pop yy bytes into bp+xx
 		{
-			si8a = static_cast<int8>(cs.read1());
-			uint8 size = cs.read1();
+			si8a = static_cast<int8>(cs.readByte());
+			uint8 size = cs.readByte();
 			uint8 buf[256];
 			p->_stack.pop(buf, size);
 			p->_stack.assign(p->_bp + si8a, buf, size);
@@ -230,9 +230,9 @@ void UCMachine::execProcess(UCProcess *p) {
 			// 09 xx yy zz
 			// pop yy bytes into an element of list bp+xx (or slist if zz set)
 		{
-			si8a = static_cast<int8>(cs.read1());
-			ui32a = cs.read1();
-			si8b = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
+			ui32a = cs.readByte();
+			si8b = static_cast<int8>(cs.readByte());
 			LOGPF(("assign element\t%s (%02X) (slist==%02X)\n",
 			       print_bp(si8a), ui32a, si8b));
 			ui16a = p->_stack.pop2() - 1; // index
@@ -266,7 +266,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x0A:
 			// 0A xx
 			// push sign-extended 8 bit xx onto the stack as 16 bit
-			ui16a = static_cast<int8>(cs.read1());
+			ui16a = static_cast<int8>(cs.readByte());
 			p->_stack.push2(ui16a);
 			LOGPF(("push byte\t%04Xh\n", ui16a));
 			break;
@@ -274,7 +274,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x0B:
 			// 0B xx xx
 			// push 16 bit xxxx onto the stack
-			ui16a = cs.read2();
+			ui16a = cs.readUint16LE();
 			p->_stack.push2(ui16a);
 			LOGPF(("push\t\t%04Xh\n", ui16a));
 			break;
@@ -282,7 +282,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x0C:
 			// 0C xx xx xx xx
 			// push 32 bit xxxxxxxx onto the stack
-			ui32a = cs.read4();
+			ui32a = cs.readUint32LE();
 			p->_stack.push4(ui32a);
 			LOGPF(("push dword\t%08Xh\n", ui32a));
 			break;
@@ -291,7 +291,7 @@ void UCMachine::execProcess(UCProcess *p) {
 			// 0D xx xx yy ... yy 00
 			// push string (yy ... yy) of length xx xx onto the stack
 		{
-			ui16a = cs.read2();
+			ui16a = cs.readUint16LE();
 			char *str = new char[ui16a + 1];
 			cs.read(str, ui16a);
 			str[ui16a] = 0;
@@ -307,7 +307,7 @@ void UCMachine::execProcess(UCProcess *p) {
 
 
 			LOGPF(("push string\t\"%s\"\n", str));
-			ui16b = cs.read1();
+			ui16b = cs.readByte();
 			if (ui16b != 0) {
 				perr << "Zero terminator missing in push string"
 				     << Std::endl;
@@ -323,8 +323,8 @@ void UCMachine::execProcess(UCProcess *p) {
 			// pop yy values of size xx and push the resulting list
 			// (list is created in reverse order)
 		{
-			ui16a = cs.read1();
-			ui16b = cs.read1();
+			ui16a = cs.readByte();
+			ui16b = cs.readByte();
 			UCList *l = new UCList(ui16a, ui16b);
 			p->_stack.addSP(ui16a * (ui16b - 1));
 			for (unsigned int i = 0; i < ui16b; i++) {
@@ -347,8 +347,8 @@ void UCMachine::execProcess(UCProcess *p) {
 			// NB: do not actually pop these argument bytes
 		{
 			//! TODO
-			uint16 arg_bytes = cs.read1();
-			uint16 func = cs.read2();
+			uint16 arg_bytes = cs.readByte();
+			uint16 func = cs.readUint16LE();
 			debug(MM_INFO, "calli\t\t%04Xh (%02Xh arg bytes) %s \n", func, arg_bytes, _convUse->intrinsics()[func]);
 
 			// !constants
@@ -391,15 +391,15 @@ void UCMachine::execProcess(UCProcess *p) {
 			// Crusader:
 			// call function number yy yy of class xx xx
 		{
-			uint16 new_classid = cs.read2();
-			uint16 new_offset = cs.read2();
+			uint16 new_classid = cs.readUint16LE();
+			uint16 new_offset = cs.readUint16LE();
 			LOGPF(("call\t\t%04X:%04X\n", new_classid, new_offset));
 			if (GAME_IS_CRUSADER) {
 				new_offset = p->_usecode->get_class_event(new_classid,
 				             new_offset);
 			}
 
-			p->_ip = static_cast<uint16>(cs.getPos());   // Truncates!!
+			p->_ip = static_cast<uint16>(cs.pos());   // Truncates!!
 			p->call(new_classid, new_offset);
 
 			// Update the code segment
@@ -508,7 +508,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x19:
 			// 19 02
 			// add two stringlists, removing duplicates
-			ui32a = cs.read1();
+			ui32a = cs.readByte();
 			if (ui32a != 2) {
 				perr << "Unhandled operand " << ui32a << " to union slist"
 				     << Std::endl;
@@ -527,7 +527,7 @@ void UCMachine::execProcess(UCProcess *p) {
 			// substract string list
 			// NB: this one takes a length parameter in crusader. (not in U8)!!
 			// (or rather, it seems it takes one after all? -wjp,20030511)
-			ui32a = cs.read1(); // elementsize
+			ui32a = cs.readByte(); // elementsize
 			ui32a = 2;
 			ui16a = p->_stack.pop2();
 			ui16b = p->_stack.pop2();
@@ -542,7 +542,7 @@ void UCMachine::execProcess(UCProcess *p) {
 			// pop two lists from the stack and remove the 2nd from the 1st
 			// (free the originals? order?)
 			// only occurs in crusader.
-			ui32a = cs.read1(); // elementsize
+			ui32a = cs.readByte(); // elementsize
 			ui16a = p->_stack.pop2();
 			ui16b = p->_stack.pop2();
 			getList(ui16b)->substractList(*getList(ui16a));
@@ -902,8 +902,8 @@ void UCMachine::execProcess(UCProcess *p) {
 			// is element (size xx) in list? (or slist if yy is true)
 			// free list/slist afterwards
 
-			ui16a = cs.read1();
-			ui32a = cs.read1();
+			ui16a = cs.readByte();
+			ui32a = cs.readByte();
 			ui16b = p->_stack.pop2();
 			if (ui32a) { // stringlist
 				if (ui16a != 2) {
@@ -979,7 +979,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x3E:
 			// 3E xx
 			// push the value of the unsigned 8 bit local var xx as 16 bit int
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			ui16a = p->_stack.access1(p->_bp + si8a);
 			p->_stack.push2(ui16a);
 			LOGPF(("push byte\t%s = %02Xh\n", print_bp(si8a), ui16a));
@@ -988,7 +988,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x3F:
 			// 3F xx
 			// push the value of the 16 bit local var xx
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			ui16a = p->_stack.access2(p->_bp + si8a);
 			p->_stack.push2(ui16a);
 			LOGPF(("push\t\t%s = %04Xh\n", print_bp(si8a), ui16a));
@@ -997,7 +997,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x40:
 			// 40 xx
 			// push the value of the 32 bit local var xx
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			ui32a = p->_stack.access4(p->_bp + si8a);
 			p->_stack.push4(ui32a);
 			LOGPF(("push dword\t%s = %08Xh\n", print_bp(si8a), ui32a));
@@ -1008,7 +1008,7 @@ void UCMachine::execProcess(UCProcess *p) {
 			// push the string local var xx
 			// duplicating the string?
 		{
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			ui16a = p->_stack.access2(p->_bp + si8a);
 			p->_stack.push2(duplicateString(ui16a));
 			LOGPF(("push string\t%s\n", print_bp(si8a)));
@@ -1020,8 +1020,8 @@ void UCMachine::execProcess(UCProcess *p) {
 			// push the list (with yy size elements) at BP+xx
 			// duplicating the list?
 		{
-			si8a = static_cast<int8>(cs.read1());
-			ui16a = cs.read1();
+			si8a = static_cast<int8>(cs.readByte());
+			ui16a = cs.readByte();
 			ui16b = p->_stack.access2(p->_bp + si8a);
 			UCList *l = new UCList(ui16a);
 			if (getList(ui16b)) {
@@ -1044,8 +1044,8 @@ void UCMachine::execProcess(UCProcess *p) {
 			// push the stringlist local var xx
 			// duplicating the list, duplicating the strings in the list
 		{
-			si8a = static_cast<int8>(cs.read1());
-//!U8               ui16a = cs.read1();
+			si8a = static_cast<int8>(cs.readByte());
+//!U8               ui16a = cs.readByte();
 			ui16a = 2;
 			ui16b = p->_stack.access2(p->_bp + si8a);
 			UCList *l = new UCList(ui16a);
@@ -1073,8 +1073,8 @@ void UCMachine::execProcess(UCProcess *p) {
 			// in two places in U8: once it pops into temp afterwards,
 			// once it is indeed freed. So, guessing we should duplicate.
 		{
-			ui32a = cs.read1();
-			ui32b = cs.read1();
+			ui32a = cs.readByte();
+			ui32b = cs.readByte();
 			ui16a = p->_stack.pop2() - 1; // index
 			ui16b = p->_stack.pop2(); // list
 			UCList *l = getList(ui16b);
@@ -1104,8 +1104,8 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x45:
 			// 45 xx yy
 			// push huge of size yy from BP+xx
-			si8a = static_cast<int8>(cs.read1());
-			ui16b = cs.read1();
+			si8a = static_cast<int8>(cs.readByte());
+			ui16b = cs.readByte();
 			p->_stack.push(p->_stack.access(p->_bp + si8a), ui16b);
 			LOGPF(("push huge\t%s %02X\n", print_bp(si8a), ui16b));
 			break;
@@ -1113,7 +1113,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x4B:
 			// 4B xx
 			// push 32 bit pointer address of BP+XX
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			p->_stack.push4(stackToPtr(p->_pid, p->_bp + si8a));
 			LOGPF(("push addr\t%s\n", print_bp(si8a)));
 			break;
@@ -1124,7 +1124,7 @@ void UCMachine::execProcess(UCProcess *p) {
 			// pops a 32 bit pointer off the stack and pushes xx bytes
 			// from the location referenced by the pointer
 		{
-			ui16a = cs.read1();
+			ui16a = cs.readByte();
 			ui32a = p->_stack.pop4();
 
 			p->_stack.addSP(-ui16a);
@@ -1148,7 +1148,7 @@ void UCMachine::execProcess(UCProcess *p) {
 			// pops a 32 bit pointer off the stack and pushes xx bytes
 			// from the location referenced by the pointer
 		{
-			ui16a = cs.read1();
+			ui16a = cs.readByte();
 			ui32a = p->_stack.pop4();
 
 			if (assignPointer(ui32a, p->_stack.access(), ui16a)) {
@@ -1164,8 +1164,8 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x4E:
 			// 4E xx xx yy
 			// push global xxxx size yy bits
-			ui16a = cs.read2();
-			ui16b = cs.read1();
+			ui16a = cs.readUint16LE();
+			ui16b = cs.readByte();
 			// TODO: get flagname for output?
 
 			ui32a = _globals->getBits(ui16a, ui16b);
@@ -1176,8 +1176,8 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x4F:
 			// 4F xx xx yy
 			// pop value into global xxxx size yy bits
-			ui16a = cs.read2();
-			ui16b = cs.read1();
+			ui16a = cs.readUint16LE();
+			ui16b = cs.readByte();
 			// TODO: get flagname for output?
 			ui32a = p->_stack.pop2();
 			_globals->setBits(ui16a, ui16b, ui32a);
@@ -1222,26 +1222,26 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x51:
 			// 51 xx xx
 			// relative jump to xxxx if false
-			si16a = static_cast<int16>(cs.read2());
+			si16a = static_cast<int16>(cs.readUint16LE());
 			ui16b = p->_stack.pop2();
 			if (!ui16b) {
-				ui16a = cs.getPos() + si16a;
+				ui16a = cs.pos() + si16a;
 				cs.seek(ui16a);
 				LOGPF(("jne\t\t%04hXh\t(to %04X) (taken)\n", si16a,
-				       cs.getPos()));
+				       cs.pos()));
 			} else {
 				LOGPF(("jne\t\t%04hXh\t(to %04X) (not taken)\n", si16a,
-				       cs.getPos()));
+				       cs.pos()));
 			}
 			break;
 
 		case 0x52:
 			// 52 xx xx
 			// relative jump to xxxx
-			si16a = static_cast<int16>(cs.read2());
-			ui16a = cs.getPos() + si16a;
+			si16a = static_cast<int16>(cs.readUint16LE());
+			ui16a = cs.pos() + si16a;
 			cs.seek(ui16a);
-			LOGPF(("jmp\t\t%04hXh\t(to %04X)\n", si16a, cs.getPos()));
+			LOGPF(("jmp\t\t%04hXh\t(to %04X)\n", si16a, cs.pos()));
 			break;
 
 		case 0x53:
@@ -1273,7 +1273,7 @@ void UCMachine::execProcess(UCProcess *p) {
 			// an 'implies'
 
 		{
-			cs.read2(); // skip the 01 01
+			cs.readUint16LE(); // skip the 01 01
 			ui16a = p->_stack.pop2();
 			ui16b = p->_stack.pop2();
 			p->_stack.push2(ui16a); //!! which _pid do we need to push!?
@@ -1313,10 +1313,10 @@ void UCMachine::execProcess(UCProcess *p) {
 			// only remove the this pointer from stack (4 bytes)
 			// put PID of spawned process in temp
 		{
-			int arg_bytes = cs.read1();
-			int this_size = cs.read1();
-			uint16 classid = cs.read2();
-			uint16 offset = cs.read2();
+			int arg_bytes = cs.readByte();
+			int this_size = cs.readByte();
+			uint16 classid = cs.readUint16LE();
+			uint16 offset = cs.readUint16LE();
 
 			uint32 thisptr = p->_stack.pop4();
 
@@ -1361,11 +1361,11 @@ void UCMachine::execProcess(UCProcess *p) {
 			// uu = unknown (occurring values: 00, 02, 05)
 
 		{
-			uint16 classid = cs.read2();
-			uint16 offset = cs.read2();
-			uint16 delta = cs.read2();
-			int this_size = cs.read1();
-			int unknown = cs.read1(); // ??
+			uint16 classid = cs.readUint16LE();
+			uint16 offset = cs.readUint16LE();
+			uint16 delta = cs.readUint16LE();
+			int this_size = cs.readByte();
+			int unknown = cs.readByte(); // ??
 
 			debug(MM_INFO, "spawn inline\t%04X:%04X+%04X=%04X %02X %02X\n",
 				classid, offset, delta, offset + delta, this_size, unknown);
@@ -1406,7 +1406,7 @@ void UCMachine::execProcess(UCProcess *p) {
 			// 5A xx
 			// init function. xx = local var size
 			// sets xx bytes on stack to 0, moving sp
-			ui16a = cs.read1();
+			ui16a = cs.readByte();
 			LOGPF(("init\t\t%02X\n", ui16a));
 
 			if (ui16a & 1) ui16a++; // 16-bit align
@@ -1458,7 +1458,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x62:
 			// 62 xx
 			// free the string in var BP+xx
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			ui16a = p->_stack.access2(p->_bp + si8a);
 			freeString(ui16a);
 			LOGPF(("free string\t%s = %04X\n", print_bp(si8a), ui16a));
@@ -1467,7 +1467,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x63:
 			// 63 xx
 			// free the stringlist in var BP+xx
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			ui16a = p->_stack.access2(p->_bp + si8a);
 			freeStringList(ui16a);
 			LOGPF(("free slist\t%s = %04X\n", print_bp(si8a), ui16a));
@@ -1476,7 +1476,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x64:
 			// 64 xx
 			// free the list in var BP+xx
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			ui16a = p->_stack.access2(p->_bp + si8a);
 			freeList(ui16a);
 			LOGPF(("free list\t%s = %04X\n", print_bp(si8a), ui16a));
@@ -1487,7 +1487,7 @@ void UCMachine::execProcess(UCProcess *p) {
 			// free the string at SP+xx
 			// NB: sometimes there's a 32-bit string pointer at SP+xx
 			//     However, the low word of this is exactly the 16bit ref
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			ui16a = p->_stack.access2(p->_stack.getSP() + si8a);
 			freeString(ui16a);
 			LOGPF(("free string\t%s = %04X\n", print_sp(si8a), ui16a));
@@ -1496,7 +1496,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x66:
 			// 66 xx
 			// free the list at SP+xx
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			ui16a = p->_stack.access2(p->_stack.getSP() + si8a);
 			freeList(ui16a);
 			LOGPF(("free list\t%s = %04X\n", print_sp(si8a), ui16a));
@@ -1505,7 +1505,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x67:
 			// 67 xx
 			// free the string list at SP+xx
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			ui16a = p->_stack.access2(p->_stack.getSP() + si8a);
 			freeStringList(ui16a);
 			LOGPF(("free slist\t%s = %04x\n", print_sp(si8a), ui16a));
@@ -1514,7 +1514,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x69:
 			// 69 xx
 			// push the string in var BP+xx as 32 bit pointer
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			ui16a = p->_stack.access2(p->_bp + si8a);
 			p->_stack.push4(stringToPtr(ui16a));
 			LOGPF(("str to ptr\t%s\n", print_bp(si8a)));
@@ -1533,8 +1533,8 @@ void UCMachine::execProcess(UCProcess *p) {
 			// yy = type (01 = string, 02 = slist, 03 = list)
 			// copy the (string/slist/list) in BP+xx to the current process,
 			// and add it to the "Free Me" list of the process
-			si8a = cs.read1(); // index
-			ui8a = cs.read1(); // type
+			si8a = cs.readByte(); // index
+			ui8a = cs.readByte(); // type
 			LOGPF(("param _pid chg\t%s, type=%u\n", print_bp(si8a), ui8a));
 
 			ui16a = p->_stack.access2(p->_bp + si8a);
@@ -1580,7 +1580,7 @@ void UCMachine::execProcess(UCProcess *p) {
 			// 6E xx
 			// substract xx from stack pointer
 			// (effect on SP is the same as popping xx bytes)
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			p->_stack.addSP(-si8a);
 			LOGPF(("move sp\t\t%s%02Xh\n", si8a < 0 ? "-" : "", si8a < 0 ? -si8a : si8a));
 			break;
@@ -1589,7 +1589,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x6F:
 			// 6F xx
 			// push 32 pointer address of SP-xx
-			si8a = static_cast<int8>(cs.read1());
+			si8a = static_cast<int8>(cs.readByte());
 			p->_stack.push4(stackToPtr(p->_pid, static_cast<uint16>(p->_stack.getSP() - si8a)));
 			LOGPF(("push addr\t%s\n", print_sp(-si8a)));
 			break;
@@ -1612,8 +1612,8 @@ void UCMachine::execProcess(UCProcess *p) {
 			// zz == type
 		{
 			si16a = cs.readXS(1);
-			uint32 scriptsize = cs.read1();
-			uint32 searchtype = cs.read1();
+			uint32 scriptsize = cs.readByte();
+			uint32 searchtype = cs.readByte();
 
 			ui16a = p->_stack.pop2();
 			ui16b = p->_stack.pop2();
@@ -1802,7 +1802,7 @@ void UCMachine::execProcess(UCProcess *p) {
 		case 0x74:
 			// 74 xx
 			// add xx to the current 'loopscript'
-			ui8a = cs.read1();
+			ui8a = cs.readByte();
 			p->_stack.push1(ui8a);
 			LOGPF(("loopscr\t\t%02X \"%c\"\n", ui8a, static_cast<char>(ui8a)));
 			break;
@@ -1848,9 +1848,9 @@ void UCMachine::execProcess(UCProcess *p) {
 			// Strings are _not_ duplicated when putting them in the loopvar
 			// Lists _are_ freed afterwards
 
-			si8a = cs.read1();  // loop variable
-			ui32a = cs.read1(); // list size
-			si16a = cs.read2(); // jump offset
+			si8a = cs.readByte();  // loop variable
+			ui32a = cs.readByte(); // list size
+			si16a = cs.readUint16LE(); // jump offset
 
 			ui16a = p->_stack.access2(p->_stack.getSP());     // Loop index
 			ui16b = p->_stack.access2(p->_stack.getSP() + 2); // Loop list
@@ -1884,7 +1884,7 @@ void UCMachine::execProcess(UCProcess *p) {
 				p->_stack.addSP(4);  // Pop list and counter
 
 				// jump out
-				ui16a = cs.getPos() + si16a;
+				ui16a = cs.pos() + si16a;
 				cs.seek(ui16a);
 			} else {
 				// loop iteration
@@ -1953,7 +1953,7 @@ void UCMachine::execProcess(UCProcess *p) {
 
 		// write back IP (but preserve IP if there was an error)
 		if (!error)
-			p->_ip = static_cast<uint16>(cs.getPos());   // TRUNCATES!
+			p->_ip = static_cast<uint16>(cs.pos());   // TRUNCATES!
 
 		// check if we suspended ourselves
 		if ((p->_flags & Process::PROC_SUSPENDED) != 0)
@@ -2237,23 +2237,23 @@ void UCMachine::saveGlobals(ODataSource *ods) {
 
 void UCMachine::saveStrings(ODataSource *ods) {
 	_stringIDs->save(ods);
-	ods->write4(static_cast<uint32>(_stringHeap.size()));
+	ods->writeUint32LE(static_cast<uint32>(_stringHeap.size()));
 
 	Std::map<uint16, Std::string>::iterator iter;
 	for (iter = _stringHeap.begin(); iter != _stringHeap.end(); ++iter) {
-		ods->write2((*iter)._key);
-		ods->write4((*iter)._value.size());
+		ods->writeUint16LE((*iter)._key);
+		ods->writeUint32LE((*iter)._value.size());
 		ods->write((*iter)._value.c_str(), (*iter)._value.size());
 	}
 }
 
 void UCMachine::saveLists(ODataSource *ods) {
 	_listIDs->save(ods);
-	ods->write4(_listHeap.size());
+	ods->writeUint32LE(_listHeap.size());
 
 	Std::map<uint16, UCList *>::iterator iter;
 	for (iter = _listHeap.begin(); iter != _listHeap.end(); ++iter) {
-		ods->write2((*iter)._key);
+		ods->writeUint16LE((*iter)._key);
 		(*iter)._value->save(ods);
 	}
 }
@@ -2265,10 +2265,10 @@ bool UCMachine::loadGlobals(IDataSource *ids, uint32 version) {
 bool UCMachine::loadStrings(IDataSource *ids, uint32 version) {
 	if (!_stringIDs->load(ids, version)) return false;
 
-	uint32 stringcount = ids->read4();
+	uint32 stringcount = ids->readUint32LE();
 	for (unsigned int i = 0; i < stringcount; ++i) {
-		uint16 sid = ids->read2();
-		uint32 len = ids->read4();
+		uint16 sid = ids->readUint16LE();
+		uint32 len = ids->readUint32LE();
 		if (len) {
 			char *buf = new char[len + 1];
 			ids->read(buf, len);
@@ -2286,9 +2286,9 @@ bool UCMachine::loadStrings(IDataSource *ids, uint32 version) {
 bool UCMachine::loadLists(IDataSource *ids, uint32 version) {
 	if (!_listIDs->load(ids, version)) return false;
 
-	uint32 listcount = ids->read4();
+	uint32 listcount = ids->readUint32LE();
 	for (unsigned int i = 0; i < listcount; ++i) {
-		uint16 lid = ids->read2();
+		uint16 lid = ids->readUint16LE();
 		UCList *l = new UCList(2); // the "2" will be ignored by load()
 		bool ret = l->load(ids, version);
 		if (!ret) return false;
diff --git a/engines/ultima/ultima8/usecode/uc_process.cpp b/engines/ultima/ultima8/usecode/uc_process.cpp
index 8c9b7b2303..bdfe83906e 100644
--- a/engines/ultima/ultima8/usecode/uc_process.cpp
+++ b/engines/ultima/ultima8/usecode/uc_process.cpp
@@ -163,15 +163,15 @@ void UCProcess::dumpInfo() const {
 void UCProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write2(_bp);
-	ods->write2(_classId);
-	ods->write2(_ip);
-	ods->write4(_temp32);
-	ods->write4(static_cast<uint32>(_freeOnTerminate.size()));
+	ods->writeUint16LE(_bp);
+	ods->writeUint16LE(_classId);
+	ods->writeUint16LE(_ip);
+	ods->writeUint32LE(_temp32);
+	ods->writeUint32LE(static_cast<uint32>(_freeOnTerminate.size()));
 	Std::list<Std::pair<uint16, int> >::iterator iter;
 	for (iter = _freeOnTerminate.begin(); iter != _freeOnTerminate.end(); ++iter) {
-		ods->write2(iter->first);
-		ods->write4(static_cast<uint32>(iter->second));
+		ods->writeUint16LE(iter->first);
+		ods->writeUint32LE(static_cast<uint32>(iter->second));
 	}
 	_stack.save(ods);
 }
@@ -179,15 +179,15 @@ void UCProcess::saveData(ODataSource *ods) {
 bool UCProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_bp = ids->read2();
-	_classId = ids->read2();
-	_ip = ids->read2();
-	_temp32 = ids->read4();
-	uint32 freecount = ids->read4();
+	_bp = ids->readUint16LE();
+	_classId = ids->readUint16LE();
+	_ip = ids->readUint16LE();
+	_temp32 = ids->readUint32LE();
+	uint32 freecount = ids->readUint32LE();
 	for (unsigned int i = 0; i < freecount; ++i) {
 		Std::pair<uint16, int> p;
-		p.first = ids->read2();
-		p.second = static_cast<int>(ids->read4());
+		p.first = ids->readUint16LE();
+		p.second = static_cast<int>(ids->readUint32LE());
 		_freeOnTerminate.push_back(p);
 	}
 	_stack.load(ids, version);
diff --git a/engines/ultima/ultima8/usecode/uc_stack.cpp b/engines/ultima/ultima8/usecode/uc_stack.cpp
index 88824ad143..3506e61f9e 100644
--- a/engines/ultima/ultima8/usecode/uc_stack.cpp
+++ b/engines/ultima/ultima8/usecode/uc_stack.cpp
@@ -29,14 +29,14 @@ namespace Ultima {
 namespace Ultima8 {
 
 void UCStack::save(ODataSource *ods) {
-	ods->write4(_size);
-	ods->write4(getSP());
+	ods->writeUint32LE(_size);
+	ods->writeUint32LE(getSP());
 
 	ods->write(_bufPtr, stacksize());
 }
 
 bool UCStack::load(IDataSource *ids, uint32 version) {
-	_size = ids->read4();
+	_size = ids->readUint32LE();
 #ifdef USE_DYNAMIC_UCSTACK
 	if (_buf) delete[] _buf;
 	_buf = new uint8[_size];
@@ -47,7 +47,7 @@ bool UCStack::load(IDataSource *ids, uint32 version) {
 	}
 	_buf = _bufArray;
 #endif
-	uint32 sp = ids->read4();
+	uint32 sp = ids->readUint32LE();
 	_bufPtr = _buf + sp;
 
 	ids->read(_bufPtr, _size - sp);
diff --git a/engines/ultima/ultima8/world/actors/actor.cpp b/engines/ultima/ultima8/world/actors/actor.cpp
index 03fefebfb0..ab0ab880cb 100644
--- a/engines/ultima/ultima8/world/actors/actor.cpp
+++ b/engines/ultima/ultima8/world/actors/actor.cpp
@@ -1075,37 +1075,37 @@ void Actor::dumpInfo() const {
 
 void Actor::saveData(ODataSource *ods) {
 	Container::saveData(ods);
-	ods->write2(_strength);
-	ods->write2(_dexterity);
-	ods->write2(_intelligence);
-	ods->write2(_hitPoints);
-	ods->write2(_mana);
-	ods->write2(_alignment);
-	ods->write2(_enemyAlignment);
-	ods->write2(_lastAnim);
-	ods->write2(_animFrame);
-	ods->write2(_direction);
-	ods->write4(_fallStart);
-	ods->write4(_actorFlags);
-	ods->write1(_unk0C);
+	ods->writeUint16LE(_strength);
+	ods->writeUint16LE(_dexterity);
+	ods->writeUint16LE(_intelligence);
+	ods->writeUint16LE(_hitPoints);
+	ods->writeUint16LE(_mana);
+	ods->writeUint16LE(_alignment);
+	ods->writeUint16LE(_enemyAlignment);
+	ods->writeUint16LE(_lastAnim);
+	ods->writeUint16LE(_animFrame);
+	ods->writeUint16LE(_direction);
+	ods->writeUint32LE(_fallStart);
+	ods->writeUint32LE(_actorFlags);
+	ods->writeByte(_unk0C);
 }
 
 bool Actor::loadData(IDataSource *ids, uint32 version) {
 	if (!Container::loadData(ids, version)) return false;
 
-	_strength = static_cast<int16>(ids->read2());
-	_dexterity = static_cast<int16>(ids->read2());
-	_intelligence = static_cast<int16>(ids->read2());
-	_hitPoints = ids->read2();
-	_mana = static_cast<int16>(ids->read2());
-	_alignment = ids->read2();
-	_enemyAlignment = ids->read2();
-	_lastAnim = static_cast<Animation::Sequence>(ids->read2());
-	_animFrame = ids->read2();
-	_direction = ids->read2();
-	_fallStart = ids->read4();
-	_actorFlags = ids->read4();
-	_unk0C = ids->read1();
+	_strength = static_cast<int16>(ids->readUint16LE());
+	_dexterity = static_cast<int16>(ids->readUint16LE());
+	_intelligence = static_cast<int16>(ids->readUint16LE());
+	_hitPoints = ids->readUint16LE();
+	_mana = static_cast<int16>(ids->readUint16LE());
+	_alignment = ids->readUint16LE();
+	_enemyAlignment = ids->readUint16LE();
+	_lastAnim = static_cast<Animation::Sequence>(ids->readUint16LE());
+	_animFrame = ids->readUint16LE();
+	_direction = ids->readUint16LE();
+	_fallStart = ids->readUint32LE();
+	_actorFlags = ids->readUint32LE();
+	_unk0C = ids->readByte();
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/actors/actor_anim_process.cpp b/engines/ultima/ultima8/world/actors/actor_anim_process.cpp
index 6415d586a4..d60561da3c 100644
--- a/engines/ultima/ultima8/world/actors/actor_anim_process.cpp
+++ b/engines/ultima/ultima8/world/actors/actor_anim_process.cpp
@@ -635,38 +635,38 @@ void ActorAnimProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
 	uint8 ff = _firstFrame ? 1 : 0;
-	ods->write1(ff);
+	ods->writeByte(ff);
 	uint8 ab = _animAborted ? 1 : 0;
-	ods->write1(ab);
+	ods->writeByte(ab);
 	uint8 attacked = _attackedSomething ? 1 : 0;
-	ods->write1(attacked);
-	ods->write1(static_cast<uint8>(_dir));
-	ods->write2(static_cast<uint16>(_action));
-	ods->write2(static_cast<uint16>(_steps));
-	ods->write2(static_cast<uint16>(_repeatCounter));
-	ods->write2(static_cast<uint16>(_currentStep));
+	ods->writeByte(attacked);
+	ods->writeByte(static_cast<uint8>(_dir));
+	ods->writeUint16LE(static_cast<uint16>(_action));
+	ods->writeUint16LE(static_cast<uint16>(_steps));
+	ods->writeUint16LE(static_cast<uint16>(_repeatCounter));
+	ods->writeUint16LE(static_cast<uint16>(_currentStep));
 
 	if (_tracker) {
-		ods->write1(1);
+		ods->writeByte(1);
 		_tracker->save(ods);
 	} else
-		ods->write1(0);
+		ods->writeByte(0);
 }
 
 bool ActorAnimProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_firstFrame = (ids->read1() != 0);
-	_animAborted = (ids->read1() != 0);
-	_attackedSomething = (ids->read1() != 0);
-	_dir = ids->read1();
-	_action = static_cast<Animation::Sequence>(ids->read2());
-	_steps = ids->read2();
-	_repeatCounter = ids->read2();
-	_currentStep = ids->read2();
+	_firstFrame = (ids->readByte() != 0);
+	_animAborted = (ids->readByte() != 0);
+	_attackedSomething = (ids->readByte() != 0);
+	_dir = ids->readByte();
+	_action = static_cast<Animation::Sequence>(ids->readUint16LE());
+	_steps = ids->readUint16LE();
+	_repeatCounter = ids->readUint16LE();
+	_currentStep = ids->readUint16LE();
 
 	assert(_tracker == nullptr);
-	if (ids->read1() != 0) {
+	if (ids->readByte() != 0) {
 		_tracker = new AnimationTracker();
 		if (!_tracker->load(ids, version))
 			return false;
diff --git a/engines/ultima/ultima8/world/actors/ambush_process.cpp b/engines/ultima/ultima8/world/actors/ambush_process.cpp
index 1c4246b814..a2f2418fb2 100644
--- a/engines/ultima/ultima8/world/actors/ambush_process.cpp
+++ b/engines/ultima/ultima8/world/actors/ambush_process.cpp
@@ -77,13 +77,13 @@ void AmbushProcess::run() {
 void AmbushProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write4(_delayCount);
+	ods->writeUint32LE(_delayCount);
 }
 
 bool AmbushProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_delayCount = ids->read4();
+	_delayCount = ids->readUint32LE();
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/actors/animation_tracker.cpp b/engines/ultima/ultima8/world/actors/animation_tracker.cpp
index 414e8df6ad..08d7a1bc5f 100644
--- a/engines/ultima/ultima8/world/actors/animation_tracker.cpp
+++ b/engines/ultima/ultima8/world/actors/animation_tracker.cpp
@@ -560,63 +560,63 @@ void AnimationTracker::getSpeed(int32 &dx, int32 &dy, int32 &dz) const {
 
 
 void AnimationTracker::save(ODataSource *ods) {
-	ods->write4(_startFrame);
-	ods->write4(_endFrame);
+	ods->writeUint32LE(_startFrame);
+	ods->writeUint32LE(_endFrame);
 	uint8 ff = _firstFrame ? 1 : 0;
-	ods->write1(ff);
-	ods->write4(_currentFrame);
+	ods->writeByte(ff);
+	ods->writeUint32LE(_currentFrame);
 
-	ods->write2(_actor);
-	ods->write1(static_cast<uint8>(_dir));
+	ods->writeUint16LE(_actor);
+	ods->writeByte(static_cast<uint8>(_dir));
 
 	if (_animAction) {
-		ods->write4(_animAction->_shapeNum);
-		ods->write4(_animAction->_action);
+		ods->writeUint32LE(_animAction->_shapeNum);
+		ods->writeUint32LE(_animAction->_action);
 	} else {
-		ods->write4(0);
-		ods->write4(0);
+		ods->writeUint32LE(0);
+		ods->writeUint32LE(0);
 	}
 
-	ods->write4(static_cast<uint32>(_prevX));
-	ods->write4(static_cast<uint32>(_prevY));
-	ods->write4(static_cast<uint32>(_prevZ));
-	ods->write4(static_cast<uint32>(_x));
-	ods->write4(static_cast<uint32>(_y));
-	ods->write4(static_cast<uint32>(_z));
+	ods->writeUint32LE(static_cast<uint32>(_prevX));
+	ods->writeUint32LE(static_cast<uint32>(_prevY));
+	ods->writeUint32LE(static_cast<uint32>(_prevZ));
+	ods->writeUint32LE(static_cast<uint32>(_x));
+	ods->writeUint32LE(static_cast<uint32>(_y));
+	ods->writeUint32LE(static_cast<uint32>(_z));
 
-	ods->write2(static_cast<uint16>(_mode));
+	ods->writeUint16LE(static_cast<uint16>(_mode));
 	if (_mode == TargetMode) {
-		ods->write4(static_cast<uint32>(_targetDx));
-		ods->write4(static_cast<uint32>(_targetDy));
-		ods->write4(static_cast<uint32>(_targetDz));
-		ods->write4(static_cast<uint32>(_targetOffGroundLeft));
+		ods->writeUint32LE(static_cast<uint32>(_targetDx));
+		ods->writeUint32LE(static_cast<uint32>(_targetDy));
+		ods->writeUint32LE(static_cast<uint32>(_targetDz));
+		ods->writeUint32LE(static_cast<uint32>(_targetOffGroundLeft));
 	}
 	uint8 fs = _firstStep ? 1 : 0;
-	ods->write1(fs);
+	ods->writeByte(fs);
 	uint8 fl = _flipped ? 1 : 0;
-	ods->write1(fl);
-	ods->write4(_shapeFrame);
+	ods->writeByte(fl);
+	ods->writeUint32LE(_shapeFrame);
 
 	uint8 flag = _done ? 1 : 0;
-	ods->write1(flag);
+	ods->writeByte(flag);
 	flag = _blocked ? 1 : 0;
-	ods->write1(flag);
+	ods->writeByte(flag);
 	flag = _unsupported ? 1 : 0;
-	ods->write1(flag);
-	ods->write2(_hitObject);
+	ods->writeByte(flag);
+	ods->writeUint16LE(_hitObject);
 }
 
 bool AnimationTracker::load(IDataSource *ids, uint32 version) {
-	_startFrame = ids->read4();
-	_endFrame = ids->read4();
-	_firstFrame = (ids->read1() != 0);
-	_currentFrame = ids->read4();
+	_startFrame = ids->readUint32LE();
+	_endFrame = ids->readUint32LE();
+	_firstFrame = (ids->readByte() != 0);
+	_currentFrame = ids->readUint32LE();
 
-	_actor = ids->read2();
-	_dir = ids->read1();
+	_actor = ids->readUint16LE();
+	_dir = ids->readByte();
 
-	uint32 shapenum = ids->read4();
-	uint32 action = ids->read4();
+	uint32 shapenum = ids->readUint32LE();
+	uint32 action = ids->readUint32LE();
 	if (shapenum == 0) {
 		_animAction = nullptr;
 	} else {
@@ -625,20 +625,20 @@ bool AnimationTracker::load(IDataSource *ids, uint32 version) {
 		assert(_animAction);
 	}
 
-	_prevX = ids->read4();
-	_prevY = ids->read4();
-	_prevZ = ids->read4();
-	_x = ids->read4();
-	_y = ids->read4();
-	_z = ids->read4();
+	_prevX = ids->readUint32LE();
+	_prevY = ids->readUint32LE();
+	_prevZ = ids->readUint32LE();
+	_x = ids->readUint32LE();
+	_y = ids->readUint32LE();
+	_z = ids->readUint32LE();
 
-	_mode = static_cast<Mode>(ids->read2());
+	_mode = static_cast<Mode>(ids->readUint16LE());
 	if (_mode == TargetMode) {
-		_targetDx = ids->read4();
-		_targetDy = ids->read4();
+		_targetDx = ids->readUint32LE();
+		_targetDy = ids->readUint32LE();
 		if (version >= 5) {
-			_targetDz = ids->read4();
-			_targetOffGroundLeft = ids->read4();
+			_targetDz = ids->readUint32LE();
+			_targetOffGroundLeft = ids->readUint32LE();
 		} else {
 			// Versions before 5 stored the only _x,_y adjustment
 			// to be made per frame. This is less accurate and ignores _z.
@@ -659,14 +659,14 @@ bool AnimationTracker::load(IDataSource *ids, uint32 version) {
 		}
 	}
 
-	_firstStep = (ids->read1() != 0);
-	_flipped = (ids->read1() != 0);
-	_shapeFrame = ids->read4();
+	_firstStep = (ids->readByte() != 0);
+	_flipped = (ids->readByte() != 0);
+	_shapeFrame = ids->readUint32LE();
 
-	_done = (ids->read1() != 0);
-	_blocked = (ids->read1() != 0);
-	_unsupported = (ids->read1() != 0);
-	_hitObject = ids->read2();
+	_done = (ids->readByte() != 0);
+	_blocked = (ids->readByte() != 0);
+	_unsupported = (ids->readByte() != 0);
+	_hitObject = ids->readUint16LE();
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp b/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
index e3cdd6474f..2e7e461c53 100644
--- a/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
+++ b/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
@@ -821,17 +821,17 @@ void AvatarMoverProcess::OnMouseUp(int button) {
 void AvatarMoverProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write4(_lastAttack);
-	ods->write4(_idleTime);
-	ods->write2(static_cast<uint8>(_lastHeadShakeAnim));
+	ods->writeUint32LE(_lastAttack);
+	ods->writeUint32LE(_idleTime);
+	ods->writeUint16LE(static_cast<uint8>(_lastHeadShakeAnim));
 }
 
 bool AvatarMoverProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_lastAttack = ids->read4();
-	_idleTime = ids->read4();
-	_lastHeadShakeAnim = static_cast<Animation::Sequence>(ids->read2());
+	_lastAttack = ids->readUint32LE();
+	_idleTime = ids->readUint32LE();
+	_lastHeadShakeAnim = static_cast<Animation::Sequence>(ids->readUint16LE());
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/actors/combat_process.cpp b/engines/ultima/ultima8/world/actors/combat_process.cpp
index 8548b05e3b..1ff86ccddb 100644
--- a/engines/ultima/ultima8/world/actors/combat_process.cpp
+++ b/engines/ultima/ultima8/world/actors/combat_process.cpp
@@ -332,17 +332,17 @@ void CombatProcess::dumpInfo() const {
 void CombatProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write2(_target);
-	ods->write2(_fixedTarget);
-	ods->write1(static_cast<uint8>(_combatMode));
+	ods->writeUint16LE(_target);
+	ods->writeUint16LE(_fixedTarget);
+	ods->writeByte(static_cast<uint8>(_combatMode));
 }
 
 bool CombatProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_target = ids->read2();
-	_fixedTarget = ids->read2();
-	_combatMode = static_cast<CombatMode>(ids->read1());
+	_target = ids->readUint16LE();
+	_fixedTarget = ids->readUint16LE();
+	_combatMode = static_cast<CombatMode>(ids->readByte());
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/actors/grant_peace_process.cpp b/engines/ultima/ultima8/world/actors/grant_peace_process.cpp
index 505e1a2c2a..467d7bf5b1 100644
--- a/engines/ultima/ultima8/world/actors/grant_peace_process.cpp
+++ b/engines/ultima/ultima8/world/actors/grant_peace_process.cpp
@@ -222,13 +222,13 @@ void GrantPeaceProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
 	uint8 ht = _haveTarget ? 1 : 0;
-	ods->write1(ht);
+	ods->writeByte(ht);
 }
 
 bool GrantPeaceProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_haveTarget = (ids->read1() != 0);
+	_haveTarget = (ids->readByte() != 0);
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/actors/heal_process.cpp b/engines/ultima/ultima8/world/actors/heal_process.cpp
index b79b8bf696..1cc5a4b6cf 100644
--- a/engines/ultima/ultima8/world/actors/heal_process.cpp
+++ b/engines/ultima/ultima8/world/actors/heal_process.cpp
@@ -117,15 +117,15 @@ uint32 HealProcess::I_feedAvatar(const uint8 *args, unsigned int /*argsize*/) {
 void HealProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write2(_healCounter);
-	ods->write2(_hungerCounter);
+	ods->writeUint16LE(_healCounter);
+	ods->writeUint16LE(_hungerCounter);
 }
 
 bool HealProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_healCounter = ids->read2();
-	_hungerCounter = ids->read2();
+	_healCounter = ids->readUint16LE();
+	_hungerCounter = ids->readUint16LE();
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/actors/loiter_process.cpp b/engines/ultima/ultima8/world/actors/loiter_process.cpp
index fd0f61dd15..052b1c1108 100644
--- a/engines/ultima/ultima8/world/actors/loiter_process.cpp
+++ b/engines/ultima/ultima8/world/actors/loiter_process.cpp
@@ -107,14 +107,14 @@ void LoiterProcess::run() {
 void LoiterProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write4(_count);
+	ods->writeUint32LE(_count);
 }
 
 bool LoiterProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
 	if (version >= 3)
-		_count = ids->read4();
+		_count = ids->readUint32LE();
 	else
 		_count = 0; // default to loitering indefinitely
 
diff --git a/engines/ultima/ultima8/world/actors/main_actor.cpp b/engines/ultima/ultima8/world/actors/main_actor.cpp
index ff17bf2312..3b20017141 100644
--- a/engines/ultima/ultima8/world/actors/main_actor.cpp
+++ b/engines/ultima/ultima8/world/actors/main_actor.cpp
@@ -396,29 +396,29 @@ void MainActor::getWeaponOverlay(const WeaponOverlayFrame *&frame_, uint32 &shap
 void MainActor::saveData(ODataSource *ods) {
 	Actor::saveData(ods);
 	uint8 jt = _justTeleported ? 1 : 0;
-	ods->write1(jt);
-	ods->write4(_accumStr);
-	ods->write4(_accumDex);
-	ods->write4(_accumInt);
+	ods->writeByte(jt);
+	ods->writeUint32LE(_accumStr);
+	ods->writeUint32LE(_accumDex);
+	ods->writeUint32LE(_accumInt);
 	uint8 namelength = static_cast<uint8>(_name.size());
-	ods->write1(namelength);
+	ods->writeByte(namelength);
 	for (unsigned int i = 0; i < namelength; ++i)
-		ods->write1(static_cast<uint8>(_name[i]));
+		ods->writeByte(static_cast<uint8>(_name[i]));
 
 }
 
 bool MainActor::loadData(IDataSource *ids, uint32 version) {
 	if (!Actor::loadData(ids, version)) return false;
 
-	_justTeleported = (ids->read1() != 0);
-	_accumStr = static_cast<int32>(ids->read4());
-	_accumDex = static_cast<int32>(ids->read4());
-	_accumInt = static_cast<int32>(ids->read4());
+	_justTeleported = (ids->readByte() != 0);
+	_accumStr = static_cast<int32>(ids->readUint32LE());
+	_accumDex = static_cast<int32>(ids->readUint32LE());
+	_accumInt = static_cast<int32>(ids->readUint32LE());
 
-	uint8 namelength = ids->read1();
+	uint8 namelength = ids->readByte();
 	_name.resize(namelength);
 	for (unsigned int i = 0; i < namelength; ++i)
-		_name[i] = ids->read1();
+		_name[i] = ids->readByte();
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/actors/pathfinder_process.cpp b/engines/ultima/ultima8/world/actors/pathfinder_process.cpp
index c08756081a..0e3c0224f3 100644
--- a/engines/ultima/ultima8/world/actors/pathfinder_process.cpp
+++ b/engines/ultima/ultima8/world/actors/pathfinder_process.cpp
@@ -248,35 +248,35 @@ void PathfinderProcess::run() {
 void PathfinderProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write2(_targetItem);
-	ods->write2(static_cast<uint16>(_targetX));
-	ods->write2(static_cast<uint16>(_targetY));
-	ods->write2(static_cast<uint16>(_targetZ));
-	ods->write1(_hitMode ? 1 : 0);
-	ods->write2(static_cast<uint16>(_currentStep));
-
-	ods->write2(static_cast<uint16>(_path.size()));
+	ods->writeUint16LE(_targetItem);
+	ods->writeUint16LE(static_cast<uint16>(_targetX));
+	ods->writeUint16LE(static_cast<uint16>(_targetY));
+	ods->writeUint16LE(static_cast<uint16>(_targetZ));
+	ods->writeByte(_hitMode ? 1 : 0);
+	ods->writeUint16LE(static_cast<uint16>(_currentStep));
+
+	ods->writeUint16LE(static_cast<uint16>(_path.size()));
 	for (unsigned int i = 0; i < _path.size(); ++i) {
-		ods->write2(static_cast<uint16>(_path[i]._action));
-		ods->write2(static_cast<uint16>(_path[i]._direction));
+		ods->writeUint16LE(static_cast<uint16>(_path[i]._action));
+		ods->writeUint16LE(static_cast<uint16>(_path[i]._direction));
 	}
 }
 
 bool PathfinderProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_targetItem = ids->read2();
-	_targetX = ids->read2();
-	_targetY = ids->read2();
-	_targetZ = ids->read2();
-	_hitMode = (ids->read1() != 0);
-	_currentStep = ids->read2();
+	_targetItem = ids->readUint16LE();
+	_targetX = ids->readUint16LE();
+	_targetY = ids->readUint16LE();
+	_targetZ = ids->readUint16LE();
+	_hitMode = (ids->readByte() != 0);
+	_currentStep = ids->readUint16LE();
 
-	unsigned int pathsize = ids->read2();
+	unsigned int pathsize = ids->readUint16LE();
 	_path.resize(pathsize);
 	for (unsigned int i = 0; i < pathsize; ++i) {
-		_path[i]._action = static_cast<Animation::Sequence>(ids->read2());
-		_path[i]._direction = ids->read2();
+		_path[i]._action = static_cast<Animation::Sequence>(ids->readUint16LE());
+		_path[i]._direction = ids->readUint16LE();
 	}
 
 	return true;
diff --git a/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.cpp b/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.cpp
index 915605a094..a89c232bbf 100644
--- a/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.cpp
+++ b/engines/ultima/ultima8/world/actors/quick_avatar_mover_process.cpp
@@ -161,7 +161,7 @@ void QuickAvatarMoverProcess::startMover(int x, int y, int z, int dir) {
 void QuickAvatarMoverProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write4(_dir);
+	ods->writeUint32LE(_dir);
 	// don't save more information. We plan to terminate upon load
 }
 
@@ -169,7 +169,7 @@ bool QuickAvatarMoverProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
 	// small safety precaution
-	_dir = ids->read4();
+	_dir = ids->readUint32LE();
 	if (_dir < 6)
 		_amp[_dir] = 0;
 	else
diff --git a/engines/ultima/ultima8/world/actors/scheduler_process.cpp b/engines/ultima/ultima8/world/actors/scheduler_process.cpp
index 0e716b142f..ae26b0a8d2 100644
--- a/engines/ultima/ultima8/world/actors/scheduler_process.cpp
+++ b/engines/ultima/ultima8/world/actors/scheduler_process.cpp
@@ -83,15 +83,15 @@ void SchedulerProcess::run() {
 void SchedulerProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write4(_lastRun);
-	ods->write2(_nextActor);
+	ods->writeUint32LE(_lastRun);
+	ods->writeUint16LE(_nextActor);
 }
 
 bool SchedulerProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_lastRun = ids->read4();
-	_nextActor = ids->read2();
+	_lastRun = ids->readUint32LE();
+	_nextActor = ids->readUint16LE();
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/actors/targeted_anim_process.cpp b/engines/ultima/ultima8/world/actors/targeted_anim_process.cpp
index 8087d15320..00830c25a8 100644
--- a/engines/ultima/ultima8/world/actors/targeted_anim_process.cpp
+++ b/engines/ultima/ultima8/world/actors/targeted_anim_process.cpp
@@ -56,18 +56,18 @@ bool TargetedAnimProcess::init() {
 void TargetedAnimProcess::saveData(ODataSource *ods) {
 	ActorAnimProcess::saveData(ods);
 
-	ods->write4(static_cast<uint32>(_x));
-	ods->write4(static_cast<uint32>(_y));
-	ods->write4(static_cast<uint32>(_z));
+	ods->writeUint32LE(static_cast<uint32>(_x));
+	ods->writeUint32LE(static_cast<uint32>(_y));
+	ods->writeUint32LE(static_cast<uint32>(_z));
 
 }
 
 bool TargetedAnimProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!ActorAnimProcess::loadData(ids, version)) return false;
 
-	_x = ids->read4();
-	_y = ids->read4();
-	_z = ids->read4();
+	_x = ids->readUint32LE();
+	_y = ids->readUint32LE();
+	_z = ids->readUint32LE();
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/actors/teleport_to_egg_process.cpp b/engines/ultima/ultima8/world/actors/teleport_to_egg_process.cpp
index da1ce96873..39b0d90461 100644
--- a/engines/ultima/ultima8/world/actors/teleport_to_egg_process.cpp
+++ b/engines/ultima/ultima8/world/actors/teleport_to_egg_process.cpp
@@ -56,15 +56,15 @@ void TeleportToEggProcess::run() {
 void TeleportToEggProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write4(static_cast<uint32>(_mapNum));
-	ods->write4(static_cast<uint32>(_teleportId));
+	ods->writeUint32LE(static_cast<uint32>(_mapNum));
+	ods->writeUint32LE(static_cast<uint32>(_teleportId));
 }
 
 bool TeleportToEggProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_mapNum = static_cast<int>(ids->read4());
-	_teleportId = static_cast<int>(ids->read4());
+	_mapNum = static_cast<int>(ids->readUint32LE());
+	_teleportId = static_cast<int>(ids->readUint32LE());
 	return true;
 }
 
diff --git a/engines/ultima/ultima8/world/camera_process.cpp b/engines/ultima/ultima8/world/camera_process.cpp
index fd87e134fd..69d6ebd9cb 100644
--- a/engines/ultima/ultima8/world/camera_process.cpp
+++ b/engines/ultima/ultima8/world/camera_process.cpp
@@ -272,37 +272,37 @@ uint16 CameraProcess::FindRoof(int32 factor) {
 void CameraProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write4(static_cast<uint32>(_sx));
-	ods->write4(static_cast<uint32>(_sy));
-	ods->write4(static_cast<uint32>(_sz));
-	ods->write4(static_cast<uint32>(_ex));
-	ods->write4(static_cast<uint32>(_ey));
-	ods->write4(static_cast<uint32>(_ez));
-	ods->write4(static_cast<uint32>(_time));
-	ods->write4(static_cast<uint32>(_elapsed));
-	ods->write2(_itemNum);
-	ods->write4(_lastFrameNum);
-	ods->write4(static_cast<uint32>(_earthquake));
-	ods->write4(static_cast<uint32>(_eqX));
-	ods->write4(static_cast<uint32>(_eqY));
+	ods->writeUint32LE(static_cast<uint32>(_sx));
+	ods->writeUint32LE(static_cast<uint32>(_sy));
+	ods->writeUint32LE(static_cast<uint32>(_sz));
+	ods->writeUint32LE(static_cast<uint32>(_ex));
+	ods->writeUint32LE(static_cast<uint32>(_ey));
+	ods->writeUint32LE(static_cast<uint32>(_ez));
+	ods->writeUint32LE(static_cast<uint32>(_time));
+	ods->writeUint32LE(static_cast<uint32>(_elapsed));
+	ods->writeUint16LE(_itemNum);
+	ods->writeUint32LE(_lastFrameNum);
+	ods->writeUint32LE(static_cast<uint32>(_earthquake));
+	ods->writeUint32LE(static_cast<uint32>(_eqX));
+	ods->writeUint32LE(static_cast<uint32>(_eqY));
 }
 
 bool CameraProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_sx = static_cast<int32>(ids->read4());
-	_sy = static_cast<int32>(ids->read4());
-	_sz = static_cast<int32>(ids->read4());
-	_ex = static_cast<int32>(ids->read4());
-	_ey = static_cast<int32>(ids->read4());
-	_ez = static_cast<int32>(ids->read4());
-	_time = static_cast<int32>(ids->read4());
-	_elapsed = static_cast<int32>(ids->read4());
-	_itemNum = ids->read2();
-	_lastFrameNum = ids->read4();
-	_earthquake = static_cast<int32>(ids->read4()); //static
-	_eqX = static_cast<int32>(ids->read4()); //static
-	_eqY = static_cast<int32>(ids->read4()); //static
+	_sx = static_cast<int32>(ids->readUint32LE());
+	_sy = static_cast<int32>(ids->readUint32LE());
+	_sz = static_cast<int32>(ids->readUint32LE());
+	_ex = static_cast<int32>(ids->readUint32LE());
+	_ey = static_cast<int32>(ids->readUint32LE());
+	_ez = static_cast<int32>(ids->readUint32LE());
+	_time = static_cast<int32>(ids->readUint32LE());
+	_elapsed = static_cast<int32>(ids->readUint32LE());
+	_itemNum = ids->readUint16LE();
+	_lastFrameNum = ids->readUint32LE();
+	_earthquake = static_cast<int32>(ids->readUint32LE()); //static
+	_eqX = static_cast<int32>(ids->readUint32LE()); //static
+	_eqY = static_cast<int32>(ids->readUint32LE()); //static
 
 	_camera = this; //static
 
diff --git a/engines/ultima/ultima8/world/container.cpp b/engines/ultima/ultima8/world/container.cpp
index 1c165473f8..59531c6e57 100644
--- a/engines/ultima/ultima8/world/container.cpp
+++ b/engines/ultima/ultima8/world/container.cpp
@@ -307,7 +307,7 @@ void Container::dumpInfo() const {
 
 void Container::saveData(ODataSource *ods) {
 	Item::saveData(ods);
-	ods->write4(static_cast<uint32>(_contents.size()));
+	ods->writeUint32LE(static_cast<uint32>(_contents.size()));
 	Std::list<Item *>::iterator iter;
 	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
 		(*iter)->save(ods);
@@ -317,7 +317,7 @@ void Container::saveData(ODataSource *ods) {
 bool Container::loadData(IDataSource *ids, uint32 version) {
 	if (!Item::loadData(ids, version)) return false;
 
-	uint32 contentcount = ids->read4();
+	uint32 contentcount = ids->readUint32LE();
 
 	// read _contents
 	for (unsigned int i = 0; i < contentcount; ++i) {
diff --git a/engines/ultima/ultima8/world/create_item_process.cpp b/engines/ultima/ultima8/world/create_item_process.cpp
index 9d872b3229..82bfde12de 100644
--- a/engines/ultima/ultima8/world/create_item_process.cpp
+++ b/engines/ultima/ultima8/world/create_item_process.cpp
@@ -66,31 +66,31 @@ void CreateItemProcess::run() {
 void CreateItemProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write4(_shape);
-	ods->write4(_frame);
-	ods->write2(_quality);
-	ods->write2(_flags);
-	ods->write2(_npcNum);
-	ods->write2(_mapNum);
-	ods->write4(_extendedFlags);
-	ods->write4(static_cast<uint32>(_x));
-	ods->write4(static_cast<uint32>(_y));
-	ods->write4(static_cast<uint32>(_z));
+	ods->writeUint32LE(_shape);
+	ods->writeUint32LE(_frame);
+	ods->writeUint16LE(_quality);
+	ods->writeUint16LE(_flags);
+	ods->writeUint16LE(_npcNum);
+	ods->writeUint16LE(_mapNum);
+	ods->writeUint32LE(_extendedFlags);
+	ods->writeUint32LE(static_cast<uint32>(_x));
+	ods->writeUint32LE(static_cast<uint32>(_y));
+	ods->writeUint32LE(static_cast<uint32>(_z));
 }
 
 bool CreateItemProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_shape = ids->read4();
-	_frame = ids->read4();
-	_quality = ids->read2();
-	_flags = ids->read2();
-	_npcNum = ids->read2();
-	_mapNum = ids->read2();
-	_extendedFlags = ids->read4();
-	_x = static_cast<int32>(ids->read4());
-	_y = static_cast<int32>(ids->read4());
-	_z = static_cast<int32>(ids->read4());
+	_shape = ids->readUint32LE();
+	_frame = ids->readUint32LE();
+	_quality = ids->readUint16LE();
+	_flags = ids->readUint16LE();
+	_npcNum = ids->readUint16LE();
+	_mapNum = ids->readUint16LE();
+	_extendedFlags = ids->readUint32LE();
+	_x = static_cast<int32>(ids->readUint32LE());
+	_y = static_cast<int32>(ids->readUint32LE());
+	_z = static_cast<int32>(ids->readUint32LE());
 	return true;
 }
 
diff --git a/engines/ultima/ultima8/world/current_map.cpp b/engines/ultima/ultima8/world/current_map.cpp
index 0cedd85825..041f5605fc 100644
--- a/engines/ultima/ultima8/world/current_map.cpp
+++ b/engines/ultima/ultima8/world/current_map.cpp
@@ -1271,7 +1271,7 @@ void CurrentMap::setWholeMapFast() {
 void CurrentMap::save(ODataSource *ods) {
 	for (unsigned int i = 0; i < MAP_NUM_CHUNKS; ++i) {
 		for (unsigned int j = 0; j < MAP_NUM_CHUNKS / 32; ++j) {
-			ods->write4(_fast[i][j]);
+			ods->writeUint32LE(_fast[i][j]);
 		}
 	}
 }
@@ -1279,7 +1279,7 @@ void CurrentMap::save(ODataSource *ods) {
 bool CurrentMap::load(IDataSource *ids, uint32 version) {
 	for (unsigned int i = 0; i < MAP_NUM_CHUNKS; ++i) {
 		for (unsigned int j = 0; j < MAP_NUM_CHUNKS / 32; ++j) {
-			_fast[i][j] = ids->read4();
+			_fast[i][j] = ids->readUint32LE();
 		}
 	}
 
diff --git a/engines/ultima/ultima8/world/egg.cpp b/engines/ultima/ultima8/world/egg.cpp
index 019493a2b0..f42adb10c2 100644
--- a/engines/ultima/ultima8/world/egg.cpp
+++ b/engines/ultima/ultima8/world/egg.cpp
@@ -63,13 +63,13 @@ void Egg::saveData(ODataSource *ods) {
 	Item::saveData(ods);
 
 	uint8 h = _hatched ? 1 :  0;
-	ods->write1(h);
+	ods->writeByte(h);
 }
 
 bool Egg::loadData(IDataSource *ids, uint32 version) {
 	if (!Item::loadData(ids, version)) return false;
 
-	_hatched = (ids->read1() != 0);
+	_hatched = (ids->readByte() != 0);
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/fireball_process.cpp b/engines/ultima/ultima8/world/fireball_process.cpp
index 419505786b..97bea0e8b6 100644
--- a/engines/ultima/ultima8/world/fireball_process.cpp
+++ b/engines/ultima/ultima8/world/fireball_process.cpp
@@ -206,25 +206,25 @@ uint32 FireballProcess::I_TonysBalls(const uint8 *args,
 void FireballProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write4(static_cast<uint32>(_xSpeed));
-	ods->write4(static_cast<uint32>(_ySpeed));
-	ods->write2(_target);
-	ods->write2(_tail[0]);
-	ods->write2(_tail[1]);
-	ods->write2(_tail[2]);
-	ods->write2(_age);
+	ods->writeUint32LE(static_cast<uint32>(_xSpeed));
+	ods->writeUint32LE(static_cast<uint32>(_ySpeed));
+	ods->writeUint16LE(_target);
+	ods->writeUint16LE(_tail[0]);
+	ods->writeUint16LE(_tail[1]);
+	ods->writeUint16LE(_tail[2]);
+	ods->writeUint16LE(_age);
 }
 
 bool FireballProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_xSpeed = static_cast<int>(ids->read4());
-	_ySpeed = static_cast<int>(ids->read4());
-	_target = ids->read2();
-	_tail[0] = ids->read2();
-	_tail[1] = ids->read2();
-	_tail[2] = ids->read2();
-	_age = ids->read2();
+	_xSpeed = static_cast<int>(ids->readUint32LE());
+	_ySpeed = static_cast<int>(ids->readUint32LE());
+	_target = ids->readUint16LE();
+	_tail[0] = ids->readUint16LE();
+	_tail[1] = ids->readUint16LE();
+	_tail[2] = ids->readUint16LE();
+	_age = ids->readUint16LE();
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/gravity_process.cpp b/engines/ultima/ultima8/world/gravity_process.cpp
index c7edde02a1..4e620041f9 100644
--- a/engines/ultima/ultima8/world/gravity_process.cpp
+++ b/engines/ultima/ultima8/world/gravity_process.cpp
@@ -349,19 +349,19 @@ void GravityProcess::dumpInfo() const {
 void GravityProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write4(static_cast<uint32>(_gravity));
-	ods->write4(static_cast<uint32>(_xSpeed));
-	ods->write4(static_cast<uint32>(_ySpeed));
-	ods->write4(static_cast<uint32>(_zSpeed));
+	ods->writeUint32LE(static_cast<uint32>(_gravity));
+	ods->writeUint32LE(static_cast<uint32>(_xSpeed));
+	ods->writeUint32LE(static_cast<uint32>(_ySpeed));
+	ods->writeUint32LE(static_cast<uint32>(_zSpeed));
 }
 
 bool GravityProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_gravity = static_cast<int>(ids->read4());
-	_xSpeed = static_cast<int>(ids->read4());
-	_ySpeed = static_cast<int>(ids->read4());
-	_zSpeed = static_cast<int>(ids->read4());
+	_gravity = static_cast<int>(ids->readUint32LE());
+	_xSpeed = static_cast<int>(ids->readUint32LE());
+	_ySpeed = static_cast<int>(ids->readUint32LE());
+	_zSpeed = static_cast<int>(ids->readUint32LE());
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/item.cpp b/engines/ultima/ultima8/world/item.cpp
index 3616e37f54..a96afc2cc5 100644
--- a/engines/ultima/ultima8/world/item.cpp
+++ b/engines/ultima/ultima8/world/item.cpp
@@ -1760,48 +1760,48 @@ bool Item::canMergeWith(Item *other) {
 
 void Item::saveData(ODataSource *ods) {
 	Object::saveData(ods);
-	ods->write2(static_cast<uint16>(_extendedFlags));
-	ods->write2(_flags);
-	ods->write2(static_cast<uint16>(_shape));
-	ods->write2(static_cast<uint16>(_frame));
-	ods->write2(static_cast<uint16>(_x));
-	ods->write2(static_cast<uint16>(_y));
-	ods->write2(static_cast<uint16>(_z));
-	ods->write2(_quality);
-	ods->write2(_npcNum);
-	ods->write2(_mapNum);
+	ods->writeUint16LE(static_cast<uint16>(_extendedFlags));
+	ods->writeUint16LE(_flags);
+	ods->writeUint16LE(static_cast<uint16>(_shape));
+	ods->writeUint16LE(static_cast<uint16>(_frame));
+	ods->writeUint16LE(static_cast<uint16>(_x));
+	ods->writeUint16LE(static_cast<uint16>(_y));
+	ods->writeUint16LE(static_cast<uint16>(_z));
+	ods->writeUint16LE(_quality);
+	ods->writeUint16LE(_npcNum);
+	ods->writeUint16LE(_mapNum);
 	if (getObjId() != 0xFFFF) {
 		// these only make sense in currently loaded items
-		ods->write2(_gump);
-		ods->write2(_gravityPid);
+		ods->writeUint16LE(_gump);
+		ods->writeUint16LE(_gravityPid);
 	}
 	if ((_flags & FLG_ETHEREAL) && (_flags & (FLG_CONTAINED | FLG_EQUIPPED)))
-		ods->write2(_parent);
+		ods->writeUint16LE(_parent);
 }
 
 bool Item::loadData(IDataSource *ids, uint32 version) {
 	if (!Object::loadData(ids, version)) return false;
 
-	_extendedFlags = ids->read2();
-	_flags = ids->read2();
-	_shape = ids->read2();
-	_frame = ids->read2();
-	_x = ids->read2();
-	_y = ids->read2();
-	_z = ids->read2();
-
-	_quality = ids->read2();
-	_npcNum = ids->read2();
-	_mapNum = ids->read2();
+	_extendedFlags = ids->readUint16LE();
+	_flags = ids->readUint16LE();
+	_shape = ids->readUint16LE();
+	_frame = ids->readUint16LE();
+	_x = ids->readUint16LE();
+	_y = ids->readUint16LE();
+	_z = ids->readUint16LE();
+
+	_quality = ids->readUint16LE();
+	_npcNum = ids->readUint16LE();
+	_mapNum = ids->readUint16LE();
 	if (getObjId() != 0xFFFF) {
-		_gump = ids->read2();
-		_gravityPid = ids->read2();
+		_gump = ids->readUint16LE();
+		_gravityPid = ids->readUint16LE();
 	} else {
 		_gump = _gravityPid = 0;
 	}
 
 	if ((_flags & FLG_ETHEREAL) && (_flags & (FLG_CONTAINED | FLG_EQUIPPED)))
-		_parent = ids->read2();
+		_parent = ids->readUint16LE();
 	else
 		_parent = 0;
 
diff --git a/engines/ultima/ultima8/world/map.cpp b/engines/ultima/ultima8/world/map.cpp
index fa32885699..e7385b6ab8 100644
--- a/engines/ultima/ultima8/world/map.cpp
+++ b/engines/ultima/ultima8/world/map.cpp
@@ -201,7 +201,7 @@ void Map::unloadFixed() {
 void Map::loadFixedFormatObjects(Std::list<Item *> &itemlist, IDataSource *ds,
                                  uint32 extendedflags) {
 	if (!ds) return;
-	uint32 size = ds->getSize();
+	uint32 size = ds->size();
 	if (size == 0) return;
 
 	uint32 itemcount = size / 16;
@@ -220,13 +220,13 @@ void Map::loadFixedFormatObjects(Std::list<Item *> &itemlist, IDataSource *ds,
 			y *= 2;
 		}
 
-		uint32 shape = ds->read2();
-		uint32 frame = ds->read1();
-		uint16 flags = ds->read2();
-		uint16 quality = ds->read2();
-		uint16 npcNum = static_cast<uint16>(ds->read1());
-		uint16 mapNum = static_cast<uint16>(ds->read1());
-		uint16 next = ds->read2(); // do we need next for anything?
+		uint32 shape = ds->readUint16LE();
+		uint32 frame = ds->readByte();
+		uint16 flags = ds->readUint16LE();
+		uint16 quality = ds->readUint16LE();
+		uint16 npcNum = static_cast<uint16>(ds->readByte());
+		uint16 mapNum = static_cast<uint16>(ds->readByte());
+		uint16 next = ds->readUint16LE(); // do we need next for anything?
 
 		// find container this item belongs to, if any.
 		// the x coordinate stores the container-depth of this item,
@@ -279,7 +279,7 @@ void Map::loadFixedFormatObjects(Std::list<Item *> &itemlist, IDataSource *ds,
 
 
 void Map::save(ODataSource *ods) {
-	ods->write4(static_cast<uint32>(_dynamicItems.size()));
+	ods->writeUint32LE(static_cast<uint32>(_dynamicItems.size()));
 
 	Std::list<Item *>::iterator iter;
 	for (iter = _dynamicItems.begin(); iter != _dynamicItems.end(); ++iter) {
@@ -289,7 +289,7 @@ void Map::save(ODataSource *ods) {
 
 
 bool Map::load(IDataSource *ids, uint32 version) {
-	uint32 itemcount = ids->read4();
+	uint32 itemcount = ids->readUint32LE();
 
 	for (unsigned int i = 0; i < itemcount; ++i) {
 		Object *obj = ObjectManager::get_instance()->loadObject(ids, version);
diff --git a/engines/ultima/ultima8/world/map_glob.cpp b/engines/ultima/ultima8/world/map_glob.cpp
index 2e524bc5f2..ea9188929d 100644
--- a/engines/ultima/ultima8/world/map_glob.cpp
+++ b/engines/ultima/ultima8/world/map_glob.cpp
@@ -36,19 +36,19 @@ MapGlob::~MapGlob() {
 }
 
 void MapGlob::read(IDataSource *ds) {
-	unsigned int itemcount = ds->read2();
-	assert(ds->getSize() >= 2 + itemcount * 6);
+	unsigned int itemcount = ds->readUint16LE();
+	assert(ds->size() >= 2 + itemcount * 6);
 	_contents.clear();
 	_contents.resize(itemcount);
 
 	for (unsigned int i = 0; i < itemcount; ++i) {
 		GlobItem item;
 
-		item.x = ds->read1();
-		item.y = ds->read1();
-		item.z = ds->read1();
-		item.shape = ds->read2();
-		item.frame = ds->read1();
+		item.x = ds->readByte();
+		item.y = ds->readByte();
+		item.z = ds->readByte();
+		item.shape = ds->readUint16LE();
+		item.frame = ds->readByte();
 
 		_contents[i] = item;
 	}
diff --git a/engines/ultima/ultima8/world/split_item_process.cpp b/engines/ultima/ultima8/world/split_item_process.cpp
index 6774ef6d97..392996d7ac 100644
--- a/engines/ultima/ultima8/world/split_item_process.cpp
+++ b/engines/ultima/ultima8/world/split_item_process.cpp
@@ -93,13 +93,13 @@ void SplitItemProcess::run() {
 void SplitItemProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write2(_target);
+	ods->writeUint16LE(_target);
 }
 
 bool SplitItemProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_target = ids->read2();
+	_target = ids->readUint16LE();
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/sprite_process.cpp b/engines/ultima/ultima8/world/sprite_process.cpp
index fc1c122cb4..42b5032ae0 100644
--- a/engines/ultima/ultima8/world/sprite_process.cpp
+++ b/engines/ultima/ultima8/world/sprite_process.cpp
@@ -114,33 +114,33 @@ uint32 SpriteProcess::I_createSprite(const uint8 *args, unsigned int argsize) {
 void SpriteProcess::saveData(ODataSource *ods) {
 	Process::saveData(ods);
 
-	ods->write4(static_cast<uint32>(_shape));
-	ods->write4(static_cast<uint32>(_frame));
-	ods->write4(static_cast<uint32>(_firstFrame));
-	ods->write4(static_cast<uint32>(_lastFrame));
-	ods->write4(static_cast<uint32>(_repeats));
-	ods->write4(static_cast<uint32>(_delay));
-	ods->write4(static_cast<uint32>(_x));
-	ods->write4(static_cast<uint32>(_y));
-	ods->write4(static_cast<uint32>(_z));
-	ods->write4(static_cast<uint32>(_delayCounter));
-	ods->write1(_initialized ? 1 : 0);
+	ods->writeUint32LE(static_cast<uint32>(_shape));
+	ods->writeUint32LE(static_cast<uint32>(_frame));
+	ods->writeUint32LE(static_cast<uint32>(_firstFrame));
+	ods->writeUint32LE(static_cast<uint32>(_lastFrame));
+	ods->writeUint32LE(static_cast<uint32>(_repeats));
+	ods->writeUint32LE(static_cast<uint32>(_delay));
+	ods->writeUint32LE(static_cast<uint32>(_x));
+	ods->writeUint32LE(static_cast<uint32>(_y));
+	ods->writeUint32LE(static_cast<uint32>(_z));
+	ods->writeUint32LE(static_cast<uint32>(_delayCounter));
+	ods->writeByte(_initialized ? 1 : 0);
 }
 
 bool SpriteProcess::loadData(IDataSource *ids, uint32 version) {
 	if (!Process::loadData(ids, version)) return false;
 
-	_shape = static_cast<int>(ids->read4());
-	_frame = static_cast<int>(ids->read4());
-	_firstFrame = static_cast<int>(ids->read4());
-	_lastFrame = static_cast<int>(ids->read4());
-	_repeats = static_cast<int>(ids->read4());
-	_delay = static_cast<int>(ids->read4());
-	_x = static_cast<int>(ids->read4());
-	_y = static_cast<int>(ids->read4());
-	_z = static_cast<int>(ids->read4());
-	_delayCounter = static_cast<int>(ids->read4());
-	_initialized = (ids->read1() != 0);
+	_shape = static_cast<int>(ids->readUint32LE());
+	_frame = static_cast<int>(ids->readUint32LE());
+	_firstFrame = static_cast<int>(ids->readUint32LE());
+	_lastFrame = static_cast<int>(ids->readUint32LE());
+	_repeats = static_cast<int>(ids->readUint32LE());
+	_delay = static_cast<int>(ids->readUint32LE());
+	_x = static_cast<int>(ids->readUint32LE());
+	_y = static_cast<int>(ids->readUint32LE());
+	_z = static_cast<int>(ids->readUint32LE());
+	_delayCounter = static_cast<int>(ids->readUint32LE());
+	_initialized = (ids->readByte() != 0);
 
 	return true;
 }
diff --git a/engines/ultima/ultima8/world/world.cpp b/engines/ultima/ultima8/world/world.cpp
index 74619c77c5..0f7f892530 100644
--- a/engines/ultima/ultima8/world/world.cpp
+++ b/engines/ultima/ultima8/world/world.cpp
@@ -231,24 +231,24 @@ void World::loadItemCachNPCData(IDataSource *itemcach, IDataSource *npcdata) {
 		int32 z = static_cast<int32>(itemds->readX(1));
 
 		itemds->seek(0x0B400 + i * 2);
-		uint32 shape = itemds->read2();
+		uint32 shape = itemds->readUint16LE();
 		itemds->seek(0x0FC00 + i * 1);
-		uint32 frame = itemds->read1();
+		uint32 frame = itemds->readByte();
 		itemds->seek(0x12000 + i * 2);
-		uint16 flags = itemds->read2();
+		uint16 flags = itemds->readUint16LE();
 		itemds->seek(0x16800 + i * 2);
-		uint16 quality = itemds->read2();
+		uint16 quality = itemds->readUint16LE();
 		itemds->seek(0x1B000 + i * 1);
-		uint16 npcnum = static_cast<uint8>(itemds->read1());
+		uint16 npcnum = static_cast<uint8>(itemds->readByte());
 		itemds->seek(0x1D400 + i * 1);
-		uint16 mapnum = static_cast<uint8>(itemds->read1());
+		uint16 mapnum = static_cast<uint8>(itemds->readByte());
 		itemds->seek(0x1F800 + i * 2);
 		//uint16 next;
-		(void)itemds->read2();
+		(void)itemds->readUint16LE();
 
 		// half the frame number is stored in npcdata.dat
 		npcds->seek(7 + i * 0x31);
-		frame += npcds->read1() << 8;
+		frame += npcds->readByte() << 8;
 
 		if (shape == 0) {
 			// U8's itemcach has a lot of garbage in it.
@@ -276,35 +276,35 @@ void World::loadItemCachNPCData(IDataSource *itemcach, IDataSource *npcdata) {
 
 		// read npcdata:
 		npcds->seek(i * 0x31);
-		actor->setStr(npcds->read1()); // 0x00: strength
-		actor->setDex(npcds->read1()); // 0x01: dexterity
-		actor->setInt(npcds->read1()); // 0x02: intelligence
-		actor->setHP(npcds->read1());  // 0x03: hitpoints
-		actor->setDir(npcds->read1()); // 0x04: direction
-		uint16 la = npcds->read2();    // 0x05,0x06: last anim
+		actor->setStr(npcds->readByte()); // 0x00: strength
+		actor->setDex(npcds->readByte()); // 0x01: dexterity
+		actor->setInt(npcds->readByte()); // 0x02: intelligence
+		actor->setHP(npcds->readByte());  // 0x03: hitpoints
+		actor->setDir(npcds->readByte()); // 0x04: direction
+		uint16 la = npcds->readUint16LE();    // 0x05,0x06: last anim
 		actor->setLastAnim(static_cast<Animation::Sequence>(la));
 		npcds->skip(1); // 0x07: high byte of framenum
 		npcds->skip(1); // 0x08: current anim frame
 		npcds->skip(1); // 0x09: start Z of current fall
 		npcds->skip(1); // 0x0A: unknown, always zero
-		uint8 align = npcds->read1(); // 0x0B: alignments
+		uint8 align = npcds->readByte(); // 0x0B: alignments
 		actor->setAlignment(align & 0x0F);
 		actor->setEnemyAlignment(align & 0xF0);
-		actor->setUnk0C(npcds->read1()); // 0x0C: unknown;
+		actor->setUnk0C(npcds->readByte()); // 0x0C: unknown;
 		// 0x0C is almost always zero, except for
 		// the avatar (0xC0) and
 		// Malchir, Vardion, Gorgrond, Beren (0xE0)
 		npcds->skip(14); // 0x0D-0x1A: unknown, always zero
 		actor->clearActorFlag(0xFF);
-		actor->setActorFlag(npcds->read1()); // 0x1B: flags
+		actor->setActorFlag(npcds->readByte()); // 0x1B: flags
 		npcds->skip(1);  // 0x1C: unknown, always zero
 		npcds->skip(16); // 0x1D-0x2C: equipment
-		int16 mana = static_cast<int16>(npcds->read2()); // 0x2D,0x2E: mana
+		int16 mana = static_cast<int16>(npcds->readUint16LE()); // 0x2D,0x2E: mana
 		actor->setMana(mana);
 		actor->clearActorFlag(0xFFFF00);
-		uint32 flags2F = npcds->read1(); // 0x2F: flags
+		uint32 flags2F = npcds->readByte(); // 0x2F: flags
 		actor->setActorFlag(flags2F << 8);
-		uint32 flags30 = npcds->read1(); // 0x30: flags
+		uint32 flags30 = npcds->readByte(); // 0x30: flags
 		actor->setActorFlag(flags30 << 16);
 	}
 
@@ -337,12 +337,12 @@ void World::worldStats() const {
 }
 
 void World::save(ODataSource *ods) {
-	ods->write4(_currentMap->getNum());
+	ods->writeUint32LE(_currentMap->getNum());
 
-	ods->write2(_currentMap->_eggHatcher);
+	ods->writeUint16LE(_currentMap->_eggHatcher);
 
 	uint16 es = static_cast<uint16>(_ethereal.size());
-	ods->write4(es);
+	ods->writeUint32LE(es);
 
 	// empty stack and refill it again
 	uint16 *e = new uint16[es];
@@ -354,28 +354,28 @@ void World::save(ODataSource *ods) {
 	}
 
 	for (i = 0; i < es; ++i) {
-		ods->write2(e[i]);
+		ods->writeUint16LE(e[i]);
 	}
 	delete[] e;
 }
 
 // load items
 bool World::load(IDataSource *ids, uint32 version) {
-	uint16 curmapnum = ids->read4();
+	uint16 curmapnum = ids->readUint32LE();
 	_currentMap->setMap(_maps[curmapnum]);
 
-	_currentMap->_eggHatcher = ids->read2();
+	_currentMap->_eggHatcher = ids->readUint16LE();
 
-	uint32 etherealcount = ids->read4();
+	uint32 etherealcount = ids->readUint32LE();
 	for (unsigned int i = 0; i < etherealcount; ++i) {
-		_ethereal.push_front(ids->read2());
+		_ethereal.push_front(ids->readUint16LE());
 	}
 
 	return true;
 }
 
 void World::saveMaps(ODataSource *ods) {
-	ods->write4(static_cast<uint32>(_maps.size()));
+	ods->writeUint32LE(static_cast<uint32>(_maps.size()));
 	for (unsigned int i = 0; i < _maps.size(); ++i) {
 		_maps[i]->save(ods);
 	}
@@ -383,7 +383,7 @@ void World::saveMaps(ODataSource *ods) {
 
 
 bool World::loadMaps(IDataSource *ids, uint32 version) {
-	uint32 mapcount = ids->read4();
+	uint32 mapcount = ids->readUint32LE();
 
 	// Map objects have already been created by reset()
 	for (unsigned int i = 0; i < mapcount; ++i) {




More information about the Scummvm-git-logs mailing list