Replies: 3 comments 1 reply
-
riidefi is right - |
Beta Was this translation helpful? Give feedback.
-
CourseMap boundariesrodata: |
Beta Was this translation helpful? Give feedback.
-
|
It seems that |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Note
The goal of this discussion is to decide on logistical problems early, to avoid complications later on. Names used are subject to change.
Intro
CourseMapis responsible for parsing and storing information about the KMP files found in course archives. Its static pointer is located at0x809bd6e8PAL. In the Ghidra server, it is mostly namedKmpHolder, with some exceptions. Its structure consists of only pointers to classes classes calledAccessors, labeled in the Ghidra asKartpointHolder,EnemypathHolder, etc. The only exception is the header structure at offset 0x4, which consists of the raw file and some parsed header data such as the version.Accessor Structure
Each class responsible for a KMP section has a base
Accessorclass. The structure is as follows:From there, each created class' pointers are set in
CourseMap::init.File Structure
Due to multiple Accessor functions existing between
CourseMapfunctions, we know they must exist in the same TU. This complicates things, as we cannot have each Accessor class in their own file. Instead, we must decide how the classes will be laid out.One idea is to structure them similarly to
RaceConfigand its subsidiary classes. As an example,CheckpointAccessorwould exist asCourseMap::CheckpointAccessor, and theCheckpointobject would exist asCourseMap::CheckpointAccessor::Checkpoint.Additional Topics
During the discussion, new topics and new viewpoints will inevitably come up. This discussion post will be updated to reflect that.
Beta Was this translation helpful? Give feedback.
All reactions