-
Notifications
You must be signed in to change notification settings - Fork 2
/
HACKING
58 lines (44 loc) · 2.52 KB
/
HACKING
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
This file is about contributing to the code of GTA2: Hacker's Remix.
The source code is a mix of C and AutoIt3 (au3) code. While C is rather
hard to learn, AutoIt3 is a simple scripting language, that is also well
documented.
Lots of the splitscreen code is written in au3, and it still needs lots
of polishing at this state (for example: Windows Taskbar only gets
hidden on Windows 7, the Window merging code doesn't always work, ...).
If you want to get started with the AutoIt3 code, read this beginner-
friendly guide [0] (especially src/meta/cmds/splitscreen.au3 needs to be
improved, see the big FIXME comment there!).
Please break code lines (also in AutoIt3 if possible) longer than 72
columns, and never use multi-line (#cs, #ce) comments in AutoIt3, as the
Geany custom syntax highlighting can't handle those.
C coders can set up the G2HR development environment with this more
advanced guide [1]. The rest of this article is more about C coding, so
if you just do the AutoIt stuff, you might want to stop reading here.
The code is roughly divided into four components [2], not counting the
unfinished windows installer [3] and the "src/common" folder, which has
some shared c-code for strings and file operations.
For the C code (that is, the native and menu components), each of these
has a lot of sub-components. What they do is described in the README.md
hat can be found in src/native and src/menu. Most of these sub-
components can be individually compiled (and therefore tested with
valgrind), because they have a "main_test.c" and "Makefile" right inside
their folder.
Some of these testing Makefiles are probably broken, because they have
not been used a long time and the code around that has been changed. But
mostly they are easy to fix (eg. missing 'out' folder, using the
obsolete 'src/common/cfg' code instead of the newer 'src/common/ini')!
So when modifying these components, always (fix and) run the valgrind
test and find all memory leaks (on Windows, drmemory[4] can be used
instead)!
Right now, the native component can either be built for Windows, or for
Linux. Run "make -C src/native clean" before switching. The release.sh
script does this automatically.
Read the bug tracker, the KNOWN ISSUES in the README and the wiki for
information about what could be fixed.
Coding has been mostly a one-man-show, so pull-requests are really
welcome :)
[0]: http://git.io/g2hr-autoit
[1]: http://git.io/g2hr-dev-setup
[2]: http://git.io/g2hr-post-alpha-structure
[3]: http://git.io/g2hr-installer
[4]: https://github.com/dynamorio/drmemory