def calc_operands_len(operands): opr_len = 0 for opr in take_n(operands, 2): optype, opsize = opr opr_len += opr_lens[opsize] return opr_len
def main(level_header, out): out.write("%d %d\n" % (level_header.width, level_header.height)) tilemap_data = decompress_data(chunk.read_chunk(level_header.tilemap_chunk)) for row in take_n(tilemap_data, level_header.width * 2): out.write(' '.join(str(read_word(row, i)) for i in xrange(0, len(row), 2))) out.write('\n')
def main(level_header, out): out.write("%d %d\n" % (level_header.width, level_header.height)) tilemap_data = decompress_data(chunk.read_chunk( level_header.tilemap_chunk)) for row in take_n(tilemap_data, level_header.width * 2): out.write(' '.join( str(read_word(row, i)) for i in xrange(0, len(row), 2))) out.write('\n')
def decode(self, state, rom, obj, ram_symbols): ip = state.ip + 1 next_states = [] operands = [] for i, opr in enumerate(take_n(self.operands, 2)): tag = self.operand_tags and self.operand_tags[i] new_operands, operand_size, added_next_states = self.decode_operand(opr, tag, state, rom, ip, ram_symbols) ip += operand_size operands += new_operands next_states += added_next_states if self.flow != self.FLOW_NORETURN: next_states.append(state.jumped(ip)) return self, operands, next_states
def decode(self, state, rom, obj, ram_symbols): ip = state.ip + 1 next_states = [] operands = [] for sprite_i in xrange(obj.num_sprites): for opr in take_n(self.operands, 2): tag = self.operand_tags and self.operand_tags[i] new_operands, operand_size, added_next_states = self.decode_operand(opr, tag, state, rom, ip, ram_symbols) ip += operand_size operands += new_operands next_states += added_next_states assert (ip - state.ip) == 1 + obj.num_sprites * calc_operands_len(self.operands) if self.flow != self.FLOW_NORETURN: next_states.append(state.jumped(ip)) return self, operands, next_states