I thought little was known about S3&K. Ha. Well, time to get someone to get these commands into an editor so the common man can utilise them. Perhaps a full conversion of Sonic 2 into Sonic 3? Perhaps I'm just getting too ambitious right now, but who knows?

If I'm not mistaken, these are just labels from the S&K Collection PC exe file.

Yup, they are. For those who didn't know, all (original?) labels are present in the exe file of S&KC collection (compilation oddities I guess) but that's as much as we have in regards of this topic, nothing really to be released.

Edit: @MathUser, I don't know if you realized you are replying to a post made in 2004 :P

It took me 3 hours of writing a C++ program capable of mapping each label to its address in the .text segment of the EXE file. I knew when I hit the puka_puka (boss and enemy bobbing) function on the right address, that I had succeeded, and confirmation that the last address was the last label.

I haven't figured out the actual symbol format. I decided to take a huge guess that it was all relative, and just had to remember the latest highest label used after each new set of globals, after the hell that is locals. A guess like this couldn't be done manually by hand, as it would take weeks, so here is the very basic program source to do the work in a couple of minutes (C++ std::list is the slow factor here):http://www.logotypes.../Labels/src.rar

Now, you must understand that the original labels won't make it easier to understand what the functions do. And that IDA pro can't guess what type of label is being applied, as much as I can't, so you will loose about half the labels (alot of locals) when running the script. A typical example is the local label @@200 that is used more than once, IDA will not understand this, as well as won't understand the size of a function so that a local label can be constructed. Neither will IDA understand all the pt (pattern tables) data labels.
My work was to get the labels delivered to the right addresses, not to build a disassembly for you. Also note that several labels that were expected to be found, weren't even in the symbols list, like sinset (the function returning sine and cosine) and atan (the function returning arctangent2)! That means the symbols in the EXE file were not from all original assembled files.

So when you see a non named label, it is in the address range lower than 0x6ebcb8 or, higher than 0x79f6b0 and less than 0x7f762c, or higher than 0x8200be. Those address ranges were not in the symbol database.

If you need any help with any name, ask me. I suppose you have a complete disassembly of Sonic 3 & Knuckles, so that you can just look up your object name against these tables above.

The examples above show how much information can be lost if using the original labels.

EDIT: Some locals labes are actually screwed up with my program. But the global ones are correct. Local labes are all the @@100 and @@act_tbl ones, which are used multiple times. It could probably be fixed one day if really needed.