Nissan SR20 Forum Nissan SR20 Forum Header Right

Welcome to the SR20 Forum!

A community of enthusiasts dedicated to Nissan's SR20DE/SR20VE/SR20DET engines.
Start here: forum search. Be sure to search on what you're looking for before posting a new thread.

You are currently browsing the forum as a guest. In order to access special features, the image gallery, and post you will need to be a registered member. Registration is fast, simple and absolutely free so please, join our community today!

If you have any problems with the registration process or your account login, please contact the administrator.

Google Links

» Log in
User Name:

Password:

Not a member yet?
Register Now!
» Wheel & Tire Center

Sponsors

Sponsors


Go Back   SR20 Forum > Vendor Customer Support > CalumSult



Reply
 
Thread Tools Search this Thread
Old 07-26-2007, 01:19 AM   #1 (permalink)
soylent green is people
 
Calum's Avatar

Approved vendor
 
Join Date: Dec 2001
Location: Lubbock, TX
Trader Rating: 24 (100%)

Using the disassembly

This is something I've been meaning to post for quite some time, but just haven't had the time. This is pretty technical stuff, if this is greek to you its ok, just skip this thread and move on.

The goal of this is figuring out exactly what every single table in each ecu does, how it works, and documenting it. You can use the disassembly to help this, but its really really tedious and would help if more people worked on it. There's just tons of neat stuff that needs to be worked out and documented.

Alrighty, I've uploaded pretty complete disassemblies from some of the more common bins. All of these except the B14GA disassemble just fine with the current disassembler without any modification (the B14GA takes removing some of the interrupt vectors to run fine, I don't know whats causing it to go awol but it seems complete without them). Also included in each directory is the original bin for reference (again, the B14GA is slightly corrupt, don't go using it on an ecu). The actual disassembly is in the big txt files, and also included is the memory.txt file listing all the known addresses at the time of the disassembly. Know more than whats in the memory.txt? E-mail me and I'll rerun the disassembler (or get it back to the point I can just post it online).

The different disassemblies are here:

http://www.calumsult.com/calumsu/disassembler/

The processor manual (lists all the assembly commands, formats, etc) is in the docs directory.

Ok, so what can you use this for? Well, ultimately you could walk through exactly how the ecu does anything. Thats pretty dang hard though given how complicated the code is, coupled with the unknowns of the rest of the hardware of the ecu. Buuuut, it does offer insights about how specific parts of the ecu work, and it also helps to compare different code bases to see whats been changed between them. Ultimately you've got to stick an ecu in a car and see what happens when you start changing stuff. Really there's two different ways to use the disassembly: walking through code blocks analyzing exactly whats going on, or recognizing different patterns in the code without knowing what exactly is going on, but picking up enough to learn from, then just trying changing things on a running car (or bench simulator). The first is much more tedious, and I usually get lost pretty quick, so I stick to the second most of the time. Oh well.

So lets look at real code. There's three basic types of data used by the code: flags, bytes, and tables (1D and 2D). Flags are individual bits either set by the ecu in RAM for various events, or preset in ROM to enable to disable pieces of the code. Virtually all of these aren't documented, but it would be cool if more would. Nissan made lots of the code modular, so bits and pieces could be turned on and off for different model cars, etc. A good example of a cool known flag that isn't well documented is the O2 feedback flag for the B13/S13. Check out the newest B13 XDF file. I know what it does, but not _exactly_ what all its affecting. This is worth documenting, and also checking the B14 disassembly out to see if theres a similar flag (thats an easy task, I just haven't had time to do that).

Bytes are just individual variables used by the ecu, either in RAM or ROM. Examples are important stuff like the load (TP) in RAM, or the k-value (ROM), but also tons of other not documented stuff like various effects triggered at certain temperatures, etc. Check out the memory.txt files for known variables. Lets look at something specific. Here's the bit of code that has to do with the speed limiter, but pulled from the 91 code. This is intresting because we know the 91 has the speed limiter stuff turned off, but the code is still there (try it: set a speed limiter on the ecu, it won't be used). It would be neat to figure out how to turn it back on in the 91 code for use building a valet mode bin.

Code:
Code block address: C3B3   Length: 51  M:1 X:0
00C3B3    9C904200      ldm     #0x00, 0x4290                   ; Branch target from C388
00C3B7    ADD441        lda     al, 0x41d4                      ; Read from RAM: Vehicle Speed
00C3BA    D00B          bne     0xc3c7
00C3BC    ADDE41        lda     al, 0x41de
00C3BF    18            clc     
00C3C0    690A          adc     al, #0x0a
00C3C2    CDCA85        cmp     al, 0x85ca
00C3C5    B004          bcs     0xc3cb
00C3C7    1CB94101      clb     #0x01, 0x41b9                   ; Branch target from C3BA
00C3CB    ADD441        lda     al, 0x41d4                      ; Branch target from C3A7, Branch target from C3B1, Branch target from C3C5, Read from RAM: Vehicle Speed
00C3CE    2CB9410213    bbs     #0x02, 0x41b9, 0xc3e6
00C3D3    CD3180        cmp     al, 0x8031                      ; Read from ROM: Top Speed Limit
00C3D6    901F          bcc     0xc3f7
00C3D8    AD4042        lda     al, 0x4240
00C3DB    CD4180        cmp     al, 0x8041
00C3DE    901B          bcc     0xc3fb
00C3E0    0CB94102      seb     #0x02, 0x41b9
00C3E4    8015          bra     0xc3fb

Code block address: C3E6   Length: 70  M:1 X:0
00C3E6    18            clc                                     ; Branch target from C3CE
00C3E7    6D7B80        adc     al, 0x807b
00C3EA    9002          bcc     0xc3ee
00C3EC    A9FF          lda     al, #0xff
00C3EE    CD3180        cmp     al, 0x8031                      ; Branch target from C3EA, Read from ROM: Top Speed Limit
00C3F1    B004          bcs     0xc3f7
00C3F3    1CB94102      clb     #0x02, 0x41b9
00C3F7    9C404200      ldm     #0x00, 0x4240                   ; Branch target from C3D6, Branch target from C3F1
00C3FB    D8            clm                                     ; m:0 x:0, Branch target from C3DE, Branch target from C3E4
00C3FC    AD5C80        lda     ax, 0x805c                      ; Read from ROM: Rev Limit
00C3FF    89490800      rla     #0x0008
00C403    8D5641        sta     ax, 0x4156
00C406    AD8280        lda     ax, 0x8082
00C409    29FF00        and     ax, #0x00ff
00C40C    8D5841        sta     ax, 0x4158
00C40F    ADDA41        lda     ax, 0x41da                      ; Read from RAM: RPM (full scale)
00C412    2CB941040014  bbs     #0x0004, 0x41b9, 0xc42c
00C418    CD5641        cmp     ax, 0x4156
00C41B    901D          bcc     0xc43a
00C41D    F8            sem                                     ; m:1 x:0
00C41E    AD4142        lda     al, 0x4241
00C421    CD8380        cmp     al, 0x8083
00C424    9019          bcc     0xc43f
00C426    0CB94101      seb     #0x01, 0x41b9
00C42A    8013          bra     0xc43f
Anyone want to walk through this? Its obvious that its comparing the current vehicle speed to the speed limiter, but there's lots of other stuff going on. What does the variable 0x85ca have to do with anything? Likewise 807b in the second block? (btw, the B13/S13 ROMs start in the ecu memory at 8000, so in the bin those variables are located at 05CA and 007B respectivley) Anyone want to walk through this in depth and play with it on a car? It would also help to compare this code block to whats in a bin that has the speed limiter turned on, like the U12 or B14.

This is an interesting side topic btw, lots of the B14 program is identical to the B13 stuff. This is cool, it makes it easy to tell if a certain table or variable functions the same on both ecus. This is especially handy when your looking for tables that are in different locations on oddball bins, like the USDM S14 or B14GA (that dude is just weird).

Okay, now for the fun stuff, the tables. There are tons and tons of different tables (almost all 1D), and this is what I'd really like figured out. Lets look at the 1D tables. When you start looking at known tables, there is a pretty obvious pattern. Whenever a table is called, there are three distinct steps that happen (although often other stuff mixed in):

1 - The a1 register is loaded with the index variable of the table. This could be coolant temp, load (TP), etc.

2 - The X register is loaded with the table address.

3 - A subroutine is called to fetch the data from the table. This subroutine performs interpolation too, so if the index is between points the subroutine calculates the interpolated value. Cool.

4 - The result is stored in RAM for use on down the road.

Here's a really straight forward example:

Code:
00939D    ADC941        lda     al, 0x41c9                      ; Read from RAM: Coolant Temp (%)
0093A0    A22083        ldx     #0x8320                         ; Load X: Engine Cranking Pulsewidth
0093A3    205BFE        jsr     0xfe5b
0093A6    8D6D42        sta     al, 0x426d                      ; Write to RAM: Injection time MSB
A1 is loaded with coolant temp, X is loaded with the table location, the interpolation sub routine is called to fetch the data, then the result is stored in memory. Lots of time it isn't this straightforward though. Here's where it would help for more people to dive in. Search the bin for each time the interpolation subroutine is called, and you've got a list of every single table that might be used by the ecu. Try it. There's tons of tables, but some don't seem to always be used. This is what I'd like: a list of every table, what the index is, any notes of what its involved with, then someone try and find out what it does. Again, the best way is just play with it on a car. You guys with Realtime ecus have the best tool for this: just add the table to your xdf and start playing with it while watching consult data. Many of these tables aren't important, but it would be nice to document everything. Also, it helps to compare what the table looks like between different stock bins to see if there are any hints as to what Nissan is changing them for.

So lets walk through an example of another unknown tables, again from the 91 bin:

Code:
Code block address: C4C2   Length: 27  M:1 X:0
00C4C2    2C9A410254    bbs     #0x02, 0x419a, 0xc51b           ; Branch target from C4B6
00C4C7    3C38808018    bbc     #0x80, 0x8038, 0xc4e4           ; Read from ROM: Feedback Control Flags
00C4CC    3C9A41080C    bbc     #0x08, 0x419a, 0xc4dd
00C4D1    2C9A41100E    bbs     #0x10, 0x419a, 0xc4e4
00C4D6    3C9A410113    bbc     #0x01, 0x419a, 0xc4ee
00C4DB    8037          bra     0xc514

Code block address: C4DD   Length: 7  M:1 X:0
00C4DD    2C9A410132    bbs     #0x01, 0x419a, 0xc514           ; Branch target from C4CC
00C4E2    8005          bra     0xc4e9

Code block address: C4E4   Length: 10  M:1 X:0
00C4E4    2C9A410105    bbs     #0x01, 0x419a, 0xc4ee           ; Branch target from C4C7, Branch target from C4D1
00C4E9    A26083        ldx     #0x8360                         ; Branch target from C4E2
00C4EC    800B          bra     0xc4f9

Code block address: C4EE   Length: 45  M:1 X:0
00C4EE    ADD441        lda     al, 0x41d4                      ; Branch target from C4D6, Branch target from C4E4, Read from RAM: Vehicle Speed
00C4F1    CD3080        cmp     al, 0x8030
00C4F4    901E          bcc     0xc514
00C4F6    A25083        ldx     #0x8350
00C4F9    ADC941        lda     al, 0x41c9                      ; Branch target from C4EC, Read from RAM: Coolant Temp (%)
00C4FC    205BFE        jsr     0xfe5b
00C4FF    18            clc     
00C500    6D8C42        adc     al, 0x428c
00C503    9002          bcc     0xc507
00C505    A9FF          lda     al, #0xff
00C507    CDDD41        cmp     al, 0x41dd                      ; Branch target from C503, Read from RAM: RPM/2
00C50A    B008          bcs     0xc514
00C50C    0C9A4102      seb     #0x02, 0x419a
00C510    0CB04102      seb     #0x02, 0x41b0
00C514    1C9A4101      clb     #0x01, 0x419a                   ; Branch target from C4DB, Branch target from C4DD, Branch target from C4F4, Branch target from C50A
00C518    4C03C6        jmp     0xc603
So this is a big code block, with two possible tables that could be called: 8350 and 8360 (0350 and 0360 in the B13 bin). The B14 bin also has similar code, and the same tables (E350 and E360). Comparing the B13 to B14, they're identical. Thats interesting, because Nissan changed many tables slightly between the two cars, I'm guessing based on the changes in cams, intake manifolds, emissions requirements, etc. But, they're different between the KA cars and the SR, but again the S13 is identical to the S14, even with slight changes to the motor. Looking at the U12 bin, its different from the other SR bins, but only slightly. Whats interesting is that the U12 is identical to the gtir. Weird. Ok, lets look at the code and see what we can dig out:

-There are all kinds of flags checked to enter the code at different points. One of them is the O2 Feedback flag in ROM.
-Also based on flags, either 8360 or 8350 is loaded. I don't know what the decision to select one over the other is.
-If 8350 is selected, it may not be used if the speed is less than the value at 8030. Assuming the conversion is the same as speed limiters (this is a good assumption), this stock is 8kph.
-The table is indexed vs coolant. Most of the tables are as it turns out.
-The result is added to another byte, and compared to the RPM, then flags are set based on this. Doesn't really tell me much.

So now we need to try adjusting these tables on a running car (or simulator). I'll add that to the list of get-around-to-it, but comparing how little they've been changed between the stock bins, they aren't particularly important tables so its not high on the priority list. Still, anyone want to play with these and see what they do?

Ok hackers, have fun.
__________________
All posts by Calum in this thread are copyrighted by Calum, and cannot be edited, deleted, or copied without his express permission.
calum@calumsult.com
Calum is offline   Reply With Quote
Sponsored Links
Advertisement
 
Old 07-26-2007, 01:35 AM   #2 (permalink)
SE-R Nut

 
Join Date: Jun 2006
Location: Freeport ME/ Charlotte NC
Trader Rating: 8 (100%)

Ha. Great article. Roughly %10 of this makes sense. But I love to learn and read about it. Wish I could help you out.

Thanks for the read, your explanations are great, I just have too many questions and not enough basic knowledge .

Subscribed.


Dudeman
__________________
1991 SE-R
"I've decided that because Einstein identified that objects travel through time at a slower rate with an increasing velocity, we should go as fast as possible to increase our lifespan."
Dudeman258 is offline   Reply With Quote
Old 07-26-2007, 06:09 PM   #3 (permalink)
MicraHolic

 
Join Date: Sep 2004
Location: england
Trader Rating: 0 (0%)
IN!!!

can i recommend we work one one disassembly, rather than bits on different ones
micra_pete is offline   Reply With Quote
Old 07-26-2007, 07:17 PM   #4 (permalink)
Now accepting donations!!
 
El Gabito's Avatar

 
Join Date: Jul 2003
Location: Indianapolis, IN
Trader Rating: 6 (100%)

Open source tuning, I like it.
__________________
My real name is Kyle
2002 Maxima SE (6MT) -Drop-in K&N and a brand new longblock VQ35
1994 G20 - SR20VE, JWT pop, SSAC 2.5", 2.5" VRS catback
El Gabito is offline   Reply With Quote
Old 07-26-2007, 07:28 PM   #5 (permalink)
Now accepting donations!!
 
El Gabito's Avatar

 
Join Date: Jul 2003
Location: Indianapolis, IN
Trader Rating: 6 (100%)

Ok, couple questions - first off: is there somewhere that has an explanation of what each of the columns represent? For example:

Code:
00C4C2    2C9A410254    bbs     #0x02, 0x419a, 0xc51b
What does OOC4C2's column mean? And the next one? The theme seems to be that there are four basic columns, with the last column sometimes having more than one value (if that's what a comma represents) or executing more than one command.

Would it be helpful to have any sort of database to store all of this information in?
El Gabito is offline   Reply With Quote
Old 07-26-2007, 07:55 PM   #6 (permalink)
Now accepting donations!!
 
El Gabito's Avatar

 
Join Date: Jul 2003
Location: Indianapolis, IN
Trader Rating: 6 (100%)

I have determined on my own that it would be extremely helpful in finding relationships between the data to store all of this information in a database. I have set up a MySQL database, and will await further information before I begin inputting data.
El Gabito is offline   Reply With Quote
Old 07-26-2007, 09:53 PM   #7 (permalink)
soylent green is people
 
Calum's Avatar

Approved vendor
 
Join Date: Dec 2001
Location: Lubbock, TX
Trader Rating: 24 (100%)

Quote:
Originally Posted by micra_pete View Post
IN!!!

can i recommend we work one one disassembly, rather than bits on different ones
Yea, I pretty much work with the 91 SER for figuring stuff out, but it turns out Nissan used duplicate code snippets on all the different 77xx based ecus (or at least the ones I've looked at so far). Thats kinda handy, it means if you figure something out on one ecu, its pretty easy to find the same pattern on a different one.
Calum is offline   Reply With Quote
Old 07-26-2007, 10:07 PM   #8 (permalink)
soylent green is people
 
Calum's Avatar

Approved vendor
 
Join Date: Dec 2001
Location: Lubbock, TX
Trader Rating: 24 (100%)

Quote:
Originally Posted by El Gabito View Post
Ok, couple questions - first off: is there somewhere that has an explanation of what each of the columns represent? For example:

Code:
00C4C2    2C9A410254    bbs     #0x02, 0x419a, 0xc51b
What does OOC4C2's column mean? And the next one? The theme seems to be that there are four basic columns, with the last column sometimes having more than one value (if that's what a comma represents) or executing more than one command.

Would it be helpful to have any sort of database to store all of this information in?
00C4C2 - is the actual location of the command

2C9A410254 - is the raw machine code, i.e. what you would see if you looked with a hex editor at 00C4C2

bbs #0x02, 0x419a, 0xc51b - is the disassembled command. Read the software manual to see what its actually doing (it helps to print and bind a copy to quickly flip through. Note the syntax between the software manual and the disassembly is slightly different, but close enough where its easy to figure out.

So in the case of the above:

bbs - branch on bit(s) set

So if variable 419a (this is in RAM) has bit (flag) 02 set branch to location c51b

Isn't assembly fun?
Calum is offline   Reply With Quote
Old 07-26-2007, 10:18 PM   #9 (permalink)
soylent green is people
 
Calum's Avatar

Approved vendor
 
Join Date: Dec 2001
Location: Lubbock, TX
Trader Rating: 24 (100%)

Quote:
Originally Posted by El Gabito View Post
I have determined on my own that it would be extremely helpful in finding relationships between the data to store all of this information in a database. I have set up a MySQL database, and will await further information before I begin inputting data.
Cool, how does that work?
Calum is offline   Reply With Quote
Old 07-26-2007, 11:10 PM   #10 (permalink)
Now accepting donations!!
 
El Gabito's Avatar

 
Join Date: Jul 2003
Location: Indianapolis, IN
Trader Rating: 6 (100%)

A database is basically a bunch of tables that contain rows of data. The key thing is that queries can be manipulated to bring back data that could likely help you guys quite a bit in this.

An example is the IMDB. Visiting the "I Now Pronounce You Chuck and Larry" page, if you scroll down you can see that it shows you every actor associated with that film. If you click on Adam Sandler, you can then see information about him as well as all movies he is associated with.

I am more of a "backend" guy - so I'll have to get some help with the frontend in order to make it usable by the general public.

Honestly the most difficult part will be figuring out how to structure everything. For example, should the disassembled command in the example I gave you be four different fields or all in one?

I'll have to learn a lot about this and mull over it a bit, but I think it will help quite a bit.
El Gabito is offline   Reply With Quote
Old 07-26-2007, 11:29 PM   #11 (permalink)
Now accepting donations!!
 
El Gabito's Avatar

 
Join Date: Jul 2003
Location: Indianapolis, IN
Trader Rating: 6 (100%)

An example of a table:

Code:
+--------+------------+------+--------+
| f_name | l_name     | age  | salary |
+--------+------------+------+--------+
| John   | MacFarland |   34 |  80000 |
| Hassan | Rajabi     |   33 |  90000 |
| Paul   | Simon      |   43 |  85000 |
| Roger  | Lewis      |   35 | 100000 |
| Danny  | Gibson     |   34 |  90000 |
| Mike   | Harper     |   36 | 120000 |
| Peter  | Champion   |   36 | 120000 |
+--------+------------+------+--------+
You could have another table with job descriptions, job titles, and salaries for that position. So then from knowing Paul Simon made 85000, you could easily figure out what job title Paul has because you know how that relates to the jobs table (it relates on the salaries).

Sorry if that's confusing - it's hard to wrap your head around if you've not worked w/ it hands on.
El Gabito is offline   Reply With Quote
Old 07-27-2007, 11:06 PM   #12 (permalink)
soylent green is people
 
Calum's Avatar

Approved vendor
 
Join Date: Dec 2001
Location: Lubbock, TX
Trader Rating: 24 (100%)

I'd like a db where I can list different tables from each ecu that have the same function, and quickly compare the contents of each table between the different ecus. Is that doable?
Calum is offline   Reply With Quote
Old 07-28-2007, 12:45 AM   #13 (permalink)
Now accepting donations!!
 
El Gabito's Avatar

 
Join Date: Jul 2003
Location: Indianapolis, IN
Trader Rating: 6 (100%)

Quote:
Originally Posted by Calum View Post
I'd like a db where I can list different tables from each ecu that have the same function, and quickly compare the contents of each table between the different ecus. Is that doable?
Yup, we just need to figure out a way to input all of the data. Too bad you are all the way in Tejas, it would be much easier to do in person We can figure it out though.

The first thing I would do is probably do is put the known variables (memory.txt) in a table. Variables in one BIN are not necessarily the same in another are they? If this is the case, or if it is unknown, I would have three columns in this table: bin_id (91SR for example), hex_id (if that's what 0x4475 is), and definition.

The code blocks will be a bit more difficult just because I'm not sure quite yet what everything is and how it relates.
El Gabito is offline   Reply With Quote
Old 07-28-2007, 01:32 AM   #14 (permalink)
Now accepting donations!!
 
El Gabito's Avatar

 
Join Date: Jul 2003
Location: Indianapolis, IN
Trader Rating: 6 (100%)

I've created one table w/ the contents of memory.txt in a table titled hex_definitions as follows:

Code:
bin_id  hex_id  definition                                    
------  ------  ----------------------------------------------
91SR    0x4475  CAS Pos (RPM) MSB                             
91SR    0x4474  CAS Pos (RPM) LSB                             
91SR    0x41CF  CAS Ref (RPM) MSB                             
91SR    0x41CE  CAS Ref (RPM) LSB                             
91SR    0x4205  MAF Voltage MSB                               
91SR    0x4204  MAF Voltage LSB                               
91SR    0x41C8  Coolant Temp (C)                              
91SR    0x4467  02 Voltage                                    
91SR    0x41D4  Vehicle Speed                                 
91SR    0x4261  Battery Voltage                               
91SR    0x4468  TPS Voltage                                   
91SR    0x440E  Digital bit register                          
91SR    0x426D  Injection time MSB                            
91SR    0x426C  Injection time LSB                            
91SR    0x446F  Ignition timing                               
91SR    0x4342  AAC Valve %                                   
91SR    0x446E  A/F Alpha (S)                                 
91SR    0x42D0  A/F Alpha (L)                                 
91SR    0x440B  Digital control register 1                    
91SR    0x440C  Digital control register 2                    
91SR    0x440F  M/R F/C MNT                                   
91SR    0x41C9  Coolant Temp (%)                              
91SR    0x41DD  RPM/2                                         
91SR    0x41DA  RPM (full scale)                              
91SR    0x41DC  RPM (not full scale)                          
91SR    0x41D7  RPM x 4 MSB                                   
91SR    0x41D6  RPM x 4 LSB                                   
91SR    0x4250  B/Fuel Schedule                               
91SR    0x4251  TP (Load)                                     
91SR    0x4292  Alternate TP (Load)                           
91SR    0x41E2  Absolute TPS %                                
91SR    0x800A  K Value                                       
91SR    0x801A  Injector Voltage Adj                          
91SR    0x801B  Injector Latency                              
91SR    0x8031  Top Speed Limit                               
91SR    0x8056  5th Gear Rev Limit                            
91SR    0x805C  Rev Limit                                     
91SR    0x8038  Feedback Control Flags                        
91SR    0x8037  Unkown Control Flags                          
91SR    0x8FF1  ROM Label                                     
91SR    0x8700  VQ Table                                      
91SR    0x8610  Water Temp Conv Table                         
91SR    0x83A0  TTP Max                                       
91SR    0x8A00  TTP Min                                       
91SR    0x8100  Primary Fuel Map                              
91SR    0x8E00  Secondary Fuel Map                            
91SR    0x80E0  RPM Scale - Fuel                              
91SR    0x80F0  TP Scale - Fuel                               
91SR    0x8D00  Primary Timing Map                            
91SR    0x8800  Secondary Timing Map                          
91SR    0x8480  RPM Scale - Fuel                              
91SR    0x8490  TP Scale - Timing                             
91SR    0x8320  Engine Cranking Pulsewidth                    
91SR    0x8310  Engine Cranking Enrichment                    
91SR    0x8330  Engine Cranking Pulse Offset                  
91SR    0x8450  Engine Cranking Ign Timing                    
91SR    0x8390  Q Offset RPM Table                            
91SR    0x8200  Injector RPM Transient Response               
91SR    0x8230  Throttle Enrichment - Main                    
91SR    0x8C20  Cold Start Enrichment - Stationary - Main     
91SR    0x8C30  Cold Start Enrichment - Stationary - Secondary
91SR    0x80C0  Cold Start Enrichment - Moving - Main         
91SR    0x80D0  Cold Start Enrichment - Moving - Secondary    
91SR    0x8FC0  Throttle Enrichment - Fast Movement           
91SR    0x8220  Spray Water Temp Offset                       
91SR    0x84A0  Timing Advance vs Temp                        
91SR    0x84B0  Timing Advance - Decel                        
91SR    0x80A0  Throttle Open Offset                          
91SR    0x84C8  Idle Stabalization Timing Retard              
91SR    0x8660  Base Target Idle RPM                          
91SR    0x8470  Base Idle Timing - In Gear                    
91SR    0x8460  Base Idle Timing - In Neutral                 
91SR    0x8500  TPS Closed Timing                             
91SR    0x8AC0  Base Decel Loss Ratio                         
91SR    0x8AD0  Decel Loss vs RPM                             
91SR    0x8AE0  Decel Loss vs Water Temp
This weekend I will try to get all of the memory files dumped in here and see what we can do about the other code blocks.
El Gabito is offline   Reply With Quote
Old 07-28-2007, 02:13 AM   #15 (permalink)
Now accepting donations!!
 
El Gabito's Avatar

 
Join Date: Jul 2003
Location: Indianapolis, IN
Trader Rating: 6 (100%)

grrr... I hate it when I get started on something, I have to finish it. I made some modifications, and imported all of the memory.txt files. There were a couple I didn't know the years/OBD for, the year could be helpful for determining changes made in the future (depending on how big this gets).

Code:
    id    year  chassis_code  engine_code     obd  hex_id  definition                                    
------  ------  ------------  -----------  ------  ------  ----------------------------------------------
     1    1991  B13           SR20DE            1  0x4475  CAS Pos (RPM) MSB                             
     2    1991  B13           SR20DE            1  0x4474  CAS Pos (RPM) LSB                             
     3    1991  B13           SR20DE            1  0x41CF  CAS Ref (RPM) MSB                             
     4    1991  B13           SR20DE            1  0x41CE  CAS Ref (RPM) LSB                             
     5    1991  B13           SR20DE            1  0x4205  MAF Voltage MSB                               
     6    1991  B13           SR20DE            1  0x4204  MAF Voltage LSB                               
     7    1991  B13           SR20DE            1  0x41C8  Coolant Temp (C)                              
     8    1991  B13           SR20DE            1  0x4467  02 Voltage                                    
     9    1991  B13           SR20DE            1  0x41D4  Vehicle Speed                                 
    10    1991  B13           SR20DE            1  0x4261  Battery Voltage                               
    11    1991  B13           SR20DE            1  0x4468  TPS Voltage                                   
    12    1991  B13           SR20DE            1  0x440E  Digital bit register                          
    13    1991  B13           SR20DE            1  0x426D  Injection time MSB                            
    14    1991  B13           SR20DE            1  0x426C  Injection time LSB                            
    15    1991  B13           SR20DE            1  0x446F  Ignition timing                               
    16    1991  B13           SR20DE            1  0x4342  AAC Valve %                                   
    17    1991  B13           SR20DE            1  0x446E  A/F Alpha (S)                                 
    18    1991  B13           SR20DE            1  0x42D0  A/F Alpha (L)                                 
    19    1991  B13           SR20DE            1  0x440B  Digital control register 1                    
    20    1991  B13           SR20DE            1  0x440C  Digital control register 2                    
    21    1991  B13           SR20DE            1  0x440F  M/R F/C MNT                                   
    22    1991  B13           SR20DE            1  0x41C9  Coolant Temp (%)                              
    23    1991  B13           SR20DE            1  0x41DD  RPM/2                                         
    24    1991  B13           SR20DE            1  0x41DA  RPM (full scale)                              
    25    1991  B13           SR20DE            1  0x41DC  RPM (not full scale)                          
    26    1991  B13           SR20DE            1  0x41D7  RPM x 4 MSB                                   
    27    1991  B13           SR20DE            1  0x41D6  RPM x 4 LSB                                   
    28    1991  B13           SR20DE            1  0x4250  B/Fuel Schedule                               
    29    1991  B13           SR20DE            1  0x4251  TP (Load)                                     
    30    1991  B13           SR20DE            1  0x4292  Alternate TP (Load)                           
    31    1991  B13           SR20DE            1  0x41E2  Absolute TPS %                                
    32    1991  B13           SR20DE            1  0x800A  K Value                                       
    33    1991  B13           SR20DE            1  0x801A  Injector Voltage Adj                          
    34    1991  B13           SR20DE            1  0x801B  Injector Latency                              
    35    1991  B13           SR20DE            1  0x8031  Top Speed Limit                               
    36    1991  B13           SR20DE            1  0x8056  5th Gear Rev Limit                            
    37    1991  B13           SR20DE            1  0x805C  Rev Limit                                     
    38    1991  B13           SR20DE            1  0x8038  Feedback Control Flags                        
    39    1991  B13           SR20DE            1  0x8037  Unkown Control Flags                          
    40    1991  B13           SR20DE            1  0x8FF1  ROM Label                                     
    41    1991  B13           SR20DE            1  0x8700  VQ Table                                      
    42    1991  B13           SR20DE            1  0x8610  Water Temp Conv Table                         
    43    1991  B13           SR20DE            1  0x83A0  TTP Max                                       
    44    1991  B13           SR20DE            1  0x8A00  TTP Min                                       
    45    1991  B13           SR20DE            1  0x8100  Primary Fuel Map                              
    46    1991  B13           SR20DE            1  0x8E00  Secondary Fuel Map                            
    47    1991  B13           SR20DE            1  0x80E0  RPM Scale - Fuel                              
    48    1991  B13           SR20DE            1  0x80F0  TP Scale - Fuel                               
    49    1991  B13           SR20DE            1  0x8D00  Primary Timing Map                            
    50    1991  B13           SR20DE            1  0x8800  Secondary Timing Map                          
    51    1991  B13           SR20DE            1  0x8480  RPM Scale - Fuel                              
    52    1991  B13           SR20DE            1  0x8490  TP Scale - Timing                             
    53    1991  B13           SR20DE            1  0x8320  Engine Cranking Pulsewidth                    
    54    1991  B13           SR20DE            1  0x8310  Engine Cranking Enrichment                    
    55    1991  B13           SR20DE            1  0x8330  Engine Cranking Pulse Offset                  
    56    1991  B13           SR20DE            1  0x8450  Engine Cranking Ign Timing                    
    57    1991  B13           SR20DE            1  0x8390  Q Offset RPM Table                            
    58    1991  B13           SR20DE            1  0x8200  Injector RPM Transient Response               
    59    1991  B13           SR20DE            1  0x8230  Throttle Enrichment - Main                    
    60    1991  B13           SR20DE            1  0x8C20  Cold Start Enrichment - Stationary - Main     
    61    1991  B13           SR20DE            1  0x8C30  Cold Start Enrichment - Stationary - Secondary
    62    1991  B13           SR20DE            1  0x80C0  Cold Start Enrichment - Moving - Main         
    63    1991  B13           SR20DE            1  0x80D0  Cold Start Enrichment - Moving - Secondary    
    64    1991  B13           SR20DE            1  0x8FC0  Throttle Enrichment - Fast Movement           
    6