There were definitely more than just a few steps involved here. If you don't want to read this, I understand!
One thing I did was optimize several of the tables. I started with the object collision box tables(3B8000-3BA425), removing all duplicates and updating the pointers. This freed up a whopping 0x6C8 bytes, which is way more than enough room to add in the four collision boxes required for Spiny's animation frames.
Second was finding enough space to add in the sprites. A side-by-side comparison with multiple versions of DKC (as well as a close look at the sprite pointer tables) shows that the 1.0 U version has loads of garbage data at the end of banks. The locations have been posted
here.
Third was adding the animations. This required relocating the animation pointer table from 3E8572 to one of the newfound empty spaces (17FA3C). This allowed for 0x12A more animation pointers to be added. The code for the animation commands in DKC2 had to be compared with those in DKC(partly by looking at Diddy's animation data from both games). So the animations are near-exact ports.
The primary behavior code pointer tables(3F8177) and object palette data(3C81CC) were also relocated so they could be expanded. Rather than update the hundreds of pointers in the object definitions(35856D), I modified the palette loading subroutines(normally found at 3DF1F0, 3DF23A, and 3DF254) to "correct" pointers falling in the normal range.
I even created a new object function so that object definitions aren't limited to bank $B5.
Most of Spiny's primary behavior code is a duplicate of Gnawty's. However, a modified collision routine (based on the one found at 3FC703) was created, so that rolling into Spiny's backside hurts you. The y-speed and the animation displayed when defeated were also changed. Spiny's vulnerability flags ($11A1) are the same as Zinger's, so attempting to stomp hurts.
As with the animations, Spiny's object definitions (all 45 subtypes!) were mostly ported from DKC2 (DKC2's object definitions begin at 3F2A04, pointers are at 3BE800-3BF843). Here are several of the commands/RAM addresses and their DKC2 equivalents:
Oh, and Spiny isn't the first custom object I created, Neek was. Considering that the rat is little more than a graphic swap of Gnawty, it isn't very interesting.
I'll have to add the RAM addresses to Arnethegreat's RAM map eventually...