Finding maps and tables in Universal Patcher

They go by many names, P01, P59, VPW, '0411 etc . Circa 1999 to 2006. All VPW OBD2 PCMs.
Posts: 540
Joined: Sun Apr 10, 2016 9:20 pm

Re: Finding maps and tables in Universal Patcher

Postby kur4o » Tue May 24, 2022 7:07 am

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.

Posts: 135
Joined: Sat Dec 18, 2021 8:15 am
Location: New Jersey, USA

Re: Finding maps and tables in Universal Patcher

Postby darkman5001 » Wed May 25, 2022 9:28 pm

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 13 times

Posts: 135
Joined: Sat Dec 18, 2021 8:15 am
Location: New Jersey, USA

Re: Finding maps and tables in Universal Patcher

Postby darkman5001 » Wed Jun 01, 2022 9:12 pm

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>

Posts: 540
Joined: Sun Apr 10, 2016 9:20 pm

Re: Finding maps and tables in Universal Patcher

Postby kur4o » Thu Jun 02, 2022 1:15 am

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.

Posts: 135
Joined: Sat Dec 18, 2021 8:15 am
Location: New Jersey, USA

Re: Finding maps and tables in Universal Patcher

Postby darkman5001 » Thu Jun 02, 2022 8:54 pm

Thanks Kur4o. It's a lot to take in, lol. But I will play around with this and see what I come up with.

Site Admin
User avatar
Posts: 7206
Joined: Sat Feb 28, 2009 8:34 pm

Re: Finding maps and tables in Universal Patcher

Postby antus » Fri Jun 03, 2022 10:45 am

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: viewtopic.php?f=7&t=1396

User avatar
Posts: 375
Joined: Tue Dec 17, 2019 3:27 am

Re: Finding maps and tables in Universal Patcher

Postby joukoy » Fri Jun 03, 2022 2:03 pm

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 182 times

Previous

Return to GM LS1 512Kbyte and 1Mbyte

Who is online

Users browsing this forum: No registered users and 2 guests