Archive for the ‘Mods’ Category

Fight against Adversary at Rock Zone in one lap

Hi,

Today, I show to you another video of my improvements, with my

 

Destruction Derby race in Death Rally

Hi,

As my investigations continue, i’m testing things that I want to incorporate to the future Death Rally launcher. In this case this post it’s about a race I called “Destruction Derby Race!”, in honor of the classic game probably most of us played, Destruction Derby.

The main idea is to play a race with a lot of laps, in this case the race laps are 255, so, the race is too long to finish it normally and the best way to end this race is destroying all rivals!.

Here is a sample video of this kind of race:

Game launcher

Hi,

I’m introducing to you the work I’ve doing last weeks. It a Death Rally game launcher that allow us to select the number of laps for the easy race!.

This a earlier version, so functionality is very limited.

I hope you like it a please, post your comments and your ideas for this launcher I’ll release in few days.

Adversary mod explanation

Hi,

In this post I try to explain how we can use the adversary car in one race!,

The main idea is making the game believes that we are the driver with more points to make the game set the first driver as the Adversary. In this case we need to be the first driver, so, we can play with the adversary car.

The savegame I’ve created it’s very simple. We are the second driver with more points adn out rank is 0 (this is basic to use the adversary car). Rank positions are between 1 and 19, so, position 0 is a shortcut to achieve our objetive. Also, a drivre like Farmed Ted have more point than anyone and rank equals to 1. Later we’ll see why I’ve selected Farmed Ted with rank 1.

Now, I will show up, the decompilated code when you press the continue button in the black market:

case CONTINUE:
 
 if ( drivers[driverId].damage != 100 || useWeapons )
 {
    if ( isMultiplayerGame )
    {
       selectedRace_462CE8 = 0;
       v91 = setUndergroundMarketPrices();
       undergroundPricesSet_456B84 = v91;
       if (useWeapons && v91 )
       {
          enterBlackMarketScreen();
          dword_456B58 = 1;
       }
       else
       {
          loadMenuSoundEffect(1u, 24, 0, configuration.musicVolume, dword_445190);
          previewRaceScreen(raceDrivers_456758);
          dword_456B58 = 1;
       }
   }
   else
  {
       v92 = setUndergroundMarketPrices();
       undergroundPricesSet_456B84 = v92;
       if (useWeapons && v92 )
       {
          enterBlackMarketScreen();
       }
       else
       {
          loadMenuSoundEffect(1u, 24, 0, configuration.musicVolume, dword_445190);
          v93 = 0;
          v94 = 2;
          v95 = (int)dword_4608F0;
          do
          {
              if ( *(_DWORD *)(v95 - 108) > v93 )
              {
                   v5 = v94 - 2;
                   if ( v94 - 2 != driverId )
                       v93 = *(_DWORD *)(v95 - 108);
               }
               if ( *(_DWORD *)v95 > v93 )
               {
                    v5 = v94 - 1;
                    if ( v94 - 1 != driverId )
                    v93 = *(_DWORD *)v95;
               }
               if ( *(_DWORD *)(v95 + 108) > v93 && v94 != driverId )
                    v93 = *(_DWORD *)(v95 + 108);
               if ( *(_DWORD *)(v95 + 216) > v93 )
              {
                    v5 = v94 + 1;
                    if ( v94 + 1 != driverId )
                        v93 = *(_DWORD *)(v95 + 216);
              }
              if ( *(_DWORD *)(v95 + 324) > v93 )
              {
                    v5 = v94 + 2;
                    if ( v94 + 2 != driverId )
                    v93 = *(_DWORD *)(v95 + 324);
              }
              v94 += 5;
              v95 += 540;
          }
          while ( v94 - 2 < 20 );
          if ( drivers[ driverId].points <= v93 )
               selectRaceScreen();
          else
               adversaryPreviewScreen((const char **)v5);
      }
   }
   else
   {
         createPopup(144, 114, 384, 119, 1);
         writeTextInScreen("[Repair your car first.", 79530);
         writeTextInScreen((const char *)&unk_444160, 89770);
         writeTextInScreen("What'cha gonna do with that pile of", 100010);
         writeTextInScreen("junk, carry it around? Let me spell", 110250);
         writeTextInScreen("this out for you: R-E-P-A-I-R.", 120490);
         refreshAllScreen();
        loadMenuSoundEffect(2u, 23, 0, configuration.musicVolume, dword_44518C);
   }

 

Firstable, when you click in the continue button, the program checks if your car is not totally damaged, in this case, the program shows a popup noticing that you have your car broken and you need to repair it.

Next the program checks if you are in the black market or in the shop screen. If you are in the shop screen, the black market prices are recalculated and the screen is refreshed. In case that you are in the black market screen, the program calculates if you are the driver with more points (with the adversary savegame, Farmed Ted is the driver with more points 🙂 ). Depending on the result of this condition the program shows the selectRaceScreen (where you can select easy, medium or hard race) or the adversaryPreviewScreen (no circuit seleccion, and only two drivers in the race).

Well, this case is not new, normally we are not the driver with more points!, but all is based on this condition.

Now, we can are going to see in depth the code that sets the firsts driver as the adversary:

 

 maxPoints = 0;
 v119 = 0;
 if (numberOfParticipants > 0 )
 {
      int driverIndex = 0;
      do
      {
           if (drivers[driverIndex].points > maxPoints && v119 != v96 )
               maxPoints = drivers[driverIndex].points;
           ++v119;
           driverIndex = driverIndex + 1;
      }
      while ( v119 < numberOfParticipants);
 }
 v121 = v96;
 userPoints = drivers[v121].points;
 if (userPoints > maxPoints && !isMultiplayerGame )
   { 
        strcpy(raceParticipant[0].name, "Adversary");
        raceParticipant[0].difficulty = configuration.difficulty;
        raceParticipant[0].damage = 0;
        raceParticipant[0].rocket = 0;
        raceParticipant[0].carType = 6;
        raceParticipant[0].spikes = 1;
        raceParticipant[0].useWeapons = useWeapons;
        raceParticipant[0].mines = useWeapons != 0 ? 8 : 0;
        raceParticipant[2].r = *((byte *)v112 + 30);
        raceParticipant[2].g = *((byte *)v112 + 31);
        raceParticipant[2].b = *((byte *)v112 + 32);
        raceParticipant[3].r = *((byte *)v112 + 30);
        raceParticipant[3].g = *((byte *)v112 + 31);
        raceParticipant[3].b = *((byte *)v112 + 32);
 }

This code obtains if we are the driver with more points (note that only checks the first numberOfParticipants, normally 4, so only checks Duke Nukem, Jane Honda, Nasty Nick and Motor Mary)  and in this case sets the first participan name as Adversary, sets the carType as Adversary Car!, add spikes to this car (althouhg we can’t see it), and if we are using weapons, our car will contain 8 mines  :).

Also the program sets the 3th and 4th car color to grey, this is the reason because we see this cars with this colour.

 

In conclusion, since I’ve decompiled the code, I can test some cases and find out this kind of behaviour.  Probably, when I implement a Death Rally launcher, this program can change the oponents colours from grey to their original colour, and add rocket the adversary car.

 

 

Final race with 4 contenders

Hi adversary!,

What do you feel fighting against 3 cars?

At this moment the rivals are very easy, but the idea is to allow to modify this cars with the launcher I’m developing. I hope we can see a final race with 3 deliverators, it can be awesome!

F1 2018 mod video

Here are a video of the F1 2018 mod:

 

It’s very hard to win races in this mod!

 

I hope you enjoy it.

Death Rally in-game images modifications by Simo

Hi to all,

User Simo continues his great work and now shows us a few images of his Death Rally image modifications.

At this moments Simo is be able to extract images (bpk files)from bpa files, modify it, and store in the bpa file. The results are shown in the nexts images:

image 1

image 2

image3

My expectations are very hight about Simo’s work because he is doing a great work in this hard hard work of modifing Death Rally image files.

Also you can follow Simo’s updates on

Marathon Race in Death Rally!

Hi to all,

Due to the decompilation phase of the Death Rally executable I modified few thing to allow us to play a marathon race in Death Rally!. This race have 20 laps and is very interesting because one fail doesn’t destroy your race. Be carefull of enemy weapons because 20 laps can be endless.

Here is the video that demostrates it:

In few weeks I will publish a game launcher that allow us to modify race laps and more!.

 

Do you want to play a race with the adversary car?

Hi,

As we have and savegame editor for Death Rally, and tools are stating to grow, we can test things that years ago can’t.

Last weekend I started an investigation to know if it is posible to play with the adversar car, and know how it feels driving this amazing car. I see a youtube video in wich a player uses the adversary car in the shareware version. The savegame was available, but unfortunatelly, if works only in the shareware version.

At this moment, I inspected the shareware and the full version executable to bring light to this problem and know in wich cases the executable give the adversary car to the player 🙂 .  In the first moments I think it could be very hard find out the situation to get the adversary car, but with a little time a see the solution.

Here is this savegame to play as the adversary car in the full version!. You can only play one race but I think this is interesting. Now we can feel what the adversary feels when you race against him.

 

Download the Adversary mod totally free

Download the Adversary mod sharing a few cycles of CPU to mantain this web

Download the Adversary modification with a medium collaboration of CPU cycles to maintain this web

Download the Adversary modification with a high collaboration of CPU cycles to maintain this web

 

Here is the youtube video wich demostrates it.


View the video in youtube

In the next week I’ll explain with more detail how it works this solution.

Enjoy it!!

 

F1 2018 Savegame mod for Death Rally

Hi to all!,

As the start of F1 championship is near in time, I like to share a savegame modification for Death Rally in wich you can play against Lewis Hamilton, Sebatian Vettel or Fernando Alonso!.

The clasification is equal as the result of the 2017 championship, but the team performance is taken from the preseason test sessions in Barcelona, so we can spect a better 2018 Mclaren than 2017.

Driver face image can be repeated because at this moment we can’t change the faces to substitute with the real faces.

The difficulty I’ve selected is “Petrol in my veins”, because F1 is hard, very hard.

To use this savegame, simply copy the file in your Death Rally directory and enjoy!.

You can select one this 4 download links, the first is totally free, and the others donate some of your CPU cycles to maintain this website.

F1 2018 Mod Totally free

F1 2018 Mod with little colaboration

F1 2018 Mod with medium colaboration

F1 2018 Mod with hight colaboration

 

Polls

Do you want a Death Rally card Game?

  • Yes, of course, it could be incredible (60%, 3 Votes)
  • Yes, it would not be bad. (40%, 2 Votes)
  • No, I don't like card games. (0%, 0 Votes)
  • No, this is a horrible idea. (0%, 0 Votes)

Total Voters: 4

Donate

Help us to mantain this web and develop DreeRally