Post your lunadll findings
Re: Post your lunadll findings
You forgot the black of the shadow star cheat in "cheats"
Re: Post your lunadll findings
Do you know the address?
Re: Post your lunadll findings
It's somewhere with the gravity and player width guy's posts.Kevsoft wrote:Do you know the address?
Kil: it's touching that you'd go to those lengths on my request
Re: Post your lunadll findings
The thing can't even be used until someone figures out the data format behind the pointer so apparently not
DON'T PM me. Ask your question in the help thread so everyone can be answered.
Re: Post your lunadll findings
Big news: I managed to get access to the SMBX Animation/Effect/Particle (whatever) system. It is not quite revealed yet but I can already read most of the data stuff.
So what does the SMBX Animation System:
So what does the SMBX Animation System:
- Well play animations
- Has access to several values like coins, score, ect...
- Sometimes plays sound effects in addition.
- It has a limit to 1000 Animations at the same time.
Code: Select all
struct SMBXAnimation{
short animationID;
short unknown02;
double XPos;
double YPos;
double Height;
double Width;
double XSpeed;
double YSpeed;
short unknown34;
short unknown36;
short unknown38;
short unknown3A;
short timer;
short unknown3E;
short unknown40;
};
Re: Post your lunadll findings
I guess those are for the "Effects" in the Effects folder, aka stuff that appears when things die, smoke clouds, etc
DON'T PM me. Ask your question in the help thread so everyone can be answered.
Re: Post your lunadll findings
Have been looking at player memory 0x122 (forced state). Currently listed on the LunaDLL page are:
0 = normal
1 = powerup
2 = powerdown
3 = entering pipe
4 = getting fire flower
7 = entering door
500 = tanooki statue poof state
I've done some experimenting and found these:
41 = get ice power
5 = get leaf power
12 = get hammer suit
11 = get tanuki suit
These can be pretty useful for certain things. I'm using them to pause an update loop to ensure it stays in sync.
0 = normal
1 = powerup
2 = powerdown
3 = entering pipe
4 = getting fire flower
7 = entering door
500 = tanooki statue poof state
I've done some experimenting and found these:
41 = get ice power
5 = get leaf power
12 = get hammer suit
11 = get tanuki suit
These can be pretty useful for certain things. I'm using them to pause an update loop to ensure it stays in sync.
Re: Post your lunadll findings
Finding: The way pause works in this game is freakin garbage
DON'T PM me. Ask your question in the help thread so everyone can be answered.
Re: Post your lunadll findings
Considering BGOs and backgrounds still animate, why am I not surprised
Re: Post your lunadll findings
That doesn't inherently point to bad code. Many games just pause by halting the update loop. Animations that are done independently (say, via shader code or in a separate thread) won't freeze. This is a fairly tidy way of doing things.TiKi wrote:Considering BGOs and backgrounds still animate, why am I not surprised
I imagine SMBX doesn't do this, though.
Re: Post your lunadll findings
Someone said that the super speed cheat persists between levels in the editor... But gravity lunadll codes do that too! I wonder how THAT can make speed have a bigger cap, then. I hope it's not hardcoded that way so where it only activates for the cheat. Though if that is it, at least the cheat may be able to be activated.
Re: Post your lunadll findings
I found the code that toggles whether you're in super speed mode or not, like the cheat!
0x00B2C8AE, word, 0xFFFF=on, 0=off
0x00B2C8AE, word, 0xFFFF=on, 0=off
-
- Banned
- Posts: 0
- Joined: 13 years ago
- First name: Stephen
- Location: Holstaurus Heaven
Re: Post your lunadll findings
this is more of a negative finding. Whenever you change the hitbox of the player, it seems to stay changed when you exit the level. Since most of the testing is one level at a time, are things like this being compensated for?
Re: Post your lunadll findings
I think things like this have been noted before, and solutions have been suggested. It does seem like something of a design flaw with LunaDLL, but there are ways around it, they just aren't particularly neat.Septentrion Pleiades wrote:this is more of a negative finding. Whenever you change the hitbox of the player, it seems to stay changed when you exit the level. Since most of the testing is one level at a time, are things like this being compensated for?
Re: Post your lunadll findings
Here's some code to implement a wall jump off the side of a given type of block (the wood block in this example):
Code: Select all
#0
//reset player gravity to normal when not wall-jumping
MemAssign,0x00B2C6F4,12,0,0,0,w
//trigger wall jump from right side of wood block (block-id 1)
BlockTrigger,0,1,2,1002,0,0
//trigger wall jump from left side of wood block (block-id 1)
BlockTrigger,0,1,4,1004,0,0
#1002
//wall jump from right
//set player gravity to 0 when touching wall
MemAssign,0x00B2C6F4,0,0,0,1,w
//when jumping
OnInput,0,6,1,1003,1,0
//disable spin jump from wall
PlayerMemSet,0,0x120,0,0,1,w
#1003
//give player momentum in opposite direction after wall jump
PlayerMemSet,0,0xE0,2,0,1,df
//face right after wall jump
PlayerMemSet,0,0x106,1,0,1,w
#1004
//wall jump from left
//set player gravity to 0 when touching wall
MemAssign,0x00B2C6F4,0,0,0,1,w
//when jumping
OnInput,0,6,1,1005,1,0
//disable spin jump from wall
PlayerMemSet,0,0x120,0,0,1,w
#1005
//give player momentum in opposite direction after wall jump
PlayerMemSet,0,0xE0,-2,0,1,df
//face left after wall jump
PlayerMemSet,0,0x106,-1,0,1,w
-
- https://www.youtube.com/watch?v=BODxOghVmko
- Posts: 1812
- Joined: 10 years ago
- First name: Mack
- https://rixithechao.talkhaus.com/
Re: Post your lunadll findings
NPC offsets:
0x6A - word(?) - Generator firing rate
0xAC - word - respawn X
0xB4 - word - respawn Y
The respawn coordinates use a different scale factor than the current position, so here's some Lua conversion functions:
0x6A - word(?) - Generator firing rate
0xAC - word - respawn X
0xB4 - word - respawn Y
The respawn coordinates use a different scale factor than the current position, so here's some Lua conversion functions:
Code: Select all
function coordToSpawnX (xPos)
local newX = xPos*-(8) - 1572863.88
return newX
end
function coordToSpawnY (yPos)
local newY = yPos*-(8) - 1572864.08
return newY
end
function spawnToCoordX (xPos)
local newX = -(xPos + 1572863.88)/8
return newX
end
function spawnToCoordY (yPos)
local newY = -(yPos + 1572864.08)/8
return newY
end
Delightful Adventure Enhanced is out now!
There's an official ASMT Discord server! Check it out to discuss Demo games and follow their development! thread, invite link
(Entry requires verification, either with a connected Youtube/Twitter/Twitch/etc account or manually by the server staff.)
Itch.io (albums and eventually games), Youtube (dofur pass and I guess other videos)
There's an official ASMT Discord server! Check it out to discuss Demo games and follow their development! thread, invite link
(Entry requires verification, either with a connected Youtube/Twitter/Twitch/etc account or manually by the server staff.)
Itch.io (albums and eventually games), Youtube (dofur pass and I guess other videos)
- h2643
- <Knux> h2643 the super computer
- Posts: 3
- Joined: 9 years ago
- Location: Ukraine (Украина)
- Contact:
Re: Post your lunadll findings
I don't know if someone posted discovery about Dummy NPCs and NPC-0, but quite some time ago I did:
http://nsmbxforums.prophpbb.com/post87281.html#p87281
I can't find my original post at www.supermariobrosx.org, but who cares. Hopefully this is interesting enough.
http://nsmbxforums.prophpbb.com/post87281.html#p87281
I can't find my original post at www.supermariobrosx.org, but who cares. Hopefully this is interesting enough.
- Rednaxela
- Maker of Shenanigans
- Posts: 897
- Joined: 10 years ago
- Pronouns: they/them
- https://rednaxela.talkhaus.com
Re: Post your lunadll findings
After finding some NPC offsets that I posted in the help thread (didn't know about this thread, oops), I've found a few more notable things:
This old bit that was documented before slightly inaccuratebecause that value is actually a double starting at 0xF0, but sure, a float starting at 0x+F4 would look the same for lakitu throw identities with them being integers within a small well-known range.
The real picture of this area of memory is like:
Notes about each for SMB3 Bowser
0x+F0 Resets to 9 when starting to jump high and decrements 1 per tick. Not sure but may start arcing after it hits 0
0x+F8 Increments by a seemingly random number between 0.0 and 1.0 each tick. Resets from time to time but I don't can't tell exactly why.
0x+100 Increments by 1 per tick. Sometimes it gets reset to 0, but other times it gets reset to a negative number and counts back up to 0 to trigger something.
0x+108 Current AI phase (2=hopping, 3=jumping high+falling, 4=shooting fireballs, 10=turning right after hitting ground, -10=turning left after hitting ground)
0x+110 Other? (0=just after hitting ground, 1=other)
Notes about with Brown Doughnut Block
0x+F0 0=Not falling, 1=Falling
0x+F8 0=Idle, 1=Wiggling or falling
0x+100 Increments by 1 per tick until 30. Falls at 30.
0x+108/110 Unused
Notes about with Dry Bones
0x+F0 0=Up walking around, 1=Collapsed
0x+F8 When broken, increments by 1 per tick until 400 at which point it gets up
0x+100 Alternates between 1 and 0 when wiggling (0x+F8 between 300 and 400)
0x+108/110 Unused
Notes about with SMW Bowser Statue
0x+F0 Increments 1 per tick, resetting when it shoots
0x+F8/100/108/110 Unused
Notes about with Lakitu
0x+F0 Thrown NPC identity
0x+F8 Init to 1, set to 0 a little while after throwing
0x+100 0=Haven't yet passed over player, 2=Getting ready to throw, 3=Like 0 but after having thrown before
0x+108 When getting ready to throw, resets to 100 and starts decrementing. Throws once 0 again.
0x+110 Always increments 1 per tick, resets to 0 after throw
This analysis may be helpful to people who want to manipulate the AI of existing NPCs more. If anyone has any requests for me to look into the AI state/timers for a particular NPC, let me know.
Quick little thing I did with this knowledge for example, is I made a SMB3 Bowser which never shoots fireballs and only does the high jump attack, or only shoots fireballs and doesn't jump.
This old bit that was documented before slightly inaccurate
Code: Select all
0x+F4 ? = Related to lakitu throw identity?
The real picture of this area of memory is like:
Code: Select all
// 0x+F0 qw = Multipurpose NPC AI state/timer 1
// 0x+F8 qw = Multipurpose NPC AI state/timer 2
// 0x+100 qw = Multipurpose NPC AI state/timer 3
// 0x+108 qw = Multipurpose NPC AI state/timer 4
// 0x+110 qw = Multipurpose NPC AI state/timer 5
0x+F0 Resets to 9 when starting to jump high and decrements 1 per tick. Not sure but may start arcing after it hits 0
0x+F8 Increments by a seemingly random number between 0.0 and 1.0 each tick. Resets from time to time but I don't can't tell exactly why.
0x+100 Increments by 1 per tick. Sometimes it gets reset to 0, but other times it gets reset to a negative number and counts back up to 0 to trigger something.
0x+108 Current AI phase (2=hopping, 3=jumping high+falling, 4=shooting fireballs, 10=turning right after hitting ground, -10=turning left after hitting ground)
0x+110 Other? (0=just after hitting ground, 1=other)
Notes about with Brown Doughnut Block
0x+F0 0=Not falling, 1=Falling
0x+F8 0=Idle, 1=Wiggling or falling
0x+100 Increments by 1 per tick until 30. Falls at 30.
0x+108/110 Unused
Notes about with Dry Bones
0x+F0 0=Up walking around, 1=Collapsed
0x+F8 When broken, increments by 1 per tick until 400 at which point it gets up
0x+100 Alternates between 1 and 0 when wiggling (0x+F8 between 300 and 400)
0x+108/110 Unused
Notes about with SMW Bowser Statue
0x+F0 Increments 1 per tick, resetting when it shoots
0x+F8/100/108/110 Unused
Notes about with Lakitu
0x+F0 Thrown NPC identity
0x+F8 Init to 1, set to 0 a little while after throwing
0x+100 0=Haven't yet passed over player, 2=Getting ready to throw, 3=Like 0 but after having thrown before
0x+108 When getting ready to throw, resets to 100 and starts decrementing. Throws once 0 again.
0x+110 Always increments 1 per tick, resets to 0 after throw
This analysis may be helpful to people who want to manipulate the AI of existing NPCs more. If anyone has any requests for me to look into the AI state/timers for a particular NPC, let me know.
Quick little thing I did with this knowledge for example, is I made a SMB3 Bowser which never shoots fireballs and only does the high jump attack, or only shoots fireballs and doesn't jump.
Re: Post your lunadll findings
If you are bored, you can analyse the Animation struct
Re: Post your lunadll findings
Maybe you can further investigate the holes in the Player struct. I know a lot of those do something...
DON'T PM me. Ask your question in the help thread so everyone can be answered.
Re: Post your lunadll findings
I did find there was a lot of padding in the NPC struct, which is useful. This seems to occur between variables of different types, in order to push them to an offset that matches with other variables of that type. This means there is a lot of blank space in the NPC struct, which is useful for things such as CinematX, which writes to one of them to keep unique IDs for NPCs. I expect this is also the case for the player and world struct, so that's worth noting.Kil wrote:Maybe you can further investigate the holes in the Player struct. I know a lot of those do something...
Having said that, there is still a lot that's not known. Another useful feature would be the ability to grab the input data before it's captured by the player movement or otherwise, which would allow us to freeze the player and handle game input manually in Luna.
Re: Post your lunadll findings
Couple of new player memory offsets, based on yoshis:
Code: Select all
0xB0 float Tongue Start Position
0xB4 word Tongue End Offset (start position + (end offset * direction) = tongue end position)
0xB6 word -1 if tongue retracting