mirror of
https://github.com/halpz/re3.git
synced 2025-06-28 03:56:20 +00:00
first commit
This commit is contained in:
101
README.md
Normal file
101
README.md
Normal file
@ -0,0 +1,101 @@
|
||||
# Intro
|
||||
|
||||
The aim of this project is to reverse GTA III for PC by replacing
|
||||
parts of the game [one by one](https://en.wikipedia.org/wiki/Ship_of_Theseus)
|
||||
such that we have a working game at all times.
|
||||
|
||||
# Strategy
|
||||
|
||||
A good approach is to start at the fringes of the code base,
|
||||
i.e. classes that don't depend on code that we don't have reversed yet.
|
||||
If a function uses only few unreversed functions that would be inconvenient
|
||||
to reverse at the time, calling the original functions is acceptable.
|
||||
|
||||
# Progress
|
||||
|
||||
This is a list of some things that have been reversed to some non-trivial extent.
|
||||
Not everything is listed, check the code.
|
||||
|
||||
```
|
||||
CPool
|
||||
CTxdStore
|
||||
CVector
|
||||
CVector2D
|
||||
CMatrix
|
||||
CModelInfo
|
||||
CBaseModelInfo
|
||||
CSimpleModelInfo
|
||||
CTimeModelInfo
|
||||
CClumpModelInfo
|
||||
CPedModelInfo
|
||||
CVehicleModelInfo
|
||||
CVisibilityPlugins
|
||||
CRenderer
|
||||
CEntity
|
||||
CPhysical
|
||||
CCollision
|
||||
CCullZones
|
||||
CTheZones
|
||||
CPathFind
|
||||
```
|
||||
|
||||
# Low hanging fruit
|
||||
|
||||
There are a couple of things that have been reversed for other projects
|
||||
already that could probably be put into this project without too much effort.
|
||||
Again, the list is not complete:
|
||||
|
||||
* Animation (https://github.com/aap/iii_anim)
|
||||
* File Loader (https://github.com/aap/librwgta/tree/master/tools/IIItest)
|
||||
* ...
|
||||
|
||||
# Coding style
|
||||
|
||||
I started writing in [Plan 9 style](http://man.cat-v.org/plan_9/6/style),
|
||||
but realize that this is not the most popular style, so I'm willing to compromise.
|
||||
Try not to deviate too much so the code will look similar across the whole project.
|
||||
|
||||
To give examples, these two styles (or anything in between) are fine:
|
||||
|
||||
```
|
||||
type
|
||||
functionname(args)
|
||||
{
|
||||
if(a == b){
|
||||
s1;
|
||||
s2;
|
||||
}
|
||||
if(x != y)
|
||||
s3;
|
||||
}
|
||||
|
||||
type functionname(args)
|
||||
{
|
||||
if (a == b) {
|
||||
s1;
|
||||
s2;
|
||||
}
|
||||
if (x != y)
|
||||
s3;
|
||||
}
|
||||
```
|
||||
|
||||
This one (or anything more extreme) is heavily discouraged:
|
||||
|
||||
```
|
||||
type functionname ( args )
|
||||
{
|
||||
if ( a == b )
|
||||
{
|
||||
s1;
|
||||
s2;
|
||||
}
|
||||
if ( x != y )
|
||||
{
|
||||
s3;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Indentation is done with TABS.
|
||||
|
Reference in New Issue
Block a user