the actual actual actual actual music loader is at 41BAD0. Trouble is, it only loads from blocks of memory that it loads via LoadResource (this isn't "function to load resource" followed by "function to load from block of memory", it's one function)...
Ok, so guns and bullets *DO* have vector tables! I know, it's surprising! Thing is, though, they aren't like the NPC table, where it's a bunch of function pointers. They're jump tables - my best guess is that the compiler optimized a case somewhere (hence the invalid value checks)
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???
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.
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.
GO TO /FORUMS/ DO NOT PRESS HOME DEFINITELY COLLECT 200 MEMES (EDIT3: Inspired by my tendency to click the "Home" button and end up on the entirely wrong part of the site instead of clicking the obvious and moving sky dragon.)