Okay, I promised the very simply IGE tutorial, here is
How to save any crc, challenge or track to IGE2 file.
a, Making a crc, start Test Drive - Pause game. (Recommended the gmedesigner)
b, Start testing or racing any challenge - Pause game.
c, Start a crc challenge - Pause game
Open TestDrive2 process with a hexeditor like Hxd, search this Hex array below:
(00 00 I G E 2 00 00)
In the memory, the IGE file begins with IGE2 string (similar in the file .ig format) and ends, before begin the "car_pos_mat" string. Just scroll far and make selection and copy.
((IGE") 49 47 45 32 < - > FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF)
Create a new hex file and paste selection here. If you want to use this file, in memory save as *.igm. Was easy
If you want save as .ig2, search and replace this hex array:
to
but only one value, in the end of file.
Then last 32 byte look similar:
Code: Select all
3F 80 00 00 00 00 00 00 00 00 00 00 41 A0 00 00
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
to
Code: Select all
3F 80 00 00 00 00 00 00 00 00 00 00 40 E0 00 00
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
Save as *.ig2.
Replacing, editing tracks in memory
This is only work, if you are making in progress an crc, and test driving (pause).
To replace whole challenge, is possible only restriction the two file size be same.
In other situation, just replace those segments, which you need to change, in game return the editor, test drive again and taaa-daaam, race is changed
Usability and some tips
Create new races (time-trials, normal races with bots), and bomb missions: jolt, driving, and convoy misssions (driving, timed, extreme - with any car!), and: multiplayer challenges. The latter was successfully tested with friends - need shared with the files to work - was very funny (replace Dangeroute with a 40km lenght track) . (I don't really understand why it was left out of these options in the game, feeling of cruise my friends was flawless.)
Just replace any existing *.ig2 challenge file with modified by you, but if is an multiplayer challenge, the first checkpoint data must be the original file, because the lobby spot can't placed automatically in first checkpoint - is definied in the spotworld.bin file. (This file is contains all spot places in IGE2 formats, like a list, but i don't recommend to change anything.)
Some value overriding by program/database - eg. car type in the shcool license task, and bot types in cups - but is very funny imho.
Opening .ige2 files
If enabled the GMEDESIGNER - in the GamePC.cpr file -, and you have extracted game, the my challenges menu list all *.ig2 files wich place is in the euro/bnk/ig2 folder (all challenges and your custom ig2 files too.) Some functions disabled in designer - eg save - and drop an error message for all operations, but still useful.
I wrote a simple list the ige format params, which does what. (still incomplete but i think usefull.) See below.
Code: Select all
IGE2 24 bytes - Header
MDSC 20 bytes -
gmth 8 bytes - Game mode last two byte per type(TimeTrial(00), RaceSolo(03), Speed(0A), Trap(01), EVENT(07) etc)
gmpm 8 bytes -
isla 8 bytes - Island
leme 8 bytes - Mixed datas, eg Laps etc
TEST 8 bytes * Test TRUE/FALSE?
offR 8 bytes -
OrMd 8 bytes - Penalty Mode (Driving, Extrem, Jolt etc)
PeCr 8 bytes - Penalty Value
dPeLv 8 bytes - Penalty Level
CvBr 12 bytes - Convoy Vehicle Brand only last one byte (Alfa Romeo = 03 04 00 08 00 00 00 00 00 00 00 02 = 02 )
CvMo 8 bytes - Convoy Vehicle model use only last 2 bytes (Ascari A10 = 03 04 00 04 00 01 81 = (01 81) = 385
CCol 8 bytes * Disallow Collison?
forc 8 bytes - Waymarked path
ChNC 8 bytes -
SP2R 8 bytes -
tras 8 bytes -
SPPG 8 bytes -
timG 8 bytes - Basetime
ChCD 8 bytes - Challenge has time limit
CtDw 8 bytes - Countdown time
ChBo 8 bytes - Time bonus of chekpoint
next 8 bytes - Display all checkpoint
ChSD 8 bytes -
FiMi 8 bytes -
FiMa 8 bytes -
FiCG 8 bytes -
CarB 12 bytes -
CarM 8 bytes -
ChKD 8 bytes * Check Distance?
CkMi 8 bytes - Minimal Distance
CkMa 8 bytes - Maximum Distance
ChTR 8 bytes - Traffic enabled
trat 8 bytes - Traffic value
nblp 8 bytes -
ChCO 8 bytes - COPS
cops 8 bytes - COPS Level
Cgli 8 bytes -
Gmin 8 bytes * Maybe Time Limit Countdown?
Gmax 8 bytes * Maybe Time Limit?
ChSL 8 bytes -
SLMl 8 bytes -
SLMi 8 bytes -
SLML 8 bytes -
SLMa 8 bytes -
SLTr 8 bytes -
SLT2 8 bytes -
Hcap 8 bytes * Handicap TRUE/FALSE (maybe work only in bomb mission )
Hwsc 8 bytes * Handicap type (no windscreens)
Hhlg 8 bytes * Handicap type (no headlights)
Hbrk 8 bytes * Handicap type (no break)
Chse 8 bytes -
Cmid 8 bytes -
Cdlm 8 bytes -
ChCB 12 bytes * Chase Opponent Car Brand? (Maybe as moving obstacles)
ChCM 8 bytes * Chase Opponent Car Model? (Maybe as moving obstacles)
DmMi 8 bytes * Chase Minimal Distance
DmMa 8 bytes * Chase Maximum Distance
MDTL 8 bytes -
DiCh 8 bytes -
NbIA 8 bytes - Number of AI player
IASA 8 bytes -
IASB 12 bytes * MaybeCar Brand of Ai player
IASC 12 bytes * MaybeCar Model of AI Car player
IASD 8 bytes *
IASI 8 bytes * Maybe AI License restriction
IASJ 8 bytes * Maybe AI License restriction
NbCp 8 bytes -
CpTs ??? bytes - Checkpoint Times
Cock 8 bytes - CockPit View Only (maybe not working)
ChGP 8 bytes - Use GPS help
Cwwa 8 bytes - Gps Wrong Way allowed
VSpe 8 bytes - Restriction Vehicle Specification
VBra 12 bytes - Restriction Vehicle Brand
VBrM 12 bytes - Restriction Vehicle Brand Model
VMod 8 bytes - Restriction Vehicle Model
Vlt2 8 bytes - Restriction Licens type (A,B,C)
Vli2 8 bytes - Restriction Licens category (A1, A2, A3)
fee1 8 bytes * Maybe fee?
rewm 8 bytes
dscr 8 bytes - Display Trajectory
rsl1 8 bytes - Place of test (Road, School)
rsl2 8 bytes - Test Type (turn, mixed, etc)
rswh 8 bytes - Required Water (Sun, Rain, Night) - The missing fetaure when u making a crc
nbtm 11 bytes * 11? Or nbtm = 11 + '#' + 8 = 20 bytes?
# 8 bytes - Loop Track
mnme 68 bytes - Challenge Name, start to @ sign (40) (Max char for name: 64 bytes?) - some challenges have own filename as challenge name (eg. CHA2A05R)
DesC 68 bytes - Challenge Description, start to @ sign (Max char for description: 124?)
lcpi 8 bytes -
dbna 8 bytes * Maybe entry a DBEvents table in the main database.
dbd1 8 bytes * Maybe entry a DBEvents table in the main database.
ENTI 8 bytes - Number of Checkpoints, Obstacles and others
CHK2 120 bytes/checkpoint - Chekpoint data (Maybe use only 76 bytes, the position yxz and rotation.)
VEHI ??? bytes - Moving obstacle (car) data
*Update: add some tipps, and place params list inline.
Cheers