• 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)

Cave Story's OrgPlayer Documentation

Mar 7, 2026 at 3:22 AM
Bi_N Online
Senior Member
"This is the greatest handgun ever made! You have to ask yourself, do I feel lucky?"
Join Date: May 18, 2024
Location: First Cave
Posts: 121
Pronouns: He/him
Gender Notes: Cats are fluffy beings, this therefore makes them aliens.
I don't know if it's already been documented all the addresses in Cave Story that are linked to how it plays ORGS and such, but it's honestly funny how I ended up getting these addresses!
Thanks to the creators of CSE2 that was a HUGE help in making this. If this is already been documented without CSE2 guess I'm just a goof when it comes to ASM.

I also found a lot more stuff while continuing to look around the functions, I've extended the Document and changed the thread name since now it's just documentation of all Cave Story's
OrgPlayer and not just the addresses.


They were just after one another lol, CSE2 just helped me identify them.

It's pretty hard to modify this stuff if you don't know the code...
Also, you probably can't do much with these but at least it's helpful right?

[Orgfunc] = Addresses to all OrgPlayer functions.
[Byte] = List of all bytes documented and what they represent.
[Pointer] = List of all OrgPlayer Pointers and their values.

[Orgfunc]
0041A8F0 = MakeSoundObject8
0041ABA0 = ChangeOrganFrequency
0041AC70 = ChangeOrganPan
0041AD20 = ChangeOrganVolume
0041ADC0 = PlayOrganObject
0041B2A0 = ReleaseOrganyaObject
0041B380 = InitWaveData100
0041B3F0 = MakeOrganyaWave
0041B440 = ChangeDramFrequency
0041B480 = ChangeDramPan
0041B4D0 = ChangeDramVolume
0041B510 = PlayDramObject
0041B600 = OrgData::OrgData
0041B650 = OrgData::InitOrgData
0041B730 = OrgData::SetMusicInfo
0041B890 = OrgData::NoteAlloc
0041BA70 = OrgData::ReleaseNote
0041BAD0 = OrgData::InitMusicData
0041C0B0 = OrgData::GetMusicInfo
0041C180 = InitMMTimer
0041C1E0 = StartTimer
0041C230 = TimerProc
0041C250 = QuitmMMTimer
0041C2B0 = OrgData::PlayData
0041C630 = SetPlayPointer
0041C6C0 = StartOrganya
0041C6F0 = LoadOrganya
0041C730 = SetOrganyaPosition
0041C770 = GetOrganyaPosition
0041C790 = PlayOrganyaMusic
0041C7C0 = StopOrganyaMusic
0041C880 = SetOrganyaFadeout
0041C890 = EndOrganya


[Byte]
All but info.wait are bytes.

track = +D0
info.wait = Register Pointer (Ex. [EAX],[ECX], etc. This is also a WORD)
info.line = +2
info.dot = +3
info.alloc_note = +4
info.repeat_x = +8
info.end_x = +C
info.tdata.freq = +10
info.tdata.wave_no = +12
info.tdata.pipi = +13
info.tdata[j].note_p = +14
info.tdata.note_list = +18
def_pan = +E1
def_volume = +E2


[Pointer]
Tried to document as best as I can...

[4937A4] = Volume

Also you should probably check out the code if you don't understand Assembly, like me!
Organya.cpp
 

Attachments

Last edited:
Back
Top