Carmageddon 2 BETA MOD fonts complete!

So I’ve finally completed the fonts that are to be used in my BETA MOD, here’s how I have done it.
During the process of creating this mod I’ve discovered a lot of secrets about how the final version of this game handles fonts and have documented these discoveries, using this knowledge I have recreated the scrolling bonus messages from early builds of the game using the final game’s font system.

How have I done this? I’m glad you asked! Using the discovery I made in the previous article I posted I have used some of the game’s 158 unused but supported characters to create different colour letters so that I can get around the game’s font colour limitations that I documented in my original font discovery post.
Below is a screenshot of the contents of \data\64x48x8\FONTS\Big_Italic\TiffRGB in my BETA MOD

Click the image for a fullscreen view.

As you can see there are multiple different duplicate letters/numbers in different styles and colours, each and every one of these use a different characters supported by the game, I did this so that (as mentioned previously) I could get around the limitations of the font colours that persist due to the polygonal font system and FONTCOL.TXT and get various messages of multiple different colours displaying on screen through SCROLLERS.TXT without having to hack the executable itself.

I worked out which characters I could utilise and created the following grid:
0   !"#$% &'()* 10
10  +,-./ 01234 20
20  56789 :;<=> 30
30  ?@ABC DEFGH 40
40  IJKLM NOPQR 50
50  STUVW XYZ[\ 60
60  ]^_`a bcdef 70
70  ghijk lmnop 80
80  qrstu vwxyz 90
90  {|}~. €.‚ƒ„ 100
100 …†‡ˆ‰ Š‹Œ.Ž 110
110 ..‘’“ ”•–—˜ 120
120 ™š›œ. žŸ ¡¢ 130
130 £¤¥¦§ ¨©ª«¬ 140
140 .®¯°± ²³´µ¶ 150
150 ·¸¹º» ¼½¾¿À 160
160 ÁÂÃÄÅ ÆÇÈÉÊ 170
170 ËÌÍÎÏ ÐÑÒÓÔ 180
180 ÕÖ×ØÙ ÚÛÜÝÞ 190
190 ßàáâã äåæçè 200
200 éêëìí îïðñò 210
210 óôõö÷ øùúûü 220
220 ýþÿþ        224

This grid of numbers contains every single character that is supported and can be displayed in the game (we ignore the lower-case characters as they display the same values as their upper-case counterparts when input into SCROLLERS.TXT,) as you can see I’ve separated the fonts into 2 columns of 5 characters each and numbered each end of the grid so I can easily work out which number each character is, from here all I had to do was pick an unused character, count which number it is and then do the math of # + 33 – 1 and that would get me the name of the .TIF image I needed to create for that character (I explained this process in greater detail in my previous article.)

After doing this for the different types and colours of font I wanted to use in BIG_ITALIC, I laid out another grid like so:
ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙ€_µ¶³
ABCDEFGHIJKLMNOPQRSTUVWXYZ! .-'

This shows the new alphabet I created but instead of typing ABC you would instead type ÀÁÂ respectively which would give you ABC in the new letters I just created, so for example here is SPLATTER_BONUS in this new alphabet: ÒÏÀÓÓÄÑ_ÁÎÍÔÒ

From here I painstakingly worked out each and every bonus message that was to be displayed in SCROLLERS.TXT in this specific font and added them into said text file, here is now a portion of that altered file:
, 23,]_@;%#;_#;$*& // 22
4, 23,[_@;%#;_#;$*& // 23
4, 23,\_@;%#;_#;$*& // 24
4, 23,=_@;%#;_#;$*& // 25
4, 23,10x_@;%#;_#;$*& // 26
4, 23,"ÍÈÂÄ_ÒÇÎÓ+_ÒÈÑ€" //"nice_shot+_sir€" // 27
4, 21,‡¢ŽŽ‹ŽŠ_Ÿ¡¢Ž¡_†™Ž¢Ÿ //cunning_stunt_bonus // 28
4, 23,ÇÄÀöÎÍ_ÁÎÍÔÒ€ //head-on_bonus€ // 29 4, 21,HEAD-ON_BONUS
4, 23,ØÎÔ_ÖÀÒÓÄÃ_³ÄÌ€ //you_wasted_'em€ // 30 4, 21,YOU_WASTED_'EM
4, 22,ÂÇÄÂÊÏÎÈÍÓ€ //checkpoint€ // 31
2, 23,ÎÔÓ_ÎÅ_ÓÈÌÄ€ //out_of_time€ // 32
2, 23,ÑÀÂÄ_ÂÎÌÏËÄÓÄÀ //RACE_COMPLETED! // 33

Now I created an additional alphabet with a different colour set of letters/numbers for a few of the remaining bonus messages and laid out the following grid:

…†‡ˆ‰ Š ‹ ŒŽ™ ›Ÿ¡¢ ¨ © ª_«µ¶³ ¨®¯°±ˆª
ABCDE#G#I###MNO##RSTU#W#Y#! '.-' WAESTD!

From here I worked out the remaining messages I needed, for example one of these was YOU_ARE_WASTED!, which is now: ©™¢_…›‰_¨®°±¯ˆª
I then put these remaining messages into SCROLLERS.TXT and now my final SCROLLERS.TXT looks like this:
46 // # of Headup scrolly messages
// Format: Font index (THE FONT), Message string (THE FONT COLOUR AS REFERENCED IN FONTCOL.TXT)
// N.B use underscore "_" where you want a space in the string
23,21,UNUSED // 0
23,21,UNUSED // 1
23,21,UNUSED // 2
23,21,UNUSED // 3
4, 22,Æ΀ // 4 4, 22,GO!
4, 21,£ // 5
4, 21,¤ // 6
4, 21,¥ // 7
4, 21,¦ // 8
4, 21,§ // 9
4, 23,ÒÏÀÓÓÄÑ_ÁÎÍÔÒ //splatter_bonus // 10
4, 23,ÏÈËÄÃÑÈÕÄÑ_ÁÎÍÔÒ€ //piledriver_bonus! // 11
4, 23,Ä×ÓÑÀ_ÒÓØËÄ_ÁÎÍÔÒ€ //extra_style_bonus // 12
4, 23,ÁÎÍÔÒ_ÅÎÑ_ÀÑÓÈÒÓÈÂ_ÈÌÏÑÄÒÒÈÎÍ //bonus_for_artistic_impression // 13
4, 21,‡…¡_«Ž«_Œ™¢Ÿ‰_†™Ž¢Ÿ //cat_'n'_mouse_bonus // 14
4, 23,ÖÇÀÓ_À_ÏÔÍÓ€ //what_a_punt // 15
4, 23,ÃÑÎÏÏÄÃ_ËÈÊÄ_À_ÒÓÎÍÄ€ //dropped_like_a_stone€ // 16
4, 23,POLITE.PIX // 17
4, 23,|_@;%#;_#;$*& // 18
4, 23,^_@;%#;_#;$*& // 19
4, 23,{_@;%#;_#;$*& // 20
4, 23,}_@;%#;_#;$*& // 21
4, 23,]_@;%#;_#;$*& // 22
4, 23,[_@;%#;_#;$*& // 23
4, 23,\_@;%#;_#;$*& // 24
4, 23,=_@;%#;_#;$*& // 25
4, 23,10x_@;%#;_#;$*& // 26
4, 23,"ÍÈÂÄ_ÒÇÎÓ+_ÒÈÑ€" //"nice_shot+_sir€" // 27
4, 21,‡¢ŽŽ‹ŽŠ_Ÿ¡¢Ž¡_†™Ž¢Ÿ //cunning_stunt_bonus // 28
4, 23,ÇÄÀöÎÍ_ÁÎÍÔÒ€ //head-on_bonus€ // 29 4, 21,HEAD-ON_BONUS
4, 23,ØÎÔ_ÖÀÒÓÄÃ_³ÄÌ€ //you_wasted_'em€ // 30 4, 21,YOU_WASTED_'EM
4, 22,ÂÇÄÂÊÏÎÈÍÓ€ //checkpoint€ // 31
2, 23,ÎÔÓ_ÎÅ_ÓÈÌÄ€ //out_of_time€ // 32
2, 23,ÑÀÂÄ_ÂÎÌÏËÄÓÄÀ //RACE_COMPLETED! // 33
4, 21,©™¢_…›‰_¨®°±¯ˆª //ØÎÔ_ÀÑÄ_ÖÀÒÓÄÀ // 34 4, 21,YOU_ARE_WASTED!
4, 23,ÁÎÓÇ_ÁÔÆÆÄÑÄÃ //BOTH_BUGGERED // 35
4, 24,ÆÀÌÄ_ÎÕÄÑ //GAME_OVER // 36
4, 24,ÔÇ_Îǵµµ_ÎÔÓ_ÎÅ_ÂÀÒÇ //UH_OH..._OUT_OF_CASH // 37
4, 24,ÇÄÇ_ÀÂĵµµ_ØÎÔ_ËÎÒÓ //HEH_ACE..._YOU_LOST // 38
4, 22,ÀÍÀÙÈÍƵµµ_ØÎÔ_ÖÎÍ€ //AMAZING..._YOU_WON! // 39
4, 23,ÁÀÑÁÄÐÔÄ_ÁÎÍÔÒ //BARBEQUE_BONUS // 40
4, 22,ÒÓÈÓÂÇ_ÓÇÀÓ€ //STITCH_THAT! // 41
4, 23,ÀÖÀÑÃ_ÅÎÑ_ÎÔÓÒÓÀÍÃÈÍÆ_ÀÂÇÈÄÕÄÌÄÍÓ //AWARD_FOR_OUTSTANDING_ACHIEVEMENT // 42
4, 24,ÌÈÒÒÈÎÍ_ÅÀÈËÄÃ //MISSION_FAILED // 43
4, 22,ÌÈÒÒÈÎÍ_ÂÎÌÏËÄÓÄÃ //MISSION_COMPLETED // 44
23,24,ÃÄÌÎ_ÓÈÌÄÎÔÓ€ //DEMO_TIMEOUT! // 45

Once this was done all I had to do was change FONTCOL.TXT so that font colour 21 (a greater explanation on the purpose and contents of FONTCOL.TXT can be found in my initial font discoveries article) was white as opposed to it’s default yellow and Bob’s yer uncle, sorted!

Below is a screenshot of the contents of \data\64x48x8\FONTS\Big_Italic\TiffRGB with their corresponding character next to each image:

Click the image for a fullscreen view.

And that is a (quick?) explanation on how I have created multiple fonts within a single font type in Carmageddon 2.
Thank you for sticking with me,
~Razor.

1 Comment(s)

  1. Wow that looks like a tedious job. Well done man, respect!

    Harmalarm | Feb 25, 2016 | Reply

Post a Comment