diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sci/engine/game.cpp | 22 | ||||
-rw-r--r-- | engines/sci/engine/kernel.cpp | 4 | ||||
-rw-r--r-- | engines/sci/engine/kpathing.cpp | 8 | ||||
-rw-r--r-- | engines/sci/engine/kstring.cpp | 4 | ||||
-rw-r--r-- | engines/sci/engine/message.cpp | 10 | ||||
-rw-r--r-- | engines/sci/engine/savegame.cpp | 10 | ||||
-rw-r--r-- | engines/sci/engine/script.cpp | 46 | ||||
-rw-r--r-- | engines/sci/engine/scriptdebug.cpp | 10 | ||||
-rw-r--r-- | engines/sci/engine/seg_manager.cpp | 70 | ||||
-rw-r--r-- | engines/sci/engine/vm.cpp | 22 | ||||
-rw-r--r-- | engines/sci/engine/vm.h | 12 | ||||
-rw-r--r-- | engines/sci/gfx/resource/sci_pal_1.cpp | 2 | ||||
-rw-r--r-- | engines/sci/gfx/resource/sci_pic_0.cpp | 12 | ||||
-rw-r--r-- | engines/sci/scicore/vocab.cpp | 8 | ||||
-rw-r--r-- | engines/sci/sfx/iterator.cpp | 6 | ||||
-rw-r--r-- | engines/sci/tools.cpp | 14 | ||||
-rw-r--r-- | engines/sci/tools.h | 8 |
17 files changed, 130 insertions, 138 deletions
diff --git a/engines/sci/engine/game.cpp b/engines/sci/engine/game.cpp index f7e927f5a9..4a50b47e3e 100644 --- a/engines/sci/engine/game.cpp +++ b/engines/sci/engine/game.cpp @@ -286,7 +286,7 @@ static int suggested_script(Resource *res, unsigned int classId) { offset = 2 + (classId << 2); - return getInt16(res->data + offset); + return (int16)READ_LE_UINT16(res->data + offset); } int test_cursor_style(EngineState *s) { @@ -319,14 +319,14 @@ int create_class_table_sci11(EngineState *s) { Resource *heap = s->resmgr->findResource(kResourceTypeHeap, scriptnr, 0); if (heap) { - int global_vars = getUInt16(heap->data + 2); + int global_vars = READ_LE_UINT16(heap->data + 2); seeker_ptr = (char*)heap->data + 4 + global_vars * 2; seeker_offset = 4 + global_vars * 2; - while (getUInt16((byte*)seeker_ptr) == SCRIPT_OBJECT_MAGIC_NUMBER) { - if (getUInt16((byte*)seeker_ptr + 14) & SCRIPT_INFO_CLASS) { - classnr = getUInt16((byte*)seeker_ptr + 10); + while (READ_LE_UINT16((byte*)seeker_ptr) == SCRIPT_OBJECT_MAGIC_NUMBER) { + if (READ_LE_UINT16((byte*)seeker_ptr + 14) & SCRIPT_INFO_CLASS) { + classnr = READ_LE_UINT16((byte*)seeker_ptr + 10); if (classnr >= s->classtable_size) { if (classnr >= SCRIPT_MAX_CLASSTABLE_SIZE) { fprintf(stderr, "Invalid class number 0x%x in script.%d(0x%x), offset %04x\n", @@ -346,8 +346,8 @@ int create_class_table_sci11(EngineState *s) { s->classtable[classnr].script = scriptnr; } - seeker_ptr += getUInt16((byte*)seeker_ptr + 2) * 2; - seeker_offset += getUInt16((byte*)seeker_ptr + 2) * 2; + seeker_ptr += READ_LE_UINT16((byte*)seeker_ptr + 2) * 2; + seeker_offset += READ_LE_UINT16((byte*)seeker_ptr + 2) * 2; } } } @@ -383,10 +383,10 @@ static int create_class_table_sci0(EngineState *s) { do { while (seeker < script->size) { unsigned int lastseeker = seeker; - objtype = getInt16(script->data + seeker); + objtype = (int16)READ_LE_UINT16(script->data + seeker); if (objtype == sci_obj_class || objtype == sci_obj_terminator) break; - seeker += getInt16(script->data + seeker + 2); + seeker += (int16)READ_LE_UINT16(script->data + seeker + 2); if (seeker <= lastseeker) { sciprintf("Warning: Script version is invalid.\n"); free(s->classtable); @@ -399,7 +399,7 @@ static int create_class_table_sci0(EngineState *s) { seeker -= SCRIPT_OBJECT_MAGIC_OFFSET; // Adjust position; script home is base +8 bytes - classnr = getInt16(script->data + seeker + 4 + SCRIPT_SPECIES_OFFSET); + classnr = (int16)READ_LE_UINT16(script->data + seeker + 4 + SCRIPT_SPECIES_OFFSET); if (classnr >= s->classtable_size) { if (classnr >= SCRIPT_MAX_CLASSTABLE_SIZE) { @@ -427,7 +427,7 @@ static int create_class_table_sci0(EngineState *s) { } seeker += SCRIPT_OBJECT_MAGIC_OFFSET; // Re-adjust position - seeker += getInt16(script->data + seeker + 2); // Move to next + seeker += (int16)READ_LE_UINT16(script->data + seeker + 2); // Move to next } } while (objtype != sci_obj_terminator && seeker <= script->size); diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index f36f34dd92..b9434aa937 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -598,7 +598,7 @@ reg_t kMemory(EngineState *s, int funct_nr, int argc, reg_t *argv) { if (s->seg_manager->heap[argv[1].segment]->type == MEM_OBJ_LOCALS) return *((reg_t *) ref); else - return make_reg(0, getInt16(ref)); + return make_reg(0, (int16)READ_LE_UINT16(ref)); break; } case K_MEMORY_POKE : { @@ -615,7 +615,7 @@ reg_t kMemory(EngineState *s, int funct_nr, int argc, reg_t *argv) { if (argv[2].segment) { SCIkdebug(SCIkERROR, "Attempt to poke memory reference "PREG" to "PREG"!\n", PRINT_REG(argv[2]), PRINT_REG(argv[1])); return s->r_acc; - putInt16(ref, argv[2].offset); // ??? + WRITE_LE_UINT16(ref, argv[2].offset); // ??? } } return s->r_acc; diff --git a/engines/sci/engine/kpathing.cpp b/engines/sci/engine/kpathing.cpp index 95b65babb7..46f257d31c 100644 --- a/engines/sci/engine/kpathing.cpp +++ b/engines/sci/engine/kpathing.cpp @@ -40,13 +40,13 @@ namespace Sci { #define POLY_POINT_SIZE 4 static void POLY_GET_POINT(byte *p, int i, Common::Point &pt) { - pt.x = getInt16((p) + (i) * POLY_POINT_SIZE); - pt.y = getInt16((p) + (i) * POLY_POINT_SIZE + 2); + pt.x = (int16)READ_LE_UINT16((p) + (i) * POLY_POINT_SIZE); + pt.y = (int16)READ_LE_UINT16((p) + (i) * POLY_POINT_SIZE + 2); } static void POLY_SET_POINT(byte *p, int i, const Common::Point &pt) { - putInt16((p) + (i) * POLY_POINT_SIZE, pt.x); - putInt16((p) + (i) * POLY_POINT_SIZE + 2, pt.y); + WRITE_LE_UINT16((p) + (i) * POLY_POINT_SIZE, pt.x); + WRITE_LE_UINT16((p) + (i) * POLY_POINT_SIZE + 2, pt.y); } static void POLY_GET_POINT_REG_T(reg_t *p, int i, Common::Point &pt) { diff --git a/engines/sci/engine/kstring.cpp b/engines/sci/engine/kstring.cpp index e9fd56c5c0..2a2d97b17a 100644 --- a/engines/sci/engine/kstring.cpp +++ b/engines/sci/engine/kstring.cpp @@ -229,8 +229,8 @@ reg_t kSetSynonyms(EngineState *s, int funct_nr, int argc, reg_t *argv) { * Lars */ } else for (i = 0; i < synonyms_nr; i++) { - s->synonyms[synpos].replaceant = getInt16(synonyms + i * 4); - s->synonyms[synpos].replacement = getInt16(synonyms + i * 4 + 2); + s->synonyms[synpos].replaceant = (int16)READ_LE_UINT16(synonyms + i * 4); + s->synonyms[synpos].replacement = (int16)READ_LE_UINT16(synonyms + i * 4 + 2); synpos++; } diff --git a/engines/sci/engine/message.cpp b/engines/sci/engine/message.cpp index f472252a9b..34754668e7 100644 --- a/engines/sci/engine/message.cpp +++ b/engines/sci/engine/message.cpp @@ -52,7 +52,7 @@ static void index_record_parse_2101(IndexRecordCursor *cursor, MessageTuple *t) #if 0 // Unreferenced - removed static void index_record_get_text_2101(IndexRecordCursor *cursor, char *buffer, int buffer_size) { - int offset = getUInt16(cursor->index_record + 2); + int offset = READ_LE_UINT16(cursor->index_record + 2); char *stringptr = (char *)cursor->resource_beginning + offset; strncpy(buffer, stringptr, buffer_size); @@ -62,7 +62,7 @@ static void index_record_get_text_2101(IndexRecordCursor *cursor, char *buffer, #if 0 // Unreferenced - removed static int header_get_index_record_count_2101(byte *header) { - return getUInt16(header + 4); + return READ_LE_UINT16(header + 4); } #endif @@ -85,14 +85,14 @@ static int index_record_get_talker_3411(IndexRecordCursor *cursor) { } static void index_record_get_text_3411(IndexRecordCursor *cursor, char *buffer, int buffer_size) { - int offset = getUInt16(cursor->index_record + 5); + int offset = READ_LE_UINT16(cursor->index_record + 5); char *stringptr = (char *)cursor->resource_beginning + offset; strncpy(buffer, stringptr, buffer_size); } static int header_get_index_record_count_3411(byte *header) { - return getUInt16(header + 8); + return READ_LE_UINT16(header + 8); } // Generic code from here on @@ -192,7 +192,7 @@ void message_state_initialize(ResourceManager *resmgr, MessageState *state) { //if (tester == NULL) // return; - //version = getUInt16(tester->data); + //version = READ_LE_UINT16(tester->data); state->initialized = 1; state->_module = -1; diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp index 5fbf126293..ac2acffa6f 100644 --- a/engines/sci/engine/savegame.cpp +++ b/engines/sci/engine/savegame.cpp @@ -4904,13 +4904,13 @@ static byte *find_unique_script_block(EngineState *s, byte *buf, int type) { buf += magic_pos_adder; do { - int seeker_type = getUInt16(buf); + int seeker_type = READ_LE_UINT16(buf); int seeker_size; if (seeker_type == 0) break; if (seeker_type == type) return buf; - seeker_size = getUInt16(buf + 2); + seeker_size = READ_LE_UINT16(buf + 2); buf += seeker_size; } while(1); @@ -5010,13 +5010,13 @@ static void reconstruct_scripts(EngineState *s, SegManager *self) { byte *data = scr->buf + scr->objects[j].pos.offset; if (self->isSci1_1) { - uint16 *funct_area = (uint16 *) (scr->buf + getUInt16( data + 6 )); - uint16 *prop_area = (uint16 *) (scr->buf + getUInt16( data + 4 )); + uint16 *funct_area = (uint16 *) (scr->buf + READ_LE_UINT16( data + 6 )); + uint16 *prop_area = (uint16 *) (scr->buf + READ_LE_UINT16( data + 4 )); scr->objects[j].base_method = funct_area; scr->objects[j].base_vars = prop_area; } else { - int funct_area = getUInt16( data + SCRIPT_FUNCTAREAPTR_OFFSET ); + int funct_area = READ_LE_UINT16( data + SCRIPT_FUNCTAREAPTR_OFFSET ); Object *base_obj; base_obj = obj_get(s, scr->objects[j].variables[SCRIPT_SPECIES_SELECTOR]); diff --git a/engines/sci/engine/script.cpp b/engines/sci/engine/script.cpp index 6651dfdcde..78eadb9830 100644 --- a/engines/sci/engine/script.cpp +++ b/engines/sci/engine/script.cpp @@ -238,9 +238,9 @@ int sci_hexdump(byte *data, int length, int offsetplus) { static void script_dump_object(char *data, int seeker, int objsize, const Common::StringList &selectorNames) { int selectors, overloads, selectorsize; - int species = getInt16((unsigned char *) data + 8 + seeker); - int superclass = getInt16((unsigned char *) data + 10 + seeker); - int namepos = getInt16((unsigned char *) data + 14 + seeker); + int species = (int16)READ_LE_UINT16((unsigned char *) data + 8 + seeker); + int superclass = (int16)READ_LE_UINT16((unsigned char *) data + 10 + seeker); + int namepos = (int16)READ_LE_UINT16((unsigned char *) data + 14 + seeker); int i = 0; sciprintf("Object\n"); @@ -251,29 +251,29 @@ static void script_dump_object(char *data, int seeker, int objsize, const Common sciprintf("Name: %s\n", namepos ? ((char *)(data + namepos)) : "<unknown>"); sciprintf("Superclass: %x\n", superclass); sciprintf("Species: %x\n", species); - sciprintf("-info-:%x\n", getInt16((unsigned char *) data + 12 + seeker) & 0xffff); + sciprintf("-info-:%x\n", (int16)READ_LE_UINT16((unsigned char *) data + 12 + seeker) & 0xffff); - sciprintf("Function area offset: %x\n", getInt16((unsigned char *) data + seeker + 4)); - sciprintf("Selectors [%x]:\n", selectors = (selectorsize = getInt16((unsigned char *) data + seeker + 6))); + sciprintf("Function area offset: %x\n", (int16)READ_LE_UINT16((unsigned char *) data + seeker + 4)); + sciprintf("Selectors [%x]:\n", selectors = (selectorsize = (int16)READ_LE_UINT16((unsigned char *) data + seeker + 6))); seeker += 8; while (selectors--) { - sciprintf(" [#%03x] = 0x%x\n", i++, getInt16((unsigned char *)data + seeker) & 0xffff); + sciprintf(" [#%03x] = 0x%x\n", i++, (int16)READ_LE_UINT16((unsigned char *)data + seeker) & 0xffff); seeker += 2; } - sciprintf("Overridden functions: %x\n", selectors = overloads = getInt16((unsigned char *)data + seeker)); + sciprintf("Overridden functions: %x\n", selectors = overloads = (int16)READ_LE_UINT16((unsigned char *)data + seeker)); seeker += 2; if (overloads < 100) while (overloads--) { - int selector = getInt16((unsigned char *) data + (seeker)); + int selector = (int16)READ_LE_UINT16((unsigned char *) data + (seeker)); sciprintf(" [%03x] %s: @", selector & 0xffff, (selector >= 0 && selector < (int)selectorNames.size()) ? selectorNames[selector].c_str() : "<?>"); - sciprintf("%04x\n", getInt16((unsigned char *)data + seeker + selectors*2 + 2) & 0xffff); + sciprintf("%04x\n", (int16)READ_LE_UINT16((unsigned char *)data + seeker + selectors*2 + 2) & 0xffff); seeker += 2; } @@ -281,9 +281,9 @@ static void script_dump_object(char *data, int seeker, int objsize, const Common static void script_dump_class(char *data, int seeker, int objsize, const Common::StringList &selectorNames) { int selectors, overloads, selectorsize; - int species = getInt16((unsigned char *) data + 8 + seeker); - int superclass = getInt16((unsigned char *) data + 10 + seeker); - int namepos = getInt16((unsigned char *) data + 14 + seeker); + int species = (int16)READ_LE_UINT16((unsigned char *) data + 8 + seeker); + int superclass = (int16)READ_LE_UINT16((unsigned char *) data + 10 + seeker); + int namepos = (int16)READ_LE_UINT16((unsigned char *) data + 14 + seeker); sciprintf("Class\n"); @@ -292,35 +292,35 @@ static void script_dump_class(char *data, int seeker, int objsize, const Common: sciprintf("Name: %s\n", namepos ? ((char *)data + namepos) : "<unknown>"); sciprintf("Superclass: %x\n", superclass); sciprintf("Species: %x\n", species); - sciprintf("-info-:%x\n", getInt16((unsigned char *)data + 12 + seeker) & 0xffff); + sciprintf("-info-:%x\n", (int16)READ_LE_UINT16((unsigned char *)data + 12 + seeker) & 0xffff); - sciprintf("Function area offset: %x\n", getInt16((unsigned char *)data + seeker + 4)); - sciprintf("Selectors [%x]:\n", selectors = (selectorsize = getInt16((unsigned char *)data + seeker + 6))); + sciprintf("Function area offset: %x\n", (int16)READ_LE_UINT16((unsigned char *)data + seeker + 4)); + sciprintf("Selectors [%x]:\n", selectors = (selectorsize = (int16)READ_LE_UINT16((unsigned char *)data + seeker + 6))); seeker += 8; selectorsize <<= 1; while (selectors--) { - int selector = getInt16((unsigned char *) data + (seeker) + selectorsize); + int selector = (int16)READ_LE_UINT16((unsigned char *) data + (seeker) + selectorsize); sciprintf(" [%03x] %s = 0x%x\n", 0xffff & selector, (selector >= 0 && selector < (int)selectorNames.size()) ? selectorNames[selector].c_str() : "<?>", - getInt16((unsigned char *)data + seeker) & 0xffff); + (int16)READ_LE_UINT16((unsigned char *)data + seeker) & 0xffff); seeker += 2; } seeker += selectorsize; - sciprintf("Overloaded functions: %x\n", selectors = overloads = getInt16((unsigned char *)data + seeker)); + sciprintf("Overloaded functions: %x\n", selectors = overloads = (int16)READ_LE_UINT16((unsigned char *)data + seeker)); seeker += 2; while (overloads--) { - int selector = getInt16((unsigned char *)data + (seeker)); + int selector = (int16)READ_LE_UINT16((unsigned char *)data + (seeker)); fprintf(stderr, "selector=%d; selectorNames.size() =%d\n", selector, selectorNames.size()); sciprintf(" [%03x] %s: @", selector & 0xffff, (selector >= 0 && selector < (int)selectorNames.size()) ? selectorNames[selector].c_str() : "<?>"); - sciprintf("%04x\n", getInt16((unsigned char *)data + seeker + selectors * 2 + 2) & 0xffff); + sciprintf("%04x\n", (int16)READ_LE_UINT16((unsigned char *)data + seeker + selectors * 2 + 2) & 0xffff); seeker += 2; } @@ -341,7 +341,7 @@ void script_dissect(ResourceManager *resmgr, int res_no, const Common::StringLis words = vocab_get_words(resmgr, &word_count); while (_seeker < script->size) { - int objtype = getInt16(script->data + _seeker); + int objtype = (int16)READ_LE_UINT16(script->data + _seeker); int objsize; unsigned int seeker = _seeker + 4; @@ -355,7 +355,7 @@ void script_dissect(ResourceManager *resmgr, int res_no, const Common::StringLis sciprintf("\n"); - objsize = getInt16(script->data + _seeker + 2); + objsize = (int16)READ_LE_UINT16(script->data + _seeker + 2); sciprintf("Obj type #%x, size 0x%x: ", objtype, objsize); diff --git a/engines/sci/engine/scriptdebug.cpp b/engines/sci/engine/scriptdebug.cpp index 596fc3e459..2622f76089 100644 --- a/engines/sci/engine/scriptdebug.cpp +++ b/engines/sci/engine/scriptdebug.cpp @@ -226,7 +226,7 @@ static void sci01_song_header_dump(byte *data, int size) { offset += 2; - track_offset = getUInt16(data + offset); + track_offset = READ_LE_UINT16(data + offset); header1 = data[track_offset]; header2 = data[track_offset+1]; track_offset += 2; @@ -234,7 +234,7 @@ static void sci01_song_header_dump(byte *data, int size) { if (track_offset < smallest_start) smallest_start = track_offset; - end = getUInt16(data + offset + 2); + end = READ_LE_UINT16(data + offset + 2); sciprintf(" - %04x -- %04x", track_offset, track_offset + end); if (track_offset == 0xfe) @@ -1214,7 +1214,7 @@ int prop_ofs_to_id(EngineState *s, int prop_ofs, reg_t objp) { return -1; } - return getUInt16(selectoroffset + prop_ofs); + return READ_LE_UINT16(selectoroffset + prop_ofs); } reg_t disassemble(EngineState *s, reg_t pos, int print_bw_tag, int print_bytecode) { @@ -1951,7 +1951,7 @@ static int c_gfx_draw_viewobj(EngineState *s) { return 1; } - if ((getInt16(s->heap + pos + SCRIPT_OBJECT_MAGIC_OFFSET)) != SCRIPT_OBJECT_MAGIC_NUMBER) { + if (((int16)READ_LE_UINT16(s->heap + pos + SCRIPT_OBJECT_MAGIC_OFFSET)) != SCRIPT_OBJECT_MAGIC_NUMBER) { sciprintf("Not an object.\n"); return 0; } @@ -2908,7 +2908,7 @@ void script_debug(EngineState *s, reg_t *pc, StackPtr *sp, StackPtr *pp, reg_t * int opcode = pc->offset >= code_buf_size ? 0 : code_buf[pc->offset]; int op = opcode >> 1; int paramb1 = pc->offset + 1 >= code_buf_size ? 0 : code_buf[pc->offset + 1]; - int paramf1 = (opcode & 1) ? paramb1 : (pc->offset + 2 >= code_buf_size ? 0 : getInt16(code_buf + pc->offset + 1)); + int paramf1 = (opcode & 1) ? paramb1 : (pc->offset + 2 >= code_buf_size ? 0 : (int16)READ_LE_UINT16(code_buf + pc->offset + 1)); switch (_debug_seeking) { case _DEBUG_SEEK_SPECIAL_CALLK: diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp index f778b73da3..ca682ef578 100644 --- a/engines/sci/engine/seg_manager.cpp +++ b/engines/sci/engine/seg_manager.cpp @@ -163,8 +163,8 @@ void SegManager::setScriptSize(MemObject *mem, EngineState *s, int script_nr) { return; } if (s->version < SCI_VERSION_FTU_NEW_SCRIPT_HEADER) { - mem->data.script.buf_size = script->size + getUInt16(script->data) * 2; - //locals_size = getUInt16(script->data) * 2; + mem->data.script.buf_size = script->size + READ_LE_UINT16(script->data) * 2; + //locals_size = READ_LE_UINT16(script->data) * 2; } else if (s->version < SCI_VERSION(1, 001, 000)) { mem->data.script.buf_size = script->size; } else { @@ -629,7 +629,7 @@ void SegManager::setExportTableOffset(int offset, int id, idFlag flag) { GET_SEGID(); if (offset) { scr->export_table = (uint16 *)(scr->buf + offset + 2); - scr->exports_nr = getUInt16((byte *)(scr->export_table - 1)); + scr->exports_nr = READ_LE_UINT16((byte *)(scr->export_table - 1)); } else { scr->export_table = NULL; scr->exports_nr = 0; @@ -767,7 +767,7 @@ void SegManager::scriptAddCodeBlock(reg_t location) { index = scr->code_blocks_nr - 1; scr->code[index].pos = location; - scr->code[index].size = getUInt16(scr->buf + location.offset - 2); + scr->code[index].size = READ_LE_UINT16(scr->buf + location.offset - 2); } void SegManager::scriptRelocate(reg_t block) { @@ -780,13 +780,13 @@ void SegManager::scriptRelocate(reg_t block) { scr = &(mobj->data.script); - VERIFY(block.offset < (uint16)scr->buf_size && getUInt16(scr->buf + block.offset) * 2 + block.offset < (uint16)scr->buf_size, + VERIFY(block.offset < (uint16)scr->buf_size && READ_LE_UINT16(scr->buf + block.offset) * 2 + block.offset < (uint16)scr->buf_size, "Relocation block outside of script\n"); - count = getUInt16(scr->buf + block.offset); + count = READ_LE_UINT16(scr->buf + block.offset); for (i = 0; i <= count; i++) { - int pos = getUInt16(scr->buf + block.offset + 2 + (i * 2)); + int pos = READ_LE_UINT16(scr->buf + block.offset + 2 + (i * 2)); if (!pos) continue; // FIXME: A hack pending investigation @@ -832,16 +832,16 @@ void SegManager::heapRelocate(EngineState *s, reg_t block) { scr = &(mobj->data.script); - VERIFY(block.offset < (uint16)scr->heap_size && getUInt16(scr->heap_start + block.offset) * 2 + block.offset < (uint16)scr->buf_size, + VERIFY(block.offset < (uint16)scr->heap_size && READ_LE_UINT16(scr->heap_start + block.offset) * 2 + block.offset < (uint16)scr->buf_size, "Relocation block outside of script\n"); if (scr->relocated) return; scr->relocated = 1; - count = getUInt16(scr->heap_start + block.offset); + count = READ_LE_UINT16(scr->heap_start + block.offset); for (i = 0; i < count; i++) { - int pos = getUInt16(scr->heap_start + block.offset + 2 + (i * 2)) + scr->script_size; + int pos = READ_LE_UINT16(scr->heap_start + block.offset + 2 + (i * 2)) + scr->script_size; if (!relocateLocal(scr, block.segment, pos)) { int k, done = 0; @@ -904,7 +904,7 @@ Object *SegManager::scriptObjInit0(EngineState *s, reg_t obj_pos) { { byte *data = (byte *)(scr->buf + base); - int funct_area = getUInt16(data + SCRIPT_FUNCTAREAPTR_OFFSET); + int funct_area = READ_LE_UINT16(data + SCRIPT_FUNCTAREAPTR_OFFSET); int variables_nr; int functions_nr; int is_class; @@ -915,9 +915,9 @@ Object *SegManager::scriptObjInit0(EngineState *s, reg_t obj_pos) { VERIFY(base + funct_area < scr->buf_size, "Function area pointer references beyond end of script"); - variables_nr = getUInt16(data + SCRIPT_SELECTORCTR_OFFSET); - functions_nr = getUInt16(data + funct_area - 2); - is_class = getUInt16(data + SCRIPT_INFO_OFFSET) & SCRIPT_INFO_CLASS; + variables_nr = READ_LE_UINT16(data + SCRIPT_SELECTORCTR_OFFSET); + functions_nr = READ_LE_UINT16(data + funct_area - 2); + is_class = READ_LE_UINT16(data + SCRIPT_INFO_OFFSET) & SCRIPT_INFO_CLASS; VERIFY(base + funct_area + functions_nr * 2 // add again for classes, since those also store selectors @@ -933,7 +933,7 @@ Object *SegManager::scriptObjInit0(EngineState *s, reg_t obj_pos) { obj->base_vars = NULL; for (i = 0; i < variables_nr; i++) - obj->variables[i] = make_reg(0, getUInt16(data + (i * 2))); + obj->variables[i] = make_reg(0, READ_LE_UINT16(data + (i * 2))); } return obj; @@ -970,8 +970,8 @@ Object *SegManager::scriptObjInit11(EngineState *s, reg_t obj_pos) { { byte *data = (byte *)(scr->buf + base); - uint16 *funct_area = (uint16 *)(scr->buf + getUInt16(data + 6)); - uint16 *prop_area = (uint16 *)(scr->buf + getUInt16(data + 4)); + uint16 *funct_area = (uint16 *)(scr->buf + READ_LE_UINT16(data + 6)); + uint16 *prop_area = (uint16 *)(scr->buf + READ_LE_UINT16(data + 4)); int variables_nr; int functions_nr; int is_class; @@ -982,9 +982,9 @@ Object *SegManager::scriptObjInit11(EngineState *s, reg_t obj_pos) { VERIFY((byte *) funct_area < scr->buf + scr->buf_size, "Function area pointer references beyond end of script"); - variables_nr = getUInt16(data + 2); + variables_nr = READ_LE_UINT16(data + 2); functions_nr = *funct_area; - is_class = getUInt16(data + 14) & SCRIPT_INFO_CLASS; + is_class = READ_LE_UINT16(data + 14) & SCRIPT_INFO_CLASS; obj->base_method = funct_area; obj->base_vars = prop_area; @@ -1000,7 +1000,7 @@ Object *SegManager::scriptObjInit11(EngineState *s, reg_t obj_pos) { obj->base_obj = data; for (i = 0; i < variables_nr; i++) - obj->variables[i] = make_reg(0, getUInt16(data + (i * 2))); + obj->variables[i] = make_reg(0, READ_LE_UINT16(data + (i * 2))); } return obj; @@ -1065,9 +1065,9 @@ void SegManager::scriptInitialiseLocals(reg_t location) { VERIFY(location.offset + 1 < (uint16)scr->buf_size, "Locals beyond end of script\n"); if (isSci1_1) - count = getUInt16(scr->buf + location.offset - 2); + count = READ_LE_UINT16(scr->buf + location.offset - 2); else - count = (getUInt16(scr->buf + location.offset - 2) - 4) >> 1; + count = (READ_LE_UINT16(scr->buf + location.offset - 2) - 4) >> 1; // half block size scr->locals_offset = location.offset; @@ -1083,7 +1083,7 @@ void SegManager::scriptInitialiseLocals(reg_t location) { byte *base = (byte *)(scr->buf + location.offset); for (i = 0; i < count; i++) - locals->locals[i].offset = getUInt16(base + i * 2); + locals->locals[i].offset = READ_LE_UINT16(base + i * 2); } } @@ -1100,9 +1100,9 @@ void SegManager::scriptRelocateExportsSci11(int seg) { /* We are forced to use an ugly heuristic here to distinguish function exports from object/class exports. The former kind points into the script resource, the latter into the heap resource. */ - location = getUInt16((byte *)(scr->export_table + i)); - if (getUInt16(scr->heap_start + location) == SCRIPT_OBJECT_MAGIC_NUMBER) { - putInt16((byte *)(scr->export_table + i), location + scr->heap_start - scr->buf); + location = READ_LE_UINT16((byte *)(scr->export_table + i)); + if (READ_LE_UINT16(scr->heap_start + location) == SCRIPT_OBJECT_MAGIC_NUMBER) { + WRITE_LE_UINT16((byte *)(scr->export_table + i), location + scr->heap_start - scr->buf); } else { // Otherwise it's probably a function export, // and we don't need to do anything. @@ -1118,12 +1118,12 @@ void SegManager::scriptInitialiseObjectsSci11(EngineState *s, int seg) { VERIFY(!(seg >= heap_size || mobj->type != MEM_OBJ_SCRIPT), "Attempt to relocate exports in non-script\n"); scr = &(mobj->data.script); - seeker = scr->heap_start + 4 + getUInt16(scr->heap_start + 2) * 2; + seeker = scr->heap_start + 4 + READ_LE_UINT16(scr->heap_start + 2) * 2; - while (getUInt16(seeker) == SCRIPT_OBJECT_MAGIC_NUMBER) { - if (getUInt16(seeker + 14) & SCRIPT_INFO_CLASS) { + while (READ_LE_UINT16(seeker) == SCRIPT_OBJECT_MAGIC_NUMBER) { + if (READ_LE_UINT16(seeker + 14) & SCRIPT_INFO_CLASS) { int classpos = seeker - scr->buf; - int species = getUInt16(seeker + 10); + int species = READ_LE_UINT16(seeker + 10); if (species < 0 || species >= s->classtable_size) { sciprintf("Invalid species %d(0x%x) not in interval [0,%d) while instantiating script %d\n", @@ -1136,11 +1136,11 @@ void SegManager::scriptInitialiseObjectsSci11(EngineState *s, int seg) { s->classtable[species].reg.segment = seg; s->classtable[species].reg.offset = classpos; } - seeker += getUInt16(seeker + 2) * 2; + seeker += READ_LE_UINT16(seeker + 2) * 2; } - seeker = scr->heap_start + 4 + getUInt16(scr->heap_start + 2) * 2; - while (getUInt16(seeker) == SCRIPT_OBJECT_MAGIC_NUMBER) { + seeker = scr->heap_start + 4 + READ_LE_UINT16(scr->heap_start + 2) * 2; + while (READ_LE_UINT16(seeker) == SCRIPT_OBJECT_MAGIC_NUMBER) { reg_t reg; Object *obj; @@ -1160,7 +1160,7 @@ void SegManager::scriptInitialiseObjectsSci11(EngineState *s, int seg) { // Copy base from species class, as we need its selector IDs obj->variables[6] = INST_LOOKUP_CLASS(obj->variables[6].offset); - seeker += getUInt16(seeker + 2) * 2; + seeker += READ_LE_UINT16(seeker + 2) * 2; } } @@ -1242,7 +1242,7 @@ uint16 SegManager::validateExportFunc(int pubfunct, int seg) { if (exports_wide) pubfunct *= 2; - offset = getUInt16((byte *)(script->export_table + pubfunct)); + offset = READ_LE_UINT16((byte *)(script->export_table + pubfunct)); VERIFY(offset < script->buf_size, "invalid export function pointer"); return offset; diff --git a/engines/sci/engine/vm.cpp b/engines/sci/engine/vm.cpp index a5834620a2..17ff95d0a2 100644 --- a/engines/sci/engine/vm.cpp +++ b/engines/sci/engine/vm.cpp @@ -239,10 +239,10 @@ reg_t get_class_address(EngineState *s, int classnr, int lock, reg_t caller) { // Getting instruction parameters #define GET_OP_BYTE() ((uint8)code_buf[(xs->addr.pc.offset)++]) -#define GET_OP_WORD() (getUInt16(code_buf + ((xs->addr.pc.offset) += 2) - 2)) +#define GET_OP_WORD() (READ_LE_UINT16(code_buf + ((xs->addr.pc.offset) += 2) - 2)) #define GET_OP_FLEX() ((opcode & 1)? GET_OP_BYTE() : GET_OP_WORD()) #define GET_OP_SIGNED_BYTE() ((int8)(code_buf[(xs->addr.pc.offset)++])) -#define GET_OP_SIGNED_WORD() ((getInt16(code_buf + ((xs->addr.pc.offset) += 2) - 2))) +#define GET_OP_SIGNED_WORD() (((int16)READ_LE_UINT16(code_buf + ((xs->addr.pc.offset) += 2) - 2))) #define GET_OP_SIGNED_FLEX() ((opcode & 1)? GET_OP_SIGNED_BYTE() : GET_OP_SIGNED_WORD()) #define SEG_GET_HEAP(s, reg) s->seg_manager->getHeap(reg) @@ -1489,7 +1489,7 @@ static inline int _obj_locate_varselector(EngineState *s, Object *obj, Selector obj->base_vars = (uint16 *) buf; for (i = 0; i < varnum; i++) - if (getUInt16(buf + (i << 1)) == slc) // Found it? + if (READ_LE_UINT16(buf + (i << 1)) == slc) // Found it? return i; // report success return -1; // Failed @@ -1502,7 +1502,7 @@ static inline int _obj_locate_varselector(EngineState *s, Object *obj, Selector buf = ((byte *) obj_get(s, obj->variables[SCRIPT_SUPERCLASS_SELECTOR])->base_vars); for (i = 0; i < varnum; i++) - if (getUInt16(buf + (i << 1)) == slc) // Found it? + if (READ_LE_UINT16(buf + (i << 1)) == slc) // Found it? return i; // report success return -1; // Failed @@ -1534,9 +1534,9 @@ static inline SelectorType _lookup_selector_function(EngineState *s, int seg_id, if (index >= 0) { if (fptr) { if (s->version < SCI_VERSION(1, 001, 000)) - *fptr = make_reg(obj->pos.segment, getUInt16((byte *)(obj->base_method + index + obj->methods_nr + 1))); + *fptr = make_reg(obj->pos.segment, READ_LE_UINT16((byte *)(obj->base_method + index + obj->methods_nr + 1))); else - *fptr = make_reg(obj->pos.segment, getUInt16((byte *)(obj->base_method + index * 2 + 2))); + *fptr = make_reg(obj->pos.segment, READ_LE_UINT16((byte *)(obj->base_method + index * 2 + 2))); } return kSelectorMethod; @@ -1603,7 +1603,7 @@ void script_detect_versions(EngineState *s) { for (c = 0; c < 1000; c++) { if ((script = s->resmgr->findResource(kResourceTypeScript, c, 0))) { - int id = getInt16(script->data); + int id = (int16)READ_LE_UINT16(script->data); if (id > 15) { version_require_earlier_than(s, SCI_VERSION_FTU_NEW_SCRIPT_HEADER); @@ -1654,7 +1654,7 @@ reg_t script_lookup_export(EngineState *s, int script_nr, int export_index) { && export_index < script->exports_nr && export_index >= 0) #endif - return make_reg(seg, getUInt16((byte *)(script->export_table + export_index))); + return make_reg(seg, READ_LE_UINT16((byte *)(script->export_table + export_index))); #ifndef DISABLE_VALIDATIONS else { CORE_ERROR("EXPORTS", "Export invalid or script missing "); @@ -1753,7 +1753,7 @@ int script_instantiate_sci0(EngineState *s, int script_nr) { if (s->version < SCI_VERSION_FTU_NEW_SCRIPT_HEADER) { // - int locals_nr = getUInt16(script->data); + int locals_nr = READ_LE_UINT16(script->data); // Old script block // There won't be a localvar block in this case @@ -1906,7 +1906,7 @@ int script_instantiate_sci11(EngineState *s, int script_nr) { s->seg_manager->mcpyInOut(0, script->data, script->size, seg_id, SEG_ID); s->seg_manager->mcpyInOut(heap_start, heap->data, heap->size, seg_id, SEG_ID); - if (getUInt16(script->data + 6) > 0) + if (READ_LE_UINT16(script->data + 6) > 0) s->seg_manager->setExportTableOffset(6, seg_id, SEG_ID); reg.segment = seg_id; @@ -1916,7 +1916,7 @@ int script_instantiate_sci11(EngineState *s, int script_nr) { s->seg_manager->scriptRelocateExportsSci11(seg_id); s->seg_manager->scriptInitialiseObjectsSci11(s, seg_id); - reg.offset = getUInt16(heap->data); + reg.offset = READ_LE_UINT16(heap->data); s->seg_manager->heapRelocate(s, reg); return seg_id; diff --git a/engines/sci/engine/vm.h b/engines/sci/engine/vm.h index 6c05ccb3f5..8b45f5770b 100644 --- a/engines/sci/engine/vm.h +++ b/engines/sci/engine/vm.h @@ -131,7 +131,7 @@ struct Class { }; #define RAW_GET_CLASS_INDEX(scr, reg) ((scr)->obj_indices->checkKey(reg.offset, false)) -#define RAW_IS_OBJECT(datablock) (getUInt16(((byte *) datablock) + SCRIPT_OBJECT_MAGIC_OFFSET) == SCRIPT_OBJECT_MAGIC_NUMBER) +#define RAW_IS_OBJECT(datablock) (READ_LE_UINT16(((byte *) datablock) + SCRIPT_OBJECT_MAGIC_OFFSET) == SCRIPT_OBJECT_MAGIC_NUMBER) #define IS_CLASS(obj) (obj->variables[SCRIPT_INFO_SELECTOR].offset & SCRIPT_INFO_CLASS) @@ -176,21 +176,21 @@ struct CodeBlock { #define VM_OBJECT_GET_VARSELECTOR(obj, i) \ (s->version < SCI_VERSION(1,001,000) ? \ - getUInt16(obj->base_obj + obj->variables_nr * 2 + i*2) : \ + READ_LE_UINT16(obj->base_obj + obj->variables_nr * 2 + i*2) : \ *(obj->base_vars + i)) #define VM_OBJECT_READ_PROPERTY(obj, i) (obj->variables[i]) #define VM_OBJECT_GET_FUNCSELECTOR(obj, i) \ (s->version < SCI_VERSION(1,001,000) ? \ - getUInt16((byte *) (obj->base_method + i)) : \ - getUInt16((byte *) (obj->base_method + i*2 + 1))) + READ_LE_UINT16((byte *) (obj->base_method + i)) : \ + READ_LE_UINT16((byte *) (obj->base_method + i*2 + 1))) #define VM_OBJECT_READ_FUNCTION(obj, i) \ (s->version < SCI_VERSION(1,001,000) ? \ make_reg(obj->pos.segment, \ - getUInt16((byte *) (obj->base_method \ + READ_LE_UINT16((byte *) (obj->base_method \ + obj->methods_nr + 1 \ + i))) : \ make_reg(obj->pos.segment, \ - getUInt16((byte *) (obj->base_method \ + READ_LE_UINT16((byte *) (obj->base_method \ + i * 2 + 2)))) diff --git a/engines/sci/gfx/resource/sci_pal_1.cpp b/engines/sci/gfx/resource/sci_pal_1.cpp index fdd11e2474..c448550655 100644 --- a/engines/sci/gfx/resource/sci_pal_1.cpp +++ b/engines/sci/gfx/resource/sci_pal_1.cpp @@ -45,7 +45,7 @@ gfx_pixmap_color_t *gfxr_read_pal11(int id, int *colors_nr, byte *resource, int int entry_size = 0; gfx_pixmap_color_t *retval; byte *pal_data = resource + 37; - int _colors_nr = *colors_nr = getUInt16(resource + 29); + int _colors_nr = *colors_nr = READ_LE_UINT16(resource + 29); int i; switch (format) { diff --git a/engines/sci/gfx/resource/sci_pic_0.cpp b/engines/sci/gfx/resource/sci_pic_0.cpp index 85c246dc4e..f4f0027b3d 100644 --- a/engines/sci/gfx/resource/sci_pic_0.cpp +++ b/engines/sci/gfx/resource/sci_pic_0.cpp @@ -1735,8 +1735,8 @@ void gfxr_draw_pic01(gfxr_pic_t *pic, int flags, int default_palette, int size, goto end_op_loop; case PIC_SCI1_OPX_PRIORITY_TABLE_EQDIST: { - int first = getInt16(resource + pos); - int last = getInt16(resource + pos + 2); + int first = (int16)READ_LE_UINT16(resource + pos); + int last = (int16)READ_LE_UINT16(resource + pos + 2); int nr; int *pri_table; @@ -1778,10 +1778,10 @@ end_op_loop: {} void gfxr_draw_pic11(gfxr_pic_t *pic, int flags, int default_palette, int size, byte *resource, gfxr_pic0_params_t *style, int resid, gfx_pixmap_color_t *static_pal, int static_pal_nr) { - int has_bitmap = getUInt16(resource + 4); - int vector_data_ptr = getUInt16(resource + 16); - int palette_data_ptr = getUInt16(resource + 28); - int bitmap_data_ptr = getUInt16(resource + 32); + int has_bitmap = READ_LE_UINT16(resource + 4); + int vector_data_ptr = READ_LE_UINT16(resource + 16); + int palette_data_ptr = READ_LE_UINT16(resource + 28); + int bitmap_data_ptr = READ_LE_UINT16(resource + 32); int sci_titlebar_size = style->pic_port_bounds.y; //gfx_mode_t *mode; gfx_pixmap_t *view = NULL; diff --git a/engines/sci/scicore/vocab.cpp b/engines/sci/scicore/vocab.cpp index 14c82eae13..885a393a14 100644 --- a/engines/sci/scicore/vocab.cpp +++ b/engines/sci/scicore/vocab.cpp @@ -191,10 +191,10 @@ suffix_t **vocab_get_suffices(ResourceManager *resmgr, int *suffices_nr) { suffices[counter]->alt_suffix_length = alt_len; suffices[counter]->word_suffix_length = word_len; - suffices[counter]->class_mask = inverse_16(getInt16(resource->data + seeker)); // Inverse endianness + suffices[counter]->class_mask = inverse_16((int16)READ_LE_UINT16(resource->data + seeker)); // Inverse endianness seeker += word_len + 4; - suffices[counter]->result_class = inverse_16(getInt16(resource->data + seeker)); + suffices[counter]->result_class = inverse_16((int16)READ_LE_UINT16(resource->data + seeker)); seeker += 3; // Next entry ++counter; @@ -246,10 +246,10 @@ parse_tree_branch_t *vocab_get_branches(ResourceManager * resmgr, int *branches_ byte *base = resource->data + i * 20; - retval[i].id = getInt16(base); + retval[i].id = (int16)READ_LE_UINT16(base); for (k = 0; k < 9; k++) - retval[i].data[k] = getUInt16(base + 2 + 2 * k); + retval[i].data[k] = READ_LE_UINT16(base + 2 + 2 * k); retval[i].data[9] = 0; // Always terminate } diff --git a/engines/sci/sfx/iterator.cpp b/engines/sci/sfx/iterator.cpp index 1fcfd12fab..3579d4729a 100644 --- a/engines/sci/sfx/iterator.cpp +++ b/engines/sci/sfx/iterator.cpp @@ -720,10 +720,10 @@ static int _sci1_sample_init(Sci1SongIterator *self, int offset) { sciprintf("[iterator-1] In sample at offset 0x04x: Byte #1 is %02x instead of zero\n", self->_data[offset + 1]); - rate = getInt16(self->_data + offset + 2); + rate = (int16)READ_LE_UINT16(self->_data + offset + 2); length = READ_LE_UINT16(self->_data + offset + 4); - begin = getInt16(self->_data + offset + 6); - end = getInt16(self->_data + offset + 8); + begin = (int16)READ_LE_UINT16(self->_data + offset + 6); + end = (int16)READ_LE_UINT16(self->_data + offset + 8); CHECK_FOR_END_ABSOLUTE((uint)(offset + 10 + length)); diff --git a/engines/sci/tools.cpp b/engines/sci/tools.cpp index 87742a8cd1..429a6122ed 100644 --- a/engines/sci/tools.cpp +++ b/engines/sci/tools.cpp @@ -27,15 +27,15 @@ namespace Sci { -int sci_ffs(int _mask) { - int retval = 0; - - if (!_mask) +int sci_ffs(int bits) { + if (!bits) return 0; - retval++; - while (!(_mask & 1)) { + + int retval = 1; + + while (!(bits & 1)) { retval++; - _mask >>= 1; + bits >>= 1; } return retval; diff --git a/engines/sci/tools.h b/engines/sci/tools.h index dc5a1a33c5..2df1b258a5 100644 --- a/engines/sci/tools.h +++ b/engines/sci/tools.h @@ -31,14 +31,6 @@ namespace Sci { -/**** FUNCTION DECLARATIONS ****/ - -#define getInt16 (int16)READ_LE_UINT16 -#define getUInt16 READ_LE_UINT16 -#define putInt16 WRITE_LE_UINT16 - -/* --- */ - int sciprintf(const char *fmt, ...) GCC_PRINTF(1, 2); #define gfxprintf sciprintf /* Prints a string to the console stack |