• 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)
Nov 19, 2025 at 1:48 AM
Senior Member
"Master using it, and you can have this!"
Join Date: May 18, 2024
Location: First Cave
Posts: 72
Pronouns: He/him
Alright, after a while of researching and thinking I've attempted to create a for PEONS. I don't think it's 100% accurate but probably better than nothing, considering I've found no compendium for PEONS. Whatsoever. Which makes it really hard to understand a lot of stuff.

PEONS's Compendium by The official Mimiga hater: Bi_N

--What is PEONS?--

PEONS modifies Cave Story's segments, Segments are basically what every executable is made out of. The segments in vanilla Cave Story are .text, .rdata, .data, and .rsrc. PEONS gives you everything you need to
modify, delete and create segments. 10/10 product, I know right?

"Well if it can modify what can it do?" - You(Probably)
--PEONS Utilities--

-File-
Save = Saves the file into a new (hopefully improved) executable file!
Stats = Shows the stats of all segments.
HexPatch = Manually patch an RVA.
HexPatch/File = Patch an RVA using a file.

-Section Manipulation-
Move .rsrc = Move the Resource segment to a RVA and FA
Add. Seg. = Add a new segment to your executable, don't worry about the (hex) part, PEONS gives you that in stats.
Move FilePos = Move the File Position/Address of a segment
Del. Seg. = Simple, deletes the segment turning it into no-seg

-Tools-
Automatic = Adds a new segment between .data and .rsrc that can be modified with Doukutsu Assembler.
Linearize = Makes RVA equal to FA, useful for trying to use Doukutsu Assembler on a new segment.

-NASM & GSA2-
NASM = Memory Address patcher
GSA2 = Gigantic-Set-of-Assembly file patcher
Init. GSA2 = Resets the GSA2 segment
Manage GSA2 = Manages the Gigantic-Set-of-Assembly patch

Now you may be thinking, "FA and RVA? What does any of that mean?!" Look no further than below.
--What each acronym means in PEONS--

RVA = Relative Virtual Address; The address of the segment when loaded into computer memory.
FA = File Address; Start of segment.
FE = File End?; End of segment? also the File Position.
VS = Virtual Size; How big the segment is in the computer's memory.
VE = Virtual End?; Where the segment ends in the computer's memory.
FS = File Size; how big the segment is in the executable.
In-memory address = Where the segment starts in a disassembler.
len = length; length of a no-seg segment.

"Okay what about the bar thingy?" - You(Probably)
--Important info about the stats bar--

"To actually explain what the graphic is, it looks like the top line shows how the segments are layed out in the file, and the bottom one shows how they'll be layed out in memory (when the game is running)" - brayconn 2025

"So then what's the point of having multiple segments; why can't there just be one?" - You(Probably)
--Description for each segment in the order they appear--

-------
.text
-------
.text is the part of the executable that has code, this is where you go by default when you modify the game's code via a disassembler like OllysDebug.

-------
.rdata
-------
.rdata is the part of the executable that contains the Constants and String Literals, a Constant is a variable who's value cannot be changed once the game has started running, while a String Literal is used for text. A String Literal I believe is what you're doing in TSC when you write dialogue.

-------
.data
-------
.data is the part of the executable that contains the game's Static, Local, Global and Static Local variables. A Static variable is a variable that has the same value throughout the entirety of the game.

-------
.rsrc
-------
.rsrc is the part of the executable that contains the resources: icon, ORGS, etc. To put it simply, it's what Resource Hacker accesses.

"I'm too lazy to add segments, can something add it for me?" - You
--Other types of segments that you can add/are automatically added to Cave Story's executable--

-------
no-seg
-------
no-seg is anything that isn't specified under a segment, it's created by a variety of means. Anything inside of no-seg will not be added to memory. No-seg is also created when deleting a segment.

-------
.excode
-------
.excode can be added using Noxid's Booster's Lab, I have no idea what this is intended for other than adding onto the game's code, this is because the segment is entirely empty of anything.

-------
.gsa2
-------
.gsa2 can be added using PEONS, It's also empty like .excode and I'm guessing it's probably used for a "Gigantic-Set-of-Assembly" as PEONS's states.

-------
.csmap
-------
.csmap is automatically added when opening Cave Story in Booster's Lab, it's used for the stage.tbl file, which is used by Cave Story+

-------
Your Own
-------
You can just add your own segment using PEONS, though since segments are usually before .rsrc it's probably for the best that you don't put your segment after .rsrc

Lastly, I have not experimented a lot with PEONS so feel free to document your findings here or share them or smth idk.

And yeah that's about it, peace. :p ~ Bi_N

You're welcome my fellow Modders.
 

Attachments

Last edited:
Back
Top