VoidMage_Lowell

Profile posts Postings Media Albums About

  • Falling rocks are probably seperate entity <314>. Charge attack /etc is definitely hard-coded, I can find that offset in a jiffy too so yeah I'll just edit this

    things said:
    004654C1 C780 A4000000 mov dword ptr [eax+0A4],0A //That's one

    00465560: C781 A4000000 mov dword ptr [ecx+0A4],4 //That's another

    00465621: C782 A4000000 mov dword ptr [edx+0A4],3 //This is also a damage val

    0046577F: C780 A4000000 mov dword ptr [eax+0A4],0A //Oh look more

    004658B3: C782 A4000000 mov dword ptr [edx+0A4],3 //This is looking a tad redundant

    00465900: C780 A4000000 mov dword ptr [eax+0A4],0 //interesting. That's it.

    I'm currently drawing up design specifications for your TSC command and require an executive decision. I can either have the water always apply half the value of the regular speeds (that's what happens in CS, easy way) I can code in a modifier so you can hand it a floating point # to multiply the speeds for in water tiles (marginally harder, saves memory) or I can just add in a whole 'nother table for the water physics (middle difficulty, more effort to manually adjust water physics as well)
    I rewrote the entire TSC parser, adding new commands is pretty easy for me.
    DB has stopped giving me things to do so I need something to feed my hacking addiction
    no big.
    I know I'm explaining this poorly now, you sorta caught me at a bad time.
    I'll see if I can help more tomorrow.
    0x4156D7 has the const declaration for normal and underwater physics.
    004156D7 mov ecx,[0049E63C]
    004156DD and ecx,00000100
    004156E3 je 0041571F
    004156E5 mov [ebp-0014],00000196
    004156EC mov [ebp-000C],000002FF
    004156F3 mov [ebp-001C],00000028
    004156FA mov [ebp-0010],00000010
    00415701 mov [ebp-0028],00000280
    00415708 mov [ebp-0024],0000002A
    0041570F mov [ebp-0018],00000010
    00415716 mov [ebp-0020],00000019
    0041571D jmp 00415757
    0041571F mov [ebp-0014],0000032C
    00415726 mov [ebp-000C],000005FF
    0041572D mov [ebp-001C],00000050
    00415734 mov [ebp-0010],00000020
    0041573B mov [ebp-0028],00000500
    00415742 mov [ebp-0024],00000055
    00415749 mov [ebp-0018],00000020
    00415750 mov [ebp-0020],00000033

    these values have the effect as described here:
    sshsigi;45870 said:
    Hi Lace, yes, I know about that! I've been there too. FYI, the meanings of the variables in that section are as follows (this is for "normal" physics).

    p.walkspeed = 0x032c;
    p.fallspeed = 0x5ff;

    p.fallaccel = 0x50;
    p.jumpfallaccel = 0x20;

    p.walkaccel = 0x55;
    p.jumpwalkaccel = 0x20;

    p.decelspeed = 0x33;
    p.jumpvelocity = 0x500;

    The "walkspeeds" and "fallspeeds" are the maximum velocity you can have. The "accel" speeds are how quickly you will reach that velocity (are added to your current speed every frame up until you get to maxspeed). decelspeed is your friction constant when you are on the ground. jumpvelocity is subtracted from your Y inertia when you first push jump.

    I also have written here that the "effective" walk speed is actually only 0x30e, I didn't figure out exactly why but it may have to do with the order of application of the constants or something.

    The deceleration constant p.decelspeed is applied at all times when you are touching the ground, so if you are walking this is in addition to the walk accel. Thus effectively your walkaccel is only 0x22 (It does +0x55, then -0x33). *1

    Jump gravity p.jumpfallspeed is applied instead of fallspeed anytime the Jump key is down and you are moving upwards (it does not check whether you are actually jumping). *2

    These constants of course are all bit-shifted by the coordinate scale factor of 9, and applied once per tick at 50fps. Thus a value of 512 means you will move 50 pixels per second.

    *1 This is a good thing to know during the first Core battle in Almond. When he tries to blow you against the wall, he pushes against your X inertia with a accelerative force of 0x20. This is less than the p.decelspeed of 0x33, and exactly equal to the p.jumpwalkaccel of 0x20. Therefore, if you stay on the ground, he cannot push you at all because because you have friction against the ground of 0x33. But if you jump eg to avoid one of the shots, you will lose the 0x33 deceleration, and be pushed with 0x20. If you push full against the current, you can cancel it out from pushing you faster, but you will not gain any ground against whatever speed it's already got on you.

    *2 This is how the fans work in e.g. Grasstown. You can ride them higher by pushing Jump because when you push the jump key it activates jump gravity, and then you are only falling into them with 0x20 instead of 0x55. You can also see an odd effect here if you find some other way to be moving upwards without jumping. For example, the "hurt hop" when you get hit by an enemy. If you press JUMP right after getting hit, you will fly a lot higher than you're supposed to.

    Relacing constant values with pointers, say [4bb600], allows you to manipulate them outside of hard code. If you use pointers in the flagdata, you can change the values with just fl+ and fl-. It'll be like hardcore binary sex.

    Of course, pointers require more space than normal constants, so the underwater section'll die. However, you can just use h/v triggers to create the right speeds when needed.

    dig?
    Well, if you didn't mind mauling the physics, you could swap out the consts for the last few bits of flag data, and then set flags to change it. If you really want ease of use, a new TSC command wouldn't be too hard at all. Search for the physics offset, it should be posted by sshigsi. Flagdata should be in the compendium.
    Oh gawd. It depends.
    I mean, yeah, I know how to do custom commands. No, I don't remember which ones in particular you are talking about.
    *Was following along for the fun of it*
    Gah, I've been told to get off the computer. Looks like I'll see you tommorow/ later today for you. Bye...
    You know what does factor in? Lack of verbal communication devices. I mean, really aren't they like 5 dollars or something? :p I have a spare one I might, might, be able to send you...
    maybe.
    Riiiight... then you're falsely accusing me of not calling, yet you don't even have a phone to answer or to even know if I'm calling...
    Yeah, I know what you mean.
    I get TSC and mapping just fine, but I can't even begin to grasp ASSEMBLY D:
    But hey, all three completed mods used no assembly.
    Wow, such a large gap between now and since last we spoke. :/
    Unfortunately, I've just been commanded to go do chores.
    Eh, progress is progress.
    I am content with the mod now, you shouldn't feel the urge to keep making it if you don't want to.
    Well, you missed this. Read my latest post in that thread for a summary. And of course the move from miraigamer.net to cavestory.org. And idk if you were around when Jacob returned. I think that's about it...
  • Loading…
  • Loading…
  • Loading…
  • Loading…
Top