Example #1
0
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
Example #2
0
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')
Example #3
0
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')
Example #4
0
    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
Example #5
0
    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