Hello everyone :)
I am really happy to say that I have been working a lot the past 2 weeks on collecting data on the enemies of the game and that I finally was able to compile a huge database of them. Basically, the data are stuff like the drops rate, items that could be drop, score given and even the speed when you will bounce on the enemies.
So, I HIGHLY recommend CoolKirby to read this post as what I am about to say is a lot of resources materials.
Essentially, me and a certain Jdaster64 tried to find data on drops rate and coins and we found a database in the game RAM. On 1.0 NTSC-U version, the database is located at offset 0x3FC290 and contains exactly 535 slots each containing 104 bytes of different data types and sizes. After several days of works, I was able to reverse engineer the data format and as I was learning a bit of java programming, I had the idea to write a program that would write to a txt file formatted so it would paste very well on a spreadsheet. i successfully done the program and got all the data i could get which is a lot more than what tasers would need.
There was so much data for each slots that I basically restrained a bit because either it was irrelevant or the data wasn't used and always had the same value or I simply coudln't figure it out.
So, this is the link to the formatted spreadsheet of every enemies data in the game:
https://docs.google.com/spreadsheets/d/19x-hYSGjF2-TsDkWCzAGyCQ3HGxRUZIAtV63om4hnsU/edit#gid=0
If you are curious/want to try to figure out what hasn't been yet, this if the full version:
https://docs.google.com/spreadsheets/d/1FyI2ZXGoysDGG2jQHfQmS1U-267sLbmhq3Adytk-UK4/edit?usp=sharing
However, I actually didn't took some values as unsigned in this one so there;s some (not much) numbers that doesn't make sense, but it;s an easy fix (I don;t even need to write another txt because there;s too little). The column without names in them are those that I have yet to figure out. some unused bytes and a certain pointer was skipped because the former were not used at all and the later I couldn’t make any sense of where it was pointing to.
So, because you would probably be more interested in the restrained version of the doc, I will talk referring to it.
First, the first column and the first row aren't data, I just identified them so you know what to look for and for the first row, if it needs precision, I put parentheses because you would notice that a lot of the enemies has multiple slots related to them. EVERYTHING else is directly coming from my program which I used a ram dump to have all the data. I tested myself every data and their impact on the game with Cheat engine and I can confirm every effects of them (they basically changed every instances of the concerned enemies so changing the hp of the goomba changed every hp of ever goombas created).
Now, let me explain the columns meaning as the rows are self explanatory.
Name: not in the data, I put it myself so it's easy to know what it is for, I had to test to know some of them so i am pretty confident they are accurate, but just saying as I might have done mistakes. If I put DUMMY, it;s because I have a pretty big confidence the slot is unused, btw, some are very interesting as I think they suggest unused stuff like for example, a third Dimentio fight.
Identifier: this is the dev name of the enemy, it has that name if it is loaded as an actor in the game (the actors slots begin at offset 0x78A6E4 1.0 NTSC-U version). If NULL, it means no identifier is there, but that still means there's relevant data.
Card identifier: this is the ID of the corresponding cards in which the enemy is attached. For some reasons, this ID is in every enemies slots and is a very good indicator to find the slot on cheat engine. For more info about ID, please check the following spreadsheet:
https://docs.google.com/spreadsheets/d/1r4N9HSJjyR4AFehS34rsG4fX_YzSThagv7oBmwa5k6c/edit?usp=sharing
Hitbox: in 2 values, typical of how the game manages hotboxes. the thing to take note here is this isn't necessary the damage hitbox, but it is the hitbox the game would use to calculate collision with the enemies and the map/other enemies.
Max HP: self explanatory, I will only point the interesting fact that it is only on a single byte.
Attack, self explanatory, also is in a single byte.
Score given if killed: it is self explanatory, but emphasis on if KILLED here. There's other values for other stuff. Little interesting fact, there is another score for when an enemy got affected by something like an item or Fleep, however, inspection of the data showed that it is never used except for some DUMMY labelled slots. This suggests an unused feature of the game.
Score for the stylish: this one requires a bit of explanation. You can do different stylish in the game depending how you move the wiimote. What they do is it;s just a multiplier applied to the base. So far, i saw x1, x1.5 and x2 on the first stylish, I didn't checked when you combo the stylish, but it is always done on the base hence its place here.
additional coins drop rate: this is where it gets very interesting. The game manages coins drop in a very similar way than TTYD. You have a minimum amount, a maximum amount and a percentage for a chance of getting an additional coin. So, if the minimum is 1 and the maximum is 3 with an additional drop rate of 60%, it means you are sure to get one coin, 60% chance to get a second coin and after, another 60% chance to get the third one. The only thing you have to remember is the higher the additional drop rate is, the more likely you will get an amount close to the maximum and vice versa.
However, this game has 2 unused data according to coins drop: the minimum amount is ALWAYS 0 on every enemies and there's a global coins drop rate (the chance to get ANY amount of coins) which for some reasons is always 100%, it;s weird, but that;s how it is.
So, the maximum additional coin amount is technically the maximum as the minimum amount is always 0. this also means that you do have chances on every enemies to get 0, but depending on the additional coin drop rate, it can be very rare to get that.
Item drop rate: it;s the rate for dropping ANY item, if it passes, no coins will drops for sure.
Items list with the weight: it tells if the enemy will drop an item from what items it could drop. The array uses a weight system (100 being the neutral value) and this is essentially the higher it is, the more the chances of getting the items IF the enemy will drop is higher (it;s like it "stands out" more).
Initial bounce ejection speed: if you jump on an enemy, you will bounce on it. the initial ejection speed is how fast the game will try to push you away from the enemy initially meaning it is not a consistent speed, it can be resisted against (i see it as if the game tried to move me and then it dies down some frames after).
Nominal ejection speed: That one however, is consistent and is directly written in the speed scaler meaning it can push REALLY hard if it;s high and resisting is almost impossible. I figured these would be helpful to calculate the boost of speed you might get if you jumps on enemies.
Number of entities: This is a weird one, it's the number of......I guess "things: that the enemies might use. It might be just graphical, but sometime it has other features for example, the pokey has 4 entities, each one for their body part. I put it here because I noticed weird test result of me going through some parts of the pokey if I changed the value to a lesser one.
For the last things, If I put NULL anywhere, it either means the data isn't present or in the case of items, nothing.
That's all, I have for the enemies data, I hope this will become useful when planning a tas route for the game because I do agree that it can be tough as far as optimisation is concerned, but now, AT LEAST you have the resources to plan it.
CoolKirby, idk how you can integrate the spreadsheet (I more like you use the one I called friendly version), but I really want at least a link or something, a lot of people have been asking me to get these data since a long time so it must be in demand to consult them.
Thanks, I will soon have more time to do even more docs and correct my addresses stuff so that I can finally glitch hunt the game, I have been concentrating my effort on docs because the game is really long overdue with docs so yeah.
:)