• Please stop embedding files/images from Discord. Discord has anti-hotlinking logic in place that breaks links to Discord hosted files and images when linked to from anywhere outside of Discord. There are a multitude of file/image hosting sites you can use instead.

    (more info here)

New profile posts

48F8C0+(eax*4) : effects according to compendium, yet 4047B0 is (very) indirectly called by it? EDIT: Ok, wait, that's a *return* address. So it seems there's a bit of pipelining going on here. 41056E is the call to the AB50 "handle effect" code. The previous thing it calls is 105AB, which is... the bullet code???
20kdc
20kdc
Additional. It seems I've gotten a little lost. Here's the gist of it:
05AB is a routine to handle *every bullet on the screen*.
AB50 is a routine to handle *every effect on the screen*.
A bullet is 0x80 bytes long, or a *shift left of 7* - this is important because the compiler optimized what usually shows up as obvious imuls into SHL 7.

You can learn the bullet length from the compendium, the important part is that from there you find out how the loop is set up.
The compendium lists the addresses of the *first bullet*. This doesn't quite make sense till you see the actual code, and then it's really useful for translation and understanding.

(Yes, I'm using this as a journal as I go through the code)

Next, if ShotID - 1 is > 0x2C, it jumps to a bouncepad which then jumps back to the start of the loop (as if the bullet didn't exist). This code is at 8FFD. This prevents having more than the maximum amount of bullet types - any bullet hook will be placed *there*, since the code is more or less useless (and easily emulated in Lua without using up precious ASMspace). (The bullet disambiguation will get put in C-space anyway, and worst case scenario the InUse flag check can be pulled in for a total of ~72 bytes.)
20kdc
20kdc
Warning: offsets may be vaguely wrong if I forgot that the top of the screen in Cheat Engine is actually the top address and not the one I have selected. If you find this information is lacking, that's because it's meant for something *replacing* the bullets.
jmp [edx*4+409501] is the disambiguator.
NICE V3 will be tested on Windows XP, and will allow weapon modification.
Cibryll
Cibryll
I hope you don't mind me asking, but what is N.I.C.E?
20kdc
20kdc
It's a bunch of ASM modifications that call into a DLL, which then calls Lua code.
The result being entities & TSC commands can be written in Lua.
I intend to add the ability to modify bullets and weapons via it too, assuming there's even a "vector table" for those (if there's no vector table, I have to modify things weapon-by-weapon)
Bad news. If you're using Windows XP, N.I.C.E doesn't seem to like it. I have no idea why - it just *REFUSES* to load game.dll, not giving any reason - and without game.dll using N.I.C.E. becomes impossible. My debugging is continuing, and I hope GetLastError will return a good result... but given Windows's attitude to error messages (undescriptive), I am not optimistic about the likely results.
20kdc
20kdc
@Noxid: Because I'm using an XP VM to make ABSOLUTELY SURE the "NICE is broken on Windows" bug never happens again
Noxid
Noxid
3.1 or bust
20kdc
20kdc
Noxid: Did the original Cave Story even *run* on 3.1?
*I seriously doubt it*.
(It might have run on 95, but the earliest I can setup a workable VM for is 98-SE :( .)
Kenzo_ITN
Kenzo_ITN
That music really doesn't fit the atmosphere...
You really shouldn't use the CS+ soundtrack.
mckgamer
mckgamer
It wasn't CS+. It was just org rips of the game that were converted to midi. And I'm also going to be using more Cave Story sprites later on (Marine will be replaced with Quote sprites, etc.)
PSA to Cave Story modders who use The GIMP and Wine during development: They're colluding! The GIMP produces incompatible BMPs... which Cave Story on Wine accepts. And Cave Story on "real" Windows does not. Thanks to zxin for alerting me to this.
Raus
Raus
How does one produce an "incompatible bitmap"? owo
20kdc
20kdc
Raus: I have no idea - I'm guessing it's a valid bitmap but not supported by the Cave Story engine.
Alright man I really suck at making a believable person in any form of pixel art that is larger that 16x16. If anybody could help out with at least making a basic template I would be extremely greatful.
Bionicobot
Bionicobot
Oh and the format is 84w x 140h and the sprite starts a small bit below the waste.
Finally out of High School forever! Now I can reevaluate my life choices. Or, I can be lazy. Hmm, what to do...
20kdc
20kdc
By the power of <Insert functional programming language here>, I order you to reevaluate!...
Hmm. It seems I've been conned.
(EDIT: The reason being that I'm not changing into a magical... whatever the correct term is for an abstract depiction of a cat made magical.)
solaris
solaris
well, at least you tried
Alright what do the variable hacks replace and how do I display the current variable to the text box?
Noxid
Noxid
honestly dont remember what it replaces but I think I rigged the <NUM command to let you print var's (that's what I did in KSS)
Noxid
Noxid
it comes with documentation doesn't it??
Bionicobot
Bionicobot
Yeah but it was unclear about whether it allowed it to show the variables that you set.
Back
Top