vwnut8392
|
|
« on: August 29, 2017, 12:13:44 PM »
|
|
|
i have been working on trying to make launch control work on a 2004 V8 S4. i used the auto patch script to start which worked but botched up the sub routine a little as i had discovered in IDA. The auto patcher did not place vfil_w properly in the sub routine but i corrected that. the other thing i noticed is that the sub routine seems to not access b_br. im starting to think that the .ecu file what was generated is not proper but i would like some other heads to have a look and see if they can find the error. This is the patch that was generated by the auto patcher that made the vfil_w error. the error i found is in red. according to the .ecu file vfil_w is at 0x00C620. seg018:F7420 ; =============== S U B R O U T I N E ======================================= seg018:F7420 seg018:F7420 seg018:F7420 sub_8F7420: seg018:F7420 jnb B_kuppl.8, loc_8F744A ; Relative Jump if Bit Clear [color=red][b]seg018:F7424 mov r4, word_816200 ; Move Word[/b][/color] seg018:F7428 exts #81h, #1 ; 'ü' ; Begin Extended Segment Sequence seg018:F742C mov r9, word_817880 ; Move Word seg018:F7430 cmp r4, r9 ; Integer Compare seg018:F7432 jmpr cc_NC, loc_8F744A ; Relative Conditional Jump seg018:F7434 mov r4, nmot_w ; Move Word seg018:F7438 exts #81h, #1 ; 'ü' ; Begin Extended Segment Sequence seg018:F743C mov r9, word_817882 ; Move Word seg018:F7440 cmp r4, r9 ; Integer Compare seg018:F7442 jmpr cc_ULE, loc_8F744A ; Relative Conditional Jump seg018:F7444 movb tsrldyn, ZEROS ; Move Byte seg018:F7448 jmpr cc_UC, loc_8F74A8 ; Relative Conditional Jump seg018:F744A ; --------------------------------------------------------------------------- seg018:F744A seg018:F744A loc_8F744A: ; CODE XREF: sub_8F7420j seg018:F744A ; sub_8F7420+12j ... seg018:F744A jnb B_kuppl.8, loc_8F74A0 ; Relative Jump if Bit Clear seg018:F744E jb B_kuppl.4, loc_8F7496 ; Relative Jump if Bit Set seg018:F7452 mov r4, nmot_w ; Move Word seg018:F7456 exts #81h, #1 ; 'ü' ; Begin Extended Segment Sequence seg018:F745A mov r9, word_817886 ; Move Word seg018:F745E cmp r4, r9 ; Integer Compare seg018:F7460 jmpr cc_ULE, loc_8F7496 ; Relative Conditional Jump seg018:F7462 movbz r4, wped ; Move Byte Zero Extend seg018:F7466 exts #81h, #1 ; 'ü' ; Begin Extended Segment Sequence seg018:F746A movbz r9, byte_817888 ; Move Byte Zero Extend seg018:F746E cmp r4, r9 ; Integer Compare seg018:F7470 jmpr cc_ULE, loc_8F7496 ; Relative Conditional Jump seg018:F7472 exts #38h, #1 ; '8' ; Begin Extended Segment Sequence seg018:F7476 mov r4, word_384FF0 ; Move Word seg018:F747A exts #81h, #1 ; 'ü' ; Begin Extended Segment Sequence seg018:F747E mov r9, word_817884 ; Move Word seg018:F7482 cmp r4, r9 ; Integer Compare seg018:F7484 jmpr cc_NC, loc_8F74A8 ; Relative Conditional Jump seg018:F7486 movb tsrldyn, ZEROS ; Move Byte seg018:F748A add r4, #1 ; Integer Addition seg018:F748C exts #38h, #1 ; '8' ; Begin Extended Segment Sequence seg018:F7490 movb word_384FF0, rl4 ; Move Byte seg018:F7494 jmpr cc_UC, loc_8F74A8 ; Relative Conditional Jump seg018:F7496 ; --------------------------------------------------------------------------- seg018:F7496 seg018:F7496 loc_8F7496: ; CODE XREF: sub_8F7420+2Ej seg018:F7496 ; sub_8F7420+40j ... seg018:F7496 exts #38h, #1 ; '8' ; Begin Extended Segment Sequence seg018:F749A mov word_384FF0, ONES ; Move Word seg018:F749E jmpr cc_UC, loc_8F74A8 ; Relative Conditional Jump seg018:F74A0 ; --------------------------------------------------------------------------- seg018:F74A0 seg018:F74A0 loc_8F74A0: ; CODE XREF: sub_8F7420:loc_8F744Aj seg018:F74A0 exts #38h, #1 ; '8' ; Begin Extended Segment Sequence seg018:F74A4 mov word_384FF0, ZEROS ; Move Word seg018:F74A8 seg018:F74A8 loc_8F74A8: ; CODE XREF: sub_8F7420+28j seg018:F74A8 ; sub_8F7420+64j ... seg018:F74A8 movb rl4, byte_81315F ; Move Byte seg018:F74AC rets ; Return from Inter-Segment Subroutine seg018:F74AC ; End of function sub_8F7420 This is my version after i fixed vfil_w. seg018:F7420 ; =============== S U B R O U T I N E ======================================= seg018:F7420 seg018:F7420 seg018:F7420 sub_8F7420: seg018:F7420 jnb B_kuppl.8, loc_8F744A ; Relative Jump if Bit Clear seg018:F7424 mov r4, vfil_w ; Move Word seg018:F7428 exts #81h, #1 ; 'ü' ; Begin Extended Segment Sequence seg018:F742C mov r9, Vehicle_Speed_Const ; Move Word seg018:F7430 cmp r4, r9 ; Integer Compare seg018:F7432 jmpr cc_NC, loc_8F744A ; Relative Conditional Jump seg018:F7434 mov r4, nmot_w ; Move Word seg018:F7438 exts #81h, #1 ; 'ü' ; Begin Extended Segment Sequence seg018:F743C mov r9, Engine_RPM_Const ; Move Word seg018:F7440 cmp r4, r9 ; Integer Compare seg018:F7442 jmpr cc_ULE, loc_8F744A ; Relative Conditional Jump seg018:F7444 movb tsrldyn, ZEROS ; Move Byte seg018:F7448 jmpr cc_UC, loc_8F74A8 ; Relative Conditional Jump seg018:F744A ; --------------------------------------------------------------------------- seg018:F744A seg018:F744A loc_8F744A: ; CODE XREF: sub_8F7420j seg018:F744A ; sub_8F7420+12j ... seg018:F744A jnb B_kuppl.8, loc_8F74A0 ; Relative Jump if Bit Clear seg018:F744E jb B_kuppl.4, loc_8F7496 ; Relative Jump if Bit Set seg018:F7452 mov r4, nmot_w ; Move Word seg018:F7456 exts #81h, #1 ; 'ü' ; Begin Extended Segment Sequence seg018:F745A mov r9, Engine_RPM_Const_NLS ; Move Word seg018:F745E cmp r4, r9 ; Integer Compare seg018:F7460 jmpr cc_ULE, loc_8F7496 ; Relative Conditional Jump seg018:F7462 movbz r4, wped ; Move Byte Zero Extend seg018:F7466 exts #81h, #1 ; 'ü' ; Begin Extended Segment Sequence seg018:F746A movbz r9, TPS_Percent_NLS ; Move Byte Zero Extend seg018:F746E cmp r4, r9 ; Integer Compare seg018:F7470 jmpr cc_ULE, loc_8F7496 ; Relative Conditional Jump seg018:F7472 exts #38h, #1 ; '8' ; Begin Extended Segment Sequence seg018:F7476 mov r4, Ign_Off_Time_RAM ; Move Word seg018:F747A exts #81h, #1 ; 'ü' ; Begin Extended Segment Sequence seg018:F747E mov r9, Ign_Off_Time_NLS ; Move Word seg018:F7482 cmp r4, r9 ; Integer Compare seg018:F7484 jmpr cc_NC, loc_8F74A8 ; Relative Conditional Jump seg018:F7486 movb tsrldyn, ZEROS ; Move Byte seg018:F748A add r4, #1 ; Integer Addition seg018:F748C exts #38h, #1 ; '8' ; Begin Extended Segment Sequence seg018:F7490 movb Ign_Off_Time_RAM, rl4 ; Move Byte seg018:F7494 jmpr cc_UC, loc_8F74A8 ; Relative Conditional Jump seg018:F7496 ; --------------------------------------------------------------------------- seg018:F7496 seg018:F7496 loc_8F7496: ; CODE XREF: sub_8F7420+2Ej seg018:F7496 ; sub_8F7420+40j ... seg018:F7496 exts #38h, #1 ; '8' ; Begin Extended Segment Sequence seg018:F749A mov Ign_Off_Time_RAM, ONES ; Move Word seg018:F749E jmpr cc_UC, loc_8F74A8 ; Relative Conditional Jump seg018:F74A0 ; --------------------------------------------------------------------------- seg018:F74A0 seg018:F74A0 loc_8F74A0: ; CODE XREF: sub_8F7420:loc_8F744Aj seg018:F74A0 exts #38h, #1 ; '8' ; Begin Extended Segment Sequence seg018:F74A4 mov Ign_Off_Time_RAM, ZEROS ; Move Word seg018:F74A8 seg018:F74A8 loc_8F74A8: ; CODE XREF: sub_8F7420+28j seg018:F74A8 ; sub_8F7420+64j ... seg018:F74A8 movb rl4, byte_81315F ; Move Byte seg018:F74AC rets ; Return from Inter-Segment Subroutine seg018:F74AC ; End of function sub_8F7420 seg018:F74AC seg018:F74AE seg018:F74AE ; =============== S U B R O U T I N E ======================================= I attached the .ecu file that was output from ME7 logger. I hope someone can see the error that i cannot find.
|