Luckily MSVC6, which was used to compile GTA2 (at least originally) leaves a lot of interesting stuff behind, here is the approximate source tree recovered from strings in executable file (it includes some of files, far from entire list):
C:\gbh\coop101release\car.cpp
Car respraying. Trailer handling (it has some strings connected to putting cars on trailers, and handling trailers)C:\gbh\coop101release\carinfo.cppC:\gbh\coop101release\char.cpp
References to police peds and normal peds visible on screen (it might have been managing different types of pedestrians, and possibly storing their stats & parameters)C:\gbh\coop101release\collide.cpp
Collision detection (generic)C:\gbh\coop101release\display.cppC:\gbh\coop101release\diutil.cpp
DirectInput. Joystick handling.C:\gbh\coop101release\door.cpp
Door code (map doors which are placed by script, like garage doors).C:\gbh\coop101release\File.cpp
File IO, reader for chunked filesC:\gbh\coop101release\frontend2.cpp
Frontend code (references to TGA graphic files)
Plays intro movie. Seems to be loading car handling data.C:\gbh\coop101release\game.cpp
Counts some bonuses (accuracy bonus, something else?).
Tracks number of spawned cars, mission cars, etc. Must also track game money, lives, etcC:\gbh\coop101release\input.cpp
Keyboard input, remapping input
References chunksKBITandKIDX(these do not seem to be used in any of resource files)C:\gbh\coop101release\kanji.cpp
References to chunkKANJ, seeming from filedata\kanji.dat.
It seems that this file is chunked file, and someone suggested it exists only in PS1 version. Time to get PS1 version somewhere…C:\gbh\coop101release\keybrd.cpp
Keyboard mapping, loads info fromdata\keyboard\eng_kb.cfgfile (or any other one, depends on language)C:\gbh\coop101release\main.cpp
Has reference toExitGameCallbackfunction or routine
Seems to be checking for multiplayer compatibility (on start), references these messages:Player %s: Car handling file 'nyc.gci' is different Player %s: Game file 'GTA2.EXE' is different Player %s: Script file '%s' is different Player %s: Style file '%s' is different Player %s: Level file '%s' is different Player %s: Debug flags are different Player %s: Language version is different
C:\gbh\coop101release\map.cpp
Loads map data from GMP map.
References chunksRGEN LGHT ANIM MOBJ ZONE DMAP
As you can see, it only loads DMAP compressed chunk, although map files contain CMAP and UMAP maps too. It also skips some unknown chunks, possibly left by GTA2 map editor for storing temp stuff like current camera view position (in editor).C:\gbh\coop101release\medical.cppC:\gbh\coop101release\Memory.cpp
Memory manager, also manages texturesC:\gbh\coop101release\miss2.cpp
MISS2 virtual machine. References strings:svmiss svscore svdone kfstart kffail kfpass
C:\gbh\coop101release\movie2.cpp
Runs intro movie (from BIK file)C:\gbh\coop101release\multip.cpp
Contains some dialog box, seemingly the dialog you see when you try to start new MP game. Sets server parameters (time limit, game speed, police, game type, map). Does not allow connecting if you dont have target map.C:\gbh\coop101release\NetworkX.cppC:\gbh\coop101release\object.cppC:\gbh\coop101release\park.cppC:\gbh\coop101release\particle.cppC:\gbh\coop101release\physics.cpp
Physics handler/physics engine for cars (and maybe bullets)C:\gbh\coop101release\player.cpp
Refrences these player death reasons:shocked nicked fried wasted(“nicked” doesn’t seem to be used anywhere in-game though)C:\gbh\coop101release\plydat.cpp
These are default player names:ALISDAIR BILLY BRIAN COLIN IAIN IAN KEITH MARTIN STEPHEN WILLIAM
There are also references to these default highscore names:
JACKSON IMOGEN HECTOR GRAEME FRANK ERIC DAVE COLIN BRIAN ALAN MUCHCASH <-- cheat code for a lot of money
C:\gbh\coop101release\pubtrans.cpp
Public transportation. References some navigation paths (for trains?)C:\gbh\coop101release\registry.cpp
Registry handling. References some registry keys (and also debug flags which are stored in registry)C:\gbh\coop101release\sprite.cppC:\gbh\coop101release\style.cpp
Loads STY files. Has reference to following chunks:
RECY(car recycling info)
SPEC(unknown chunk)
OVLY(unknown chunk, possible overlays data, whatever that would be. It might be from PS1 version, need to get those style files and check...)
PSXT(PS1 tile graphics, not present in PC version style files)
CARI(car info)
DELX(delta index)
DELS(delta store/data)
TILE(tile graphics)
SPRG(sprite graphics)
PPAL(physical palettes)
PALX(palette index)
OBJI(map object info)
SPRX(sprite index)
FONB(font bases)
SPRB(sprite bases)
PALB(palette bases)
GBST(style file header)C:\gbh\coop101release\taxi.cpp
Taxi handling. References these briefing messages (message references are not present in rockstar.com version):8013 8012 8011
Seems to be ability to drive pedestrians around in taxi, cut from final game. These are the briefings (they do not seem to make much sense):
[8011] z!I'll take care of him. You can go now!
[8012] z!What the hell is going on?! He wasn't supposed to kill him! Assassinate the real traitor!
[8013] YOU'RE DA IRON MAN!C:\gbh\coop101release\text.cpp
Loads GXT files (text/briefing/messages data).
References these chunks:TDAT TKEY GBL%c(last one is different for language picked)C:\gbh\coop101release\tileanim.cpp
Handles tile animationsC:\gbh\coop101release\user.cppC:\gbh\coop101release\video.cpp
Video properties (sets video gamma, something else)C:\gbh\coop101release\weapon.cppC:\gbh\coop101release\winmain.cpp
Wrapper for WINAPI functions. References to mutexesCOOP MUTEXandGBH MUTEX