Skip to content
This repository has been archived by the owner on Sep 28, 2024. It is now read-only.

SMB3 Bowser is compatible with many enemies that the editor claims it is not #89

Open
VGamer78 opened this issue Jun 13, 2021 · 5 comments
Labels
bug Something isn't working

Comments

@VGamer78
Copy link

So I was using hex-tree and I noticed that a lot of the common enemies listed in the title still have proper graphics with SMB3 Bowser present in the room. I was wondering of why you are disabled from putting all of these in the level together. Here's a screenshot below for proof.
download

@city41
Copy link
Owner

city41 commented Jun 13, 2021

Do you still have that level handy in hex-tree? If so, can you go to level settings for that room and share what these values are?

image

Basically the answer currently is more research is needed. The root of the problem is classic Bowser. When classic Bowser is present, many enemies stop working correctly. So far classic Bowser and smb3 Bowser both are known to use the same graphic sets. So since classic Bowser breaks enemies and uses the same graphic set as smb3 Bowser, smaghetti denies both of them from coexisting with those enemies. That is probably not correct, but that's the best data we have so far. I really don't want to add a special "is classic bowser present" logic to the code, as that kind of stuff gets really painful after a while.

I have a feeling truly decompiling and fully reverse engineering parts of the game might be necessary to really get to the bottom of some of these things.

@city41
Copy link
Owner

city41 commented Jun 13, 2021

Ah nevermind on those values, I see your level. Since you started with bowser then added the goomba, yeah that will work. This is definitely a bug, but unfortunately don't have a good solution to it yet.

@city41 city41 added the bug Something isn't working label Jun 13, 2021
@city41 city41 changed the title Why are enemies such as Goomba's, Koopa's, and Piranha Plants not allowed with SMB3 Bowser? SMB3 Bowser is compatible with many enemies that the editor claims it is not Jun 13, 2021
@VGamer78
Copy link
Author

I see. Didn't you technically already do that for Big Bass though. He is in two graphics sets in which one of them has him and Boo, and the other one is him with the other SMB3 underwater enemies.

@city41
Copy link
Owner

city41 commented Jun 13, 2021

BigBass is a good example, as he's also incompatible with classic Bowser. His graphic set is currently [[7, 8], -1, -1, -1, -1, ANY_BELOW_0x16]

The -1s mean he doesn't care about those slots, they can be anything. He also doesn't care about the last slot, it should probably be -1 too. But classic bowser wants 0x16 in the last slot. If classic bowser and big bass are in the same room, big bass is corrupted. I have no idea why. So for now, I just force big bass to stay away from classic bowser by denying him 0x16 in that slot.

Why does classic bowser break big bass? I currently have no idea. It's very strange. So far classic bowser is the only sprite in the game that does this. Once we can figure out why he does this and what it really means, it will hopefully show a good solution to this problem.

So the problem is, smb3 bowser also wants 0x16 in the last slot. But unlike classic bowser, he doesn't break other sprites. So smb3 bowser and BigBass can be in the same room together. But currently Smaghetti doesn't allow that. The reason is I don't want to add a bunch of "what if classic bowser is here?" code to the editor without first really understanding what classic bowser is doing. So for the time being, i think this limitation will have to remain until more knowledge is built up.

@city41
Copy link
Owner

city41 commented Jun 13, 2021

and for the record, here is what happens to big bass when bowser is in the room with him

image

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants