Jump to content

Worldmap Travel from Area to Area in BG1 & Tutu


Guest Guest_erebusant_*

Recommended Posts

Guest Guest_erebusant_*

Just looking at the different options to make the WMv6.3 work with Tutu. Can anybody explain exactly how travel between areas works in BG1 and Tutuv4. I can make up links for the WMv6.3 for the Tutu areas that have defined entry names such as FW2700.are that has defined entries of Exit2700 & Exit2800, however, there are many of the Tutu areas which have no adjacent area Entry naming such as FW2900 and FW3000 and FW2400. The travel between these areas works using the original worldmap, but when v6.3 map is installed, the only way to move between areas is by establishing a link, and with no defined Entry name the only way to establish a valid link that won't cause a CTD is to place a N in the Entry Name column, which throws you into the area wherever it happens to throw you. I think in the FW2900 area you arrive at the south of the map, and in the FW3000 area you arrive at the east of the map.

 

Another thing that is confusing is when you look at the areas with NI, the area to the E is actually in reality the area that is west of the current area you're viewing, and the one to the W is actually east. North and South show properly.

 

I suppose the easiest way to make this work would be to have the .tp2 check each FWxxxx.are and patch it to add entries with names to the areas that do not have them that match adjacent area names, so the links would work, but I have no idea how to code something like that. Any help would be appreciated.

Link to comment
Just looking at the different options to make the WMv6.3 work with Tutu. Can anybody explain exactly how travel between areas works in BG1 and Tutuv4. I can make up links for the WMv6.3 for the Tutu areas that have defined entry names such as FW2700.are that has defined entries of Exit2700 & Exit2800, however, there are many of the Tutu areas which have no adjacent area Entry naming such as FW2900 and FW3000 and FW2400. The travel between these areas works using the original worldmap, but when v6.3 map is installed, the only way to move between areas is by establishing a link, and with no defined Entry name the only way to establish a valid link that won't cause a CTD is to place a N in the Entry Name column, which throws you into the area wherever it happens to throw you. I think in the FW2900 area you arrive at the south of the map, and in the FW3000 area you arrive at the east of the map.

 

Another thing that is confusing is when you look at the areas with NI, the area to the E is actually in reality the area that is west of the current area you're viewing, and the one to the W is actually east. North and South show properly.

 

I suppose the easiest way to make this work would be to have the .tp2 check each FWxxxx.are and patch it to add entries with names to the areas that do not have them that match adjacent area names, so the links would work, but I have no idea how to code something like that. Any help would be appreciated.

 

I found an example of code in another mods .tp2 that added an entry to an area, and using that was able to add an entry. The question I have now, is can it be set up to add more than 1 entry at a time, or if I need to add 4 entries to 1 area, am I stuck with having to copy and patch the same area file 4 times?

Link to comment
The question I have now, is can it be set up to add more than 1 entry at a time, or if I need to add 4 entries to 1 area, am I stuck with having to copy and patch the same area file 4 times?
I'm not sure who would have expertise with this. Possibly Macready at PPG from a Tutu perspective. Maybe Ascension64 from a perspective of making the BG1 areas BGT-compatible. Red Carnelian at CoM is also working on a mod for BG1/Tutu that adds areas and links.

http://forums.pocketplane.net/index.php?topic=23423

Link to comment

I'm confused as to whether you wish to introduce new entrances to areas or whether you want to fill blank resref-for-destination areas in existing info points - so I probably can't help here :p

 

It's definately possible to do as many of either as you wish in a single copy action though, or even do a single copy action with something like C_E_R ~^fw[0-9][0-9][0-9][0-9].are$~.

Link to comment
Guest Guest_Red Carnelian_*

Sounds like u need some kind of code that will store 4 entrance names with their x and y locations for one area and then some kind of loop that will add the entrances for you without having to copy and paste all the patching info for each entrance. I've no idea at this time how to build such a code structure. If there aren't that many areas like FW2900 then it might do just to copy, paste and edit.

Link to comment
Sounds like u need some kind of code that will store 4 entrance names with their x and y locations for one area and then some kind of loop that will add the entrances for you without having to copy and paste all the patching info for each entrance. I've no idea at this time how to build such a code structure. If there aren't that many areas like FW2900 then it might do just to copy, paste and edit.

 

I found some code actually in SBB's DSotSC TP2 which I was able to emulate to make it work exactly as I needed. As follows, the highlighted in red are the critical thing:

 

// FW2900 (Larswood) gets 4 new entrances from FW2400, FW2800, FW3400 and FW3000

COPY_EXISTING ~FW2900.ARE~ ~override~

READ_LONG 0x54 "actors_offset"

READ_SHORT 0x58 "actors_num"

READ_SHORT 0x5a "infotrig_num"

READ_LONG 0x5c "infotrig_offset"

READ_LONG 0x60 "spawns_offset"

READ_LONG 0x64 "spawns_num"

READ_LONG 0x68 "entrances_offset"

READ_LONG 0x6c "entrances_num"

READ_LONG 0x70 "cont_offset"

READ_SHORT 0x74 "cont_num"

READ_SHORT 0x76 "items_num"

READ_LONG 0x78 "items_offset"

READ_LONG 0x7c "vert_offset"

READ_SHORT 0x80 "vert_num"

READ_SHORT 0x82 "amb_num"

READ_LONG 0x84 "amb_offset"

READ_LONG 0x88 "vars_offset"

READ_LONG 0x8c "vars_num"

READ_LONG 0xa0 "expbmp_offset"

READ_LONG 0xa4 "doors_num"

READ_LONG 0xa8 "doors_offset"

READ_LONG 0xac "anim_num"

READ_LONG 0xb0 "anim_offset"

READ_LONG 0xb4 "tiled_num"

READ_LONG 0xb8 "tiled_offset"

READ_LONG 0xbc "songs_offset"

READ_LONG 0xc0 "rest_spawns_offset"

READ_LONG 0xc4 "automap_offset"

READ_LONG 0xc8 "automap_num"

 

//adding 4 new entrances

SET offset = ("%entrances_offset%"+0x68*"%entrances_num%")

INSERT_BYTES offset 0x68

WRITE_ASCII offset ~Exit2400~ //(North)

WRITE_SHORT (offset+0x20) 2370 //X

WRITE_SHORT (offset+0x22) 100 //Y

WRITE_LONG (offset+0x24) "0" // facing

INSERT_BYTES offset 0x68

WRITE_ASCII offset ~Exit2800~ //(West)

WRITE_SHORT (offset+0x20) 100 //X

WRITE_SHORT (offset+0x22) 1700 //Y

WRITE_LONG (offset+0x24) "12" // facing

INSERT_BYTES offset 0x68

WRITE_ASCII offset ~Exit3400~ //(South)

WRITE_SHORT (offset+0x20) 1870 //X

WRITE_SHORT (offset+0x22) 3750 //Y

WRITE_LONG (offset+0x24) "9" // facing

INSERT_BYTES offset 0x68

WRITE_ASCII offset ~Exit3000~ //(East)

WRITE_SHORT (offset+0x20) 5000 //X

WRITE_SHORT (offset+0x22) 1900 //Y

WRITE_LONG (offset+0x24) "5" // facing

SET "entrances_num"="%entrances_num%"+4

WRITE_LONG 0x6c "%entrances_num%"

 

SET "info_ext"=0x68*4

PATCH_IF ("%actors_offset%">="%entrances_offset%") BEGIN

"actors_offset"="%actors_offset%"+"%info_ext%"

WRITE_LONG 0x54 "%actors_offset%"

END

PATCH_IF ("%spawns_offset%">="%entrances_offset%") BEGIN

"spawns_offset"="%spawns_offset%"+"%info_ext%"

WRITE_LONG 0x60 "%spawns_offset%"

END

PATCH_IF ("%vert_offset%">="%entrances_offset%") BEGIN

"vert_offset"="%vert_offset%"+"%info_ext%"

WRITE_LONG 0x7c "%vert_offset%"

END

PATCH_IF ("%cont_offset%">="%entrances_offset%") BEGIN

"cont_offset"="%cont_offset%"+"%info_ext%"

WRITE_LONG 0x70 "%cont_offset%"

END

PATCH_IF ("%items_offset%">="%entrances_offset%") BEGIN

"items_offset"="%items_offset%"+"%info_ext%"

WRITE_LONG 0x78 "%items_offset%"

END

PATCH_IF ("%infotrig_offset%">="%entrances_offset%") BEGIN

"infotrig_offset"="%infotrig_offset%"+"%info_ext%"

WRITE_LONG 0x5c "%infotrig_offset%"

END

PATCH_IF ("%amb_offset%">="%entrances_offset%") BEGIN

"amb_offset"="%amb_offset%"+"%info_ext%"

WRITE_LONG 0x84 "%amb_offset%"

END

PATCH_IF ("%vars_offset%">="%entrances_offset%") BEGIN

"vars_offset"="%vars_offset%"+"%info_ext%"

WRITE_LONG 0x88 "%vars_offset%"

END

PATCH_IF ("%expbmp_offset%">="%entrances_offset%") BEGIN

"expbmp_offset"="%expbmp_offset%"+"%info_ext%"

WRITE_LONG 0xa0 "%expbmp_offset%"

END

PATCH_IF ("%doors_offset%">="%entrances_offset%") BEGIN

"doors_offset"="%doors_offset%"+"%info_ext%"

WRITE_LONG 0xa8 "%doors_offset%"

END

PATCH_IF ("%anim_offset%">="%entrances_offset%") BEGIN

"anim_offset"="%anim_offset%"+"%info_ext%"

WRITE_LONG 0xb0 "%anim_offset%"

END

PATCH_IF ("%tiled_offset%">="%entrances_offset%") BEGIN

"tiled_offset"="%tiled_offset%"+"%info_ext%"

WRITE_LONG 0xb8 "%tiled_offset%"

END

PATCH_IF ("%songs_offset%">="%entrances_offset%") BEGIN

"songs_offset"="%songs_offset%"+"%info_ext%"

WRITE_LONG 0xbc "%songs_offset%"

END

PATCH_IF ("%rest_spawns_offset%">="%entrances_offset%") BEGIN

"rest_spawns_offset"="%rest_spawns_offset%"+"%info_ext%"

WRITE_LONG 0xc0 "%rest_spawns_offset%"

END

PATCH_IF ("%automap_offset%">="%entrances_offset%") BEGIN

"automap_offset"="%automap_offset%"+"%info_ext%"

WRITE_LONG 0xc4 "%automap_offset%"

END

BUT_ONLY_IF_IT_CHANGES //******************************************************** ~FW2900.are~

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...