Jump to content

ROSS'S GAME DUNGEON: TEST DRIVE 3

Recommended Posts

Hey, I plan on doing a follow-up episode soon. For people working on extracting the data, let me know how to credit you, otherwise, I'll just use your username in the video.

Share this post


Link to post

That sounds good about the follow up episodes Ross, I do sort of think you should do a compilation follow up episode involving the games you mentioned follow up episodes for if you can since well it would honestly get alot more out of the way and you can also give clues to your next episode for the Dungeon

Share this post


Link to post

This might be an interesting episode.

 

If you want to reference me my name is [redacted for a thought experiment, pm if this is a problem]. Ripa and Komojo have done much more than make noisy pictures, however :)

Edited by Guest

Share this post


Link to post

How to stop the 'Press F6 to return to the road' message annoying you

Or "how I learned a little bit of x86 today".

 

  1. Open up TD3.EXE with a hex editor (make a backup first!).
  2. Go to address 00015981
     
    The surrounding bytes should look like:
    ... D1 7C E2 33 C0 ...


    Please tell me if they don't. I have an inkling my TD3.exe is different to other people's, but I could be incorrect.
     
    Replace the "7C E2" with "90 90"

    ... D1 90 90 33 C0 ...


     

  3. Save the executable.
  4. Run the game
  5. Tell me if it works for you (this step cannot be skipped without the game crashing)

 

If you are curious to what this does

My interpretation is likely riddled with inaccuracies, so please correct me if I'm wrong :)

 

Whilst the game is displaying the "Press F6 to return to the road" message it's running a small loop of instructions. Until this loop ends the game won't proceed.

 

Normally a number is decremented (I think) every time the loop is run. At the end of the loop the game checks to see if this number has reached a certain value, if it has not it repeats the loop. By running this loop many times the game "wastes time" keeping the message on-screen instead of running the normal game instructions. Once the number reaches a certain value the game moves on and the loop is not run again (until we next veer off the road).

 

"7C E2" is a 'conditional jump' instruction that tells your processor to jump back to the start of the loop and run it again. "90" or 'NOP' is a no-operation (do nothing) instruction. By replacing the jump with a couple of NOPs we ensure the loop is only ever run once.

 

It's interesting that this mod stops the message appearing at all: it doesn't even flicker for a frame as far as I can see. Perhaps the loop needs to be run twice for the message to be properly rendered on-screen.

 

You will still see the message pop up, but it'll only last a frame and should not interrupt you.

Share this post


Link to post

Here's the maps from the add-on disk. There's several missing pieces in all of them. I think some of them are actual missing data - if you drive to those spots in the game, the car starts to sink into the ground. Others are missing props like bridges. I'll leave it up to Komojo to crack the problem of decoding those properly. I'll upload a ZIP file with the 3d .objs later.

 

qE3T0vyl.jpg LFcimgIl.jpg RFvZNaxl.jpg GbSao2sl.jpg mQ8vDgbl.jpg

 

Veyrdite: incidentally I also found a way to get rid of the F6 nagging: patch these instructions with NOPs (90h)

0B4D:135C                 push    ax
0B4D:135D                 call    far ptr subr_37C8
0B4D:1362                 add     sp, 2

 

Ross: just "ripa" is fine :-)

Share this post


Link to post

Is it possible to release an .obj or a .3ds file or something like that of the maps? I would love to make a little video of camera flying around there with it looking closer to the original (it definitely looks nicer from lower perspective and I'm not a huge fan of those reflections, still a wonderful job!), etc.

Share this post


Link to post

Thanks. Cinema 4D has pretty bad importer of .obj files, but a demo version of Riptide fixed that and everything is working perfectly now. I wanted to make a rendered animation, but I kind of forgot how long anything renders on my potato computer, so I'm gonna post just some pictures. Soon. :D

Share this post


Link to post

Well, here it is! It's 11 pics in total, but "only" 8 camera angles, the others are existing pics with depth of field (distance blur) added to them and I don't want to make someone very, very, very, very, very, very, very, very sad. Every pic has a glow / bloom effect, because it makes it a bit "happier" imo. I'm not a photography expert, though, so please do tell me about the pics being too bright etc., so I can fix it! :)

 

http://imgur.com/a/tycvo

 

Enjoy! It's all 1920x1080, by the way, so it's HD enough for a wallpaper (unless you're on something close to 4K. In that case, I won't do new renders because I didn't save the camera positions...)

Share this post


Link to post

Cool! Your maps include the road edge marker sticks and some of the tiles that were missing in my maps. Good job!

Share this post


Link to post

I've also got a map update. I've been working independently on this and I finally got a bit further in decoding the model data. I'll upload my source code somewhere eventually. In the mean time, here are some screenshots I made showing the models:

 

TymZZXBm.png

 

LgCBjSjm.png

 

cc5wWv6m.png

 

I've only decoded the first map so far. I've got information about the map tiles, but I'll just talk about the objects here.

 

Object Data

 

The object models use the same format as the map tiles. The objects are stored in a list where each object can be repositioned anywhere as opposed to being tile-based. There are 71 models in the first map. I got that by counting the file offsets, but I'm not sure where this number is stored.

 

There are separate arrays in the file for each object property:

X (2 bytes)

Y (2 bytes)

Z (2 bytes)

Index (2 bytes, only the first one is used)

Rotation (2 bytes, only the first one is used)

 

The position data is located here:

X: SCENE01.DAT 0x11411

Y: SCENE01.DAT 0x112d1

Z: SCENE01.DAT 0x11551

Index: SCENE01.DAT 0x11191

Rotation: SCENE01.DAT 0x11691

 

Here's where the model data is:

 

All object model data is in DATAB.DAT
_______ ________ __________________________
| Index | Offset | Description              |
|_______|________|__________________________|
| 1     | 32f9a  | "49" sign                |
| 2     | 32f9a  | "49" sign                |
| 3     | 32f9a  | "49" sign                |
| 4     | 32f9a  | "49" sign                |
| 5     | 33062  | Traffic light            |
| 6     | 33268  | Stop sign                |
| 7     | 333b2  | Knocked over stop sign   |
| 8     | 33412  | "55" sign                |
| 9     | 334e2  | Knocked over white sign  |
| 10    | 3351a  | Right turn sign          |
| 11    | 335b4  | Knocked over yellow sign |
| 12    | 335ec  | Left turn sign           |
| 13    | 33686  | "33" sign                |
| 14    | 3375c  | "120" sign               |
| 15    | 3383a  | Lighthouse               |
| 22    | 35024  | Right chevron            |
| 23    | 35090  | Left chevron             |
| 24    | 350fc  | Intersection sign        |
| 25    | 35174  | Right intersection sign  |
| 26    | 351ec  | Left intersection sign   |
| 27    | 35264  | Electrical tower         |
| 28    | 353d4  | "25" sign                |
| 29    | 354a4  | Motor boat               |
| 30    | 35592  | Sail boat                |
| 31    | 35654  | Lane Begins sign         |
| 32    | 356f8  | Lane Ends sign           |
| 37    | 3582c  | Fog                      |
| 38    | 358b0  | Mailbox                  |
| 39    | 3595e  | Knocked over mailbox     |
| 40    | 35a0c  | Cone                     |
| 41    | 35a5e  | Knocked over cone        |
| 42    | 35ab0  | "5" sign                 |
| 43    | 35b42  | Blue guy                 |
| 44    | 35c68  | "Road Closed" sign       |
| 45    | 35f68  | Knocked over sign        |
| 49    | 379e0  | Billboard                |
| 50    | 37e58  | "Dip" sign               |
| 54    | 395f2  | House                    |
| 58    | 3a71c  | Cow                      |
| 59    | 3a9b8  | Lamp                     |
| 60    | 3aa4a  | "1" sign                 |
| 61    | 3aaa4  | "101" sign               |
| 62    | 3ab4a  | "156" sign               |
| 63    | 3ac3c  | "140" sign               |
|_______|________|__________________________|

 

 

rBV9NVb.png

I can't find the model for the railroad crossing. I think I might've seen it in an earlier version of my search algorithm, though. That's the one model that's still missing.

 

 

Other Objects

 

I was able to find most of the models, but not all of them. There are a few other special models that use a different format, such as a large barn building.

 

Luckily, I figured out how to hack the model locations in the game so it shouldn't be too hard to find out where the data is. If you want to see one of the special models, you can move it in front of the player by modifying SCENE01.DAT with a hex editor, like so:

 

To set the X position, go to 0x11409 and change "80 1E" to "BC 11"

To set the Y position, go to 0x112C9 and change "00 46" to "00 0A"

(The Z position is at 0x1154A but you don't need to change it.)

 

This will move the barn to the same position as one of the road signs near the starting point.

 

44gX4PU.png

 

y1vPcn7.png

 

Now you can change the model index. The indices for the special models show up just before the regular model indices, and the one for this model is at 0x11189. Normally it's "30 10" but if you change the 30 to a different index you can change the barn to something else:

 

OYZQXf5.png

 

JfuDMgX.png

 

Large buildings

 

NV0YOMY.png

 

A station wagon? It shows the model but the car doesn't move.

 

Here are all the special model indices:

0x11: Police car

0x12: Train engine

0x13: Train car

0x14: Flat train car

0x2E: Pickup truck

0x2F: Blue minivan

0x30: Police car

0x33: Barn

0x34: Black & white building

0x35: Cyan building

0x37: Station wagon

0x38: Chicken

0x39: Dead chicken

 

Just like with the regular models, the index only uses the first 6 bits so it repeats after 64.

 

I couldn't tell what was different about the models at first, but I just realized that all of them have multiple levels of detail. Some of the details disappear when the objects get far away.

s9QnUFw.png

 

Anyway, that's what I've got so far. With this information it shouldn't be too hard to figure out where the model data is. I'm going to look for it myself, but I also thought I'd share this here in case one of you wants to take a crack at it.

 

 

Also, Ross mentioned hacking the map for Eternam in his followup video...I wouldn't normally be interested in that game, but now I kind of want to do that.

Share this post


Link to post

I love the model renders, if someone ever gets this into a playable state, I'll definitely mention it in a future follow-up.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in the community.

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.