Here's a hands-on guide suitable for people with little to no knowledge on the different RS cache formats:
First off you need a cache library that supports both caches (the one you're trying to pack FROM, and the cache you're trying to pack TO). This is easily found by downloading 500+ revision servers. They mostly support the same revisions (450~ to 650~) and they pretty much all depend on a cache library to read data.
In this cache library, you're going to be looking for methods used to read data from the cache. Usually looks something like this:
Code:
byte[] file_data = cache.getIndexes()[x].getArchive(y).getFile(z);
Now, as you can see, the code is pretty self-explanatory.
What you're going to do is make 2 new cache (usually called Store) instances. It will look something like this:
Code:
Store cache = new Store("path to cache here");
The cache library usually not only contains methods to read the data, but also writing data.
Usually looks something like this:
Code:
cache.getIndexes()[x].putArchive(x);
And to finish it off, here's how it could be used to pack a model from an OSRS cache, to a 530 cache.
Code:
cache_530.getIndexes()[7].putArchive(model id, cache_osrs);
Before you go nuts using the cache library, I highly suggest you read through the cache library to see what is actually going on. This way, you'll learn how to support whatever revision of cache & data you want. Compare, compare & compare. Reference data is ALWAYS available in the client.
Here's some information about the different cache formats:
Maps however are a different monster. Now that you know how to read and write data in the client, time to learn xteas. You can
read Kris' post about it here.