Well I've tried my best to get this timed launch retard to function, but I just can't seem to get it to work.
If someone could go over this ASM logic.
I've attached a PCMLogger CSV Log of me testing it on the bench.
At ~40 secs the LC goes active (FF819E)
At ~57 secs the LC goes inactive and the timed retard goes active (FF819E) and the Timed Retard Cycle (FF81A0) is updated.
The issue is that after this point I expect that the cycle delta (FF81A4) should be giving an output, but it's not. I'm also not able to deactivate the timed retard via the TPS which is in the second function.
Function 1 Jump Patched in at ROM:0003B912
Code: Select all
ROM:0008A900
ROM:0008A900 ; =============== S U B R O U T I N E =======================================
ROM:0008A900
ROM:0008A900
ROM:0008A900 sub_8A900: ; CODE XREF: sub_3B82A+E8p
ROM:0008A900 jsr sub_2696E
ROM:0008A906 tst.b ($FFFFB370).w //DBW Enable
ROM:0008A90A beq.s loc_8A912
ROM:0008A90C move.w ($FFFFA598).w,d4 //DBW TPS
ROM:0008A910 bra.s loc_8A916
ROM:0008A912 ; ---------------------------------------------------------------------------
ROM:0008A912
ROM:0008A912 loc_8A912: ; CODE XREF: sub_8A900+Aj
ROM:0008A912 move.w ($FFFFAB64).w,d4 //NON-DBW TPS
ROM:0008A916
ROM:0008A916 loc_8A916: ; CODE XREF: sub_8A900+10j
ROM:0008A916 move.w ($FFFFA562).w,d3 //Engine Speed
ROM:0008A91A cmp.w (word_8AB00).l,d3 // LC Engine Speed
ROM:0008A920 bcc.w loc_8A9CC
ROM:0008A924 tst.b ($FFFF819E).w // LC Status
ROM:0008A928 beq.s loc_8A97E
ROM:0008A92A tst.b ($FFFFAF3A).w // Brake Pedal
ROM:0008A92E beq.s loc_8A94A
ROM:0008A930 tst.b ($FFFFAF3A).w // Brake Pedal (Need to confirm clutch ram address before changing this)
ROM:0008A934 beq.s loc_8A94A
ROM:0008A936 move.w ($FFFFAEBC).w,d3 // Vehicle Speed Filtered
ROM:0008A93A cmp.w (word_8AB02).l,d3
ROM:0008A940 bhi.s loc_8A94A
ROM:0008A942 cmp.w (word_8AB04).l,d4
ROM:0008A948 bhi.s loc_8A970
ROM:0008A94A
ROM:0008A94A loc_8A94A: ; CODE XREF: sub_8A900+2Ej
ROM:0008A94A ; sub_8A900+34j ...
ROM:0008A94A clr.b ($FFFF819E).w // Disable LC if a parameter is no longer satisfied
ROM:0008A94E move.w ($FFFFAEBC).w,d3 // Vehicle Speed
ROM:0008A952 cmp.w (word_8AB02).l,d3
ROM:0008A958 bhi.s locret_8A9CE
ROM:0008A95A cmp.w (word_8AB04).l,d4
ROM:0008A960 bcs.s locret_8A9CE
ROM:0008A962 move.b #1,($FFFF819F).w // Enable timed spark retard
ROM:0008A968 move.w ($FFFFB544).w,($FFFF81A0).w // Move cycle counter to a local copy when timed retard is enabled
ROM:0008A96E bra.s locret_8A9CE
ROM:0008A970 ; ---------------------------------------------------------------------------
ROM:0008A970
ROM:0008A970 loc_8A970: ; CODE XREF: sub_8A900+48j
ROM:0008A970 move.w ($FFFFA562).w,d3 // Engine speed
ROM:0008A974 cmp.w (word_8AB06).l,d3
ROM:0008A97A bcc.s loc_8A9CC
ROM:0008A97C bra.s locret_8A9CE
ROM:0008A97E ; ---------------------------------------------------------------------------
ROM:0008A97E
ROM:0008A97E loc_8A97E: ; CODE XREF: sub_8A900+28j
ROM:0008A97E tst.b ($FFFFAF3A).w // Brake Pedal
ROM:0008A982 beq.s loc_8A9A6
ROM:0008A984 tst.b ($FFFFAF3A).w // Brake Pedal (Need to confirm clutch ram address before changing this)
ROM:0008A988 beq.s loc_8A9A6
ROM:0008A98A move.w ($FFFFAEBC).w,d3 // Vehicle Speed
ROM:0008A98E cmp.w (word_8AB02).l,d3
ROM:0008A994 bhi.s loc_8A9A6
ROM:0008A996 cmp.w (word_8AB04).l,d4
ROM:0008A99C bcs.s loc_8A9A6
ROM:0008A99E move.b #1,($FFFF819E).w // Enable LC if all parameters are satisifed
ROM:0008A9A4 bra.s locret_8A9CE
ROM:0008A9A6 ; ---------------------------------------------------------------------------
ROM:0008A9A6
ROM:0008A9A6 loc_8A9A6: ; CODE XREF: sub_8A900+82j
ROM:0008A9A6 ; sub_8A900+88j ...
ROM:0008A9A6 tst.b ($FFFFAF3A).w // FFS Brake Pedal (Need to confirm clutch ram address before changing this)
ROM:0008A9AA beq.s locret_8A9CE
ROM:0008A9AC move.w ($FFFFAEBC).w,d3 // Compare vehicle speed for FFS
ROM:0008A9B0 cmp.w (word_8AB08).l,d3
ROM:0008A9B6 bcs.s locret_8A9CE
ROM:0008A9B8 cmp.w (word_8AB04).l,d4 // Compare TPS for FFS
ROM:0008A9BE bcs.s locret_8A9CE
ROM:0008A9C0 move.w ($FFFFA562).w,d3 // Compare engine speed for FFS
ROM:0008A9C4 cmp.w (word_8AB0C).l,d3
ROM:0008A9CA bcs.s locret_8A9CE
ROM:0008A9CC
ROM:0008A9CC loc_8A9CC: ; CODE XREF: sub_8A900+20j
ROM:0008A9CC ; sub_8A900+7Aj
ROM:0008A9CC clr.l d6 // Clear dwell value
ROM:0008A9CE
ROM:0008A9CE locret_8A9CE: ; CODE XREF: sub_8A900+58j
ROM:0008A9CE ; sub_8A900+60j ...
ROM:0008A9CE rts
ROM:0008A9CE ; End of function sub_8A900
ROM:0008A9CE
Function 2 Jump Patched in at ROM:0003A48E
Code: Select all
ROM:0008A9D0
ROM:0008A9D0 ; =============== S U B R O U T I N E =======================================
ROM:0008A9D0
ROM:0008A9D0
ROM:0008A9D0 sub_8A9D0: ; CODE XREF: sub_3A436+58p
ROM:0008A9D0 jsr sub_26994
ROM:0008A9D6 tst.b ($FFFF819F).w // Test if timed retard active
ROM:0008A9DA beq.s locret_8AA22
ROM:0008A9DC tst.b ($FFFFB370).w // DBW Enable
ROM:0008A9E0 beq.s loc_8A9E8
ROM:0008A9E2 move.w ($FFFFA598).w,d3 // DBW TPS
ROM:0008A9E6 bra.s loc_8A9EC
ROM:0008A9E8 ; ---------------------------------------------------------------------------
ROM:0008A9E8
ROM:0008A9E8 loc_8A9E8: ; CODE XREF: sub_8A9D0+10j
ROM:0008A9E8 move.w ($FFFFAB64).w,d3 // Non-DBW TPS
ROM:0008A9EC
ROM:0008A9EC loc_8A9EC: ; CODE XREF: sub_8A9D0+16j
ROM:0008A9EC cmp.w (word_8AB04).l,d3
ROM:0008A9F2 bcs.s loc_8AA1E
ROM:0008A9F4 clr.l d3
ROM:0008A9F6 move.w ($FFFF81A0).w,d1 // Cycle counter when timed retard was activated
ROM:0008A9FA move.w ($FFFFB544).w,d3 // Cycle counter
ROM:0008A9FE sub.w d1,d3
ROM:0008AA00 move.w d3,($FFFF81A4).w // Delta cycles
ROM:0008AA04 mulu.w #$10,d3
ROM:0008AA08 cmpi.w #$2800,d3
ROM:0008AA0C bcc.s loc_8AA1E
ROM:0008AA0E tbls.w (word_8AB0E).l,d3
ROM:0008AA16 add.w d3,d0
ROM:0008AA18 move.w d3,($FFFF81A2).w // Save result from table lookup
ROM:0008AA1C bra.s locret_8AA22
ROM:0008AA1E ; ---------------------------------------------------------------------------
ROM:0008AA1E
ROM:0008AA1E loc_8AA1E: ; CODE XREF: sub_8A9D0+22j
ROM:0008AA1E ; sub_8A9D0+3Cj
ROM:0008AA1E clr.b ($FFFF819F).w // Clear timed retard status
ROM:0008AA22
ROM:0008AA22 locret_8AA22: ; CODE XREF: sub_8A9D0+Aj
ROM:0008AA22 ; sub_8A9D0+4Cj
ROM:0008AA22 rts
ROM:0008AA22 ; End of function sub_8A9D0
ROM:0008AA22