Pazaz
Forum Moderator
Staff member
- Oct 28, 2013
- 66
- 83
- 5,050
For a very short window of time - a bit more than 30 minutes - there was a debug macOS build deployed for revision 216 last year. It went undiscovered at the time but was downloaded automatically to my archive nevertheless.
The NXT RS3 beta that was released 8 years ago was a huge boon to our understanding. This is much better than that. This isn't a release build with debug symbols included, it's a complete debug build and functions are not inlined.
The OSRS C++ client is built atop NXT's codebase and there's plenty of overlap between the two. The RS3 revision at the time was 930 so it includes information relevant to 930 as well.
NXT is dragged in as a library dependency and OSRS-specifics typically go into the
Yes, it's runnable. Some patching required.
Downloads
1. Debug macOS executable: https://www.runewiki.org/archive/rsps/osrs-dump/osclient-216-mac
2. Organized function signatures: https://www.runewiki.org/archive/rsps/osrs-dump/symbols.txt
3. Raw symbol table: https://www.runewiki.org/archive/rsps/symbols-table.txt & symbols-table-demangled.txt
4. Constants: https://www.runewiki.org/archive/rsps/osrs-dump/constants.txt - open up IDA to get the initializers
5. Strings: https://www.runewiki.org/archive/rsps/osrs-dump/strings.txt
6. File paths: https://www.runewiki.org/archive/rsps/osrs-dump/paths.txt - useless, but cool to see laid out
7. Shaders: https://www.runewiki.org/archive/rsps/osrs-dump/shaders.zip
If needed, OpenRS2 has mirrored my archive: https://archive.openrs2.org/pub/mirrors/runewiki.org/archive/ and I'm hoping with enough time this has propagated enough to never disappear.
Digging In
I'll start the thread off with some things I've gleaned. I want you guys to post stuff too!
My hope is the spirit of collaboration and sharing continues for years to come.
Please, learn and then share what you've discovered for others after us! I'm simply trying to preserve the game.
P.S. check out 2004Scape
The NXT RS3 beta that was released 8 years ago was a huge boon to our understanding. This is much better than that. This isn't a release build with debug symbols included, it's a complete debug build and functions are not inlined.
The OSRS C++ client is built atop NXT's codebase and there's plenty of overlap between the two. The RS3 revision at the time was 930 so it includes information relevant to 930 as well.
NXT is dragged in as a library dependency and OSRS-specifics typically go into the
jag::oldscape
namespace.Yes, it's runnable. Some patching required.
Downloads
1. Debug macOS executable: https://www.runewiki.org/archive/rsps/osrs-dump/osclient-216-mac
2. Organized function signatures: https://www.runewiki.org/archive/rsps/osrs-dump/symbols.txt
3. Raw symbol table: https://www.runewiki.org/archive/rsps/symbols-table.txt & symbols-table-demangled.txt
4. Constants: https://www.runewiki.org/archive/rsps/osrs-dump/constants.txt - open up IDA to get the initializers
5. Strings: https://www.runewiki.org/archive/rsps/osrs-dump/strings.txt
6. File paths: https://www.runewiki.org/archive/rsps/osrs-dump/paths.txt - useless, but cool to see laid out
7. Shaders: https://www.runewiki.org/archive/rsps/osrs-dump/shaders.zip
If needed, OpenRS2 has mirrored my archive: https://archive.openrs2.org/pub/mirrors/runewiki.org/archive/ and I'm hoping with enough time this has propagated enough to never disappear.
Digging In
I'll start the thread off with some things I've gleaned. I want you guys to post stuff too!
- 3D rasterization is in a class called
Pix3D
- 2D drawing is in a class called
Pix2D
- Sprites use two classes,
Pix8
andPix32
(in Java this is the byte[] and int[] sprite classes). "Pix8" was previously discovered in RS2, Pix32 is newly discovered. NPC_INFO
is structurally like:
Code:
getNpcPos()
getNpcPosOldVis()
getNpcPosNewVis()
getNpcPosExtended()
- Because NXT is embedded, you'll find names for the RS3 protocol in here. OSRS doesn't match from enums so you won't find OSRS prot names or any CS2 instructions' names, though there is overlap. I wonder if the scrambled IDs match RS3 from the same time!
- There's debug strings in the protocol which provides the names of some transmitted variables
- RT7 HD renderer exists with an imgui interface to tweak it
- CollisionMap's memory layout (which is the same as Java - note these variable names are my own)
C++:
namespace jag::oldscape::movement {
struct CollisionMap {
int originX;
int originZ;
int sizeX;
int sizeZ;
int *flags;
}
}
Code:
CollisionMap struc ; (sizeof=0x14)
00000000 originX dd ?
00000004 originZ dd ?
00000008 sizeX dd ?
0000000C sizeZ dd ?
00000010 flags dd ?
00000014 CollisionMap ends
- In IDA you may come across some functions that don't make sense contextually. Some functions that are duplicates of others may appear in the same place, but all of the names still exist in the symbol table at the same location! IDA just doesn't have the context to use the right one.
- Disable demangled names when you're searching in IDA, or it'll freeze repeatedly...
My hope is the spirit of collaboration and sharing continues for years to come.
Please, learn and then share what you've discovered for others after us! I'm simply trying to preserve the game.
P.S. check out 2004Scape
Last edited: