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.
-
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
CourseMap
is responsible for parsing and storing information about the KMP files found in course archives. Its static pointer is located at0x809bd6e8
PAL. 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
Accessor
class. 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
CourseMap
functions, 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
RaceConfig
and its subsidiary classes. As an example,CheckpointAccessor
would exist asCourseMap::CheckpointAccessor
, and theCheckpoint
object 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