Finding maps and tables in Universal Patcher

They go by many names, P01, P59, VPW, '0411 etc. Also covering E38 and newer here.
kur4o
Posts: 948
Joined: Sun Apr 10, 2016 9:20 pm

Re: Finding maps and tables in Universal Patcher

Post by kur4o »

Finding tables can be done in different ways.

For any one of it, there is a need of some basic definition file for an OS, that can be used for template or reference.

There is a fresh new offset tool, than can quickly find offsets between different OS. Limitation here is it needs to be done for each OS.

The other strategy is to find a unique code sequence used for table lookup that works with most of the known OS, and add that to tableseek-*.xml file, and use the tabledata from the definition file.


Index was outside the bounds of the array.

This needs some investigation, It may be due to wrong configuration or something else.

Here is some quick list of different xml files being used.

First is

1.segment config xml

It is usually labelled p01-p59.xml [pcm type.xml]
It contains info for file structure[segments name start-end address and so on], checksum configuration, and some other info read from bin file.
It can be edited from patcher->edit segment config (XML)

2. tuner definition XML

To autoload it upon opening a bin, it needs to be named by OS.xml and placed in the tuner folder
It contains all data needed to tune a bin. The xdf equivalent.
It can be edited and opened in tuner->xml->*tablelist

3. tableseek*.xml

This is a basic definition xml converted to tableseek, and instead of address for table it contains a search string.
accessed from patcher->tableseek

There is more xmls being used and I will write about them later.
darkman5001
Posts: 212
Joined: Sat Dec 18, 2021 8:15 am
cars: 2004 Suburban, 2001 Tahoe, 2002 Envoy, 2006 Envoy, 2003 Lincoln LS
Location: New Jersey, USA

Re: Finding maps and tables in Universal Patcher

Post by darkman5001 »

I was able to pull some maps for OS 12606400 for the P12. Can you guys please take a look at them and see if they will help? I pulled these using Winols.

Kur4o, what is this new offset tool and where can I get it? Any tool is a help.
Attachments
Segment Maps - OSID 12606400.rar
(19.08 KiB) Downloaded 125 times
darkman5001
Posts: 212
Joined: Sat Dec 18, 2021 8:15 am
cars: 2004 Suburban, 2001 Tahoe, 2002 Envoy, 2006 Envoy, 2003 Lincoln LS
Location: New Jersey, USA

Re: Finding maps and tables in Universal Patcher

Post by darkman5001 »

Can someone give me a brief description on exactly where is information comes from? I have the address ranges for the segments but they are not displayed like below. I also have the checksums, however I understand what I am reading below. I want to learn. Can anyone explain to me please?

<Name>BootBlock</Name>
<Version>3</Version>
<Addresses>@922*2</Addresses>
<CS1Address>#91c:2:hex</CS1Address>
<CS2Address>#900:2:hex</CS2Address>
<CS1Method>1</CS1Method>
<CS2Method>4</CS2Method>
<CS1Blocks>@932*3</CS1Blocks>
<CS2Blocks>@94a*2</CS2Blocks>
<CS1Complement>0</CS1Complement>
<CS2Complement>2</CS2Complement>
<CS1SwapBytes>true</CS1SwapBytes>
<CS2SwapBytes>false</CS2SwapBytes>
<CVN>1</CVN>
<Eeprom>false</Eeprom>
<PNAddr>#904:4:int</PNAddr>
<VerAddr>#908:2:text</VerAddr>
<SegNrAddr>#903:1:int</SegNrAddr>
kur4o
Posts: 948
Joined: Sun Apr 10, 2016 9:20 pm

Re: Finding maps and tables in Universal Patcher

Post by kur4o »

This line read start-end address of segment for segment swaps and extraction.
<Addresses>@922*2</Addresses>



Here you read start-end address of checksums
<CS1Blocks>@932*3</CS1Blocks>
<CS2Blocks>@94a*2</CS2Blocks>

Here are stored checksums
<CS1Address>#91c:2:hex</CS1Address>
<CS2Address>#900:2:hex</CS2Address>

Now to get you some syntax encoding.

For start-end address you can use various method of inputting data.
Hardcoded addresses
0-8000,10000-FFFFF for example
or
0-8000,10000-0@ [0@ means zero bytes offset from end of file][2@ will means 2 bytes before end of file]

Read data from bin file for start-end address.

With @[address] you can read from bin start address, end address or pair[range start-end]

To read start address use @800-10000[ read start address from bin at address 800[usually 4bytes long address, you can also read 2 byte address with different command]

So if at 800 the 4 bytes are 00 00 20 00 the range will be 2000-10000

To read end address use 0-@800

To read pair use @800 only [It read start address and than end address from bin starting at address 800.

To read 2 pairs of addresses use @800,@808

This one will read 2 start-end ranges

If they are consecutive you can use @800*2 This one will read 2 ranges[2=counts of ranges to be read]
To read 3 ranges use @800*3


You can also apply offsets to read address.
For example @800<800000 or @800>800000

This add offset of 800000 negative or positive to start address that was read at 800.

You can also read length of data but that is still not published yet.

Reading other data from segment

checksum address

#91c:2:hex

# means from start of segment. If segment starts at 80000 it will read 2 bytes[:2] for checksum in hex[:hex] at 8091c address

You can also use absolute address for example 91c:2:hex will read 2 bytes from start of bin at 91c address.

You can specify display only checksum by using #:2:hex, useful for cvns that are not stored at bin file.

You can also search [seek] for data, but you need to make a segment seek xml that specify the search strings and input seek:data1:2:hex for example.
darkman5001
Posts: 212
Joined: Sat Dec 18, 2021 8:15 am
cars: 2004 Suburban, 2001 Tahoe, 2002 Envoy, 2006 Envoy, 2003 Lincoln LS
Location: New Jersey, USA

Re: Finding maps and tables in Universal Patcher

Post by darkman5001 »

Thanks Kur4o. It's a lot to take in, lol. But I will play around with this and see what I come up with.
User avatar
antus
Site Admin
Posts: 8237
Joined: Sat Feb 28, 2009 8:34 pm
cars: TX Gemini 2L Twincam
TX Gemini SR20 18psi
Datsun 1200 Ute
Subaru Blitzen '06 EZ30 4th gen, 3.0R Spec B
Contact:

Re: Finding maps and tables in Universal Patcher

Post by antus »

Thanks I added a link to the above post to the FAQ. Good piece of information not to loose.
Have you read the FAQ? For lots of information and links to significant threads see here: http://pcmhacking.net/forums/viewtopic.php?f=7&t=1396
User avatar
joukoy
Posts: 392
Joined: Tue Dec 17, 2019 3:27 am
cars: Pontiac Firebird 1978

Re: Finding maps and tables in Universal Patcher

Post by joukoy »

You can use GUI for segment settings, if not familiar with text-mode setup.
Patcher -> Open "Original file" -> Settings -> Edit Segment config (XML)
Attachments
Segment-settings-2022-06-03 065834.jpg
Segment-settings-2022-06-03 065834.jpg (127.2 KiB) Viewed 1998 times
Post Reply