public void start(Archive archive, Client client) {
        String versionNames[] = {"model_version", "anim_version", "midi_version", "map_version"};
        for (int i = 0; i < 4; i++) {
            byte buf[] = archive.get(versionNames[i]);
            int len = buf.length / 2;
            Stream buffer = new Stream(buf);
            files[i] = new int[len];
            fileStatus[i] = new byte[len];
            for (int l = 0; l < len; l++) {
                files[i][l] = buffer.getUnsignedShort();
            }
        }
        String crcNames[] = {"model_crc", "anim_crc", "midi_crc", "map_crc"};
        for (int i = 0; i < 4; i++) {
            byte buf[] = archive.get(crcNames[i]);
            int len = buf.length / 4;
            Stream buffer = new Stream(buf);
            crcs[i] = new int[len];
            for (int l = 0; l < len; l++) {
                crcs[i][l] = buffer.getInt();
            }
        }
        byte buf[] = archive.get("model_index");
        int len = files[0].length;
        modelIndices = new byte[len];
        for (int i = 0; i < len; i++) {
            if (i < buf.length) {
                modelIndices[i] = buf[i];
            } else {
                modelIndices[i] = 0;
            }
        }
        buf = archive.get("map_index");
        Stream buffer = new Stream(buf);
        len = buf.length / 7;
        mapIndices1 = new int[len];
        mapIndices2 = new int[len];
        mapIndices3 = new int[len];
        mapIndices4 = new int[len];
        for (int i = 0; i < len; i++) {
            mapIndices1[i] = buffer.getUnsignedShort();
            mapIndices2[i] = buffer.getUnsignedShort();
            mapIndices3[i] = buffer.getUnsignedShort();
            mapIndices4[i] = buffer.getUnsignedByte();
        }
        buf = archive.get("anim_index");
        buffer = new Stream(buf);
        len = buf.length / 2;
        animationIndices = new int[len];
        for (int i = 0; i < len; i++) {
            animationIndices[i] = buffer.getUnsignedShort();
        }
        buf = archive.get("midi_index");
        buffer = new Stream(buf);
        len = buf.length;
        midiIndices = new int[len];
        for (int i = 0; i < len; i++) {
            midiIndices[i] = buffer.getUnsignedByte();
        }
        clientInstance = client;
        running = true;
        clientInstance.startRunnable(this, 2);
    }