Bump!
I was digging through some ATU code for channel 8 one shot pulse, and I stumbled over a reference to battery voltage with what looked like a map pull.
Code:
; incoming r4 determines which channel/subchannel
ROM:0000A828
ROM:0000A828 SBR_ATU_CH2_CH8_settings: ; CODE XREF: ROM:0000A1B6p
ROM:0000A828 ; sub_A4E0+94p ...
ROM:0000A828 mov.l r14, @-r15
ROM:0000A82A sts.l pr, @-r15
ROM:0000A82C mov.l #ATU_Channel8_Ch2_addresses, r2 ; dcnt8i
ROM:0000A82E add #-4, r15
ROM:0000A830 mov.b r4, @r15
ROM:0000A832 mov.b @r15, r14
ROM:0000A834 extu.b r14, r14
ROM:0000A836 mov r14, r3
ROM:0000A838 shll r14
ROM:0000A83A add r3, r14
ROM:0000A83C mov.w #h'7FFF, r3
ROM:0000A83E shll2 r14
ROM:0000A840 shll r14
ROM:0000A842 add r2, r14
ROM:0000A844 mov.l @(h'C,r14), r4
ROM:0000A846 mov.w @r4, r4
ROM:0000A848 add r3, r4
ROM:0000A84A mov.l @(4,r14), r1
ROM:0000A84C mov.w r4, @r1
ROM:0000A84E mov.l #loc_8000, r0
ROM:0000A850 mov.l @(8,r14), r3
ROM:0000A852 add r0, r4
ROM:0000A854 mov.w r4, @r3
ROM:0000A856 mov.l #sub_E558, r1
ROM:0000A858 jsr @r1 ; sub_E558
ROM:0000A85A mov.l @r14, r4
ROM:0000A85C mov.b @r15, r4
ROM:0000A85E mov #1, r0
ROM:0000A860 mov.l #E_FFFF5DEC_Possible_ATU_Signal, r3
ROM:0000A862 extu.b r4, r4
ROM:0000A864 shll2 r4
ROM:0000A866 shll r4
ROM:0000A868 add r3, r4
ROM:0000A86A mov.b r0, @(5,r4)
ROM:0000A86C mov #0, r0
ROM:0000A86E mov.b r0, @(6,r4)
ROM:0000A870 add #4, r15
ROM:0000A872 lds.l @r15+, pr
ROM:0000A874 rts
ROM:0000A876 mov.l @r15+, r14
ROM:0000A876 ; End of function SBR_ATU_CH2_CH8_settings
ROM:0000A876
ROM:0000A878 ; ---------------------------------------------------------------------------
ROM:0000A878 ; START OF FUNCTION CHUNK FOR sub_A2E8
ROM:0000A878
ROM:0000A878 loc_A878: ; CODE XREF: sub_A2E8+4Cj
ROM:0000A878 ; sub_A4DCj
ROM:0000A878 sts.l pr, @-r15
ROM:0000A87A mov.l #E_SSM_Battery_Volts, r3
ROM:0000A87C mov.l #unk_FFFF5CEC, r2
ROM:0000A87E fmov.s @r3, fr5
ROM:0000A880 mov.l #Table_IgnDwell_unk, r4
ROM:0000A882 mov.l #sub_21B0, r1
ROM:0000A884 jsr @r1 ; sub_21B0
ROM:0000A886 fmov.s @r2, fr4
ROM:0000A888 mov.l #E_FFFF5E1C_Possible_ATU_Signal, r3
ROM:0000A88A lds.l @r15+, pr
ROM:0000A88C rts
ROM:0000A88E mov.w r0, @r3
ROM:0000A88E ; END OF FUNCTION CHUNK FOR sub_A2E8
ROM:0000A88E ; ---------------------------------------------------------------------------
ROM:0000A890 word_A890: .data.w h'7FFF ; DATA XREF: SBR_ATU_CH2_CH8_settings+14r
ROM:0000A892 .data.w h'FFFF
ROM:0000A894 dword_A894: .data.l h'FFFF ; DATA XREF: sub_A5C6+23Er
ROM:0000A898 off_A898: .data.l sub_2098 ; DATA XREF: sub_A5C6:loc_A814r
ROM:0000A89C off_A89C: .data.l ATU_Channel8_Ch2_addresses
ROM:0000A89C ; DATA XREF: SBR_ATU_CH2_CH8_settings+4r
ROM:0000A89C ; dcnt8i
ROM:0000A8A0 dword_A8A0: .data.l h'8000 ; DATA XREF: SBR_ATU_CH2_CH8_settings+26r
ROM:0000A8A4 off_A8A4: .data.l sub_E558 ; DATA XREF: SBR_ATU_CH2_CH8_settings+2Er
ROM:0000A8A8 off_A8A8: .data.l E_FFFF5DEC_Possible_ATU_Signal
ROM:0000A8A8 ; DATA XREF: SBR_ATU_CH2_CH8_settings+38r
ROM:0000A8AC off_A8AC: .data.l E_SSM_Battery_Volts ; DATA XREF: sub_A2E8+592r
ROM:0000A8B0 off_A8B0: .data.l unk_FFFF5CEC ; DATA XREF: sub_A2E8+594r
ROM:0000A8B4 off_A8B4: .data.l Table_IgnDwell_unk ; DATA XREF: sub_A2E8+598r
ROM:0000A8B8 off_A8B8: .data.l sub_21B0 ; DATA XREF: sub_A2E8+59Ar
ROM:0000A8BC off_A8BC: .data.l E_FFFF5E1C_Possible_ATU_Signal
ROM:0000A8BC ; DATA XREF: sub_A2E8+5A0r
Code:
ROM:00096690 Table_IgnDwell_unk:.data.w h'10 ; DATA XREF: sub_A2E8+598o
ROM:00096690 ; ROM:off_A8B4o
ROM:00096692 .data.w 5
ROM:00096694 .data.l IgnDwell_RPM_axis_unk
ROM:00096698 .data.l IgnDwell_Volts_axis_unk
ROM:0009669C .data.l IgnDwell_Data_unk
ROM:000966A0 .data.l 0
Code:
ROM:000CF458 IgnDwell_RPM_axis_unk:.data.l h'43FA0000 ; DATA XREF: ROM:00096694o
ROM:000CF45C .data.l h'447A0000
ROM:000CF460 .data.l h'44BB8000
ROM:000CF464 .data.l h'44FA0000
ROM:000CF468 .data.l h'451C4000
ROM:000CF46C .data.l h'453B8000 ; 500-8000
ROM:000CF470 .data.l h'455AC000
ROM:000CF474 .data.l h'457A0000
ROM:000CF478 .data.l h'458CA000
ROM:000CF47C .data.l h'459C4000
ROM:000CF480 .data.l h'45ABE000
ROM:000CF484 .data.l h'45BB8000
ROM:000CF488 .data.l h'45CB2000
ROM:000CF48C .data.l h'45DAC000
ROM:000CF490 .data.l h'45EA6000
ROM:000CF494 .data.l h'45FA0000
ROM:000CF498 IgnDwell_Volts_axis_unk:.data.l h'41000000 ; DATA XREF: ROM:00096698o
ROM:000CF49C .data.l h'41200000
ROM:000CF4A0 .data.l h'41400000 ; float 8-16
ROM:000CF4A4 .data.l h'41600000
ROM:000CF4A8 .data.l h'41800000
ROM:000CF4AC IgnDwell_Data_unk:.data.w h'AB0 ; DATA XREF: ROM:0009669Co
ROM:000CF4AE .data.w h'AB0
ROM:000CF4B0 .data.w h'AB0
ROM:000CF4B2 .data.w h'9A0
ROM:000CF4B4 .data.w h'830
ROM:000CF4B6 .data.w h'730
ROM:000CF4B8 .data.w h'680
ROM:000CF4BA .data.w h'600
ROM:000CF4BC .data.w h'590
ROM:000CF4BE .data.w h'520
ROM:000CF4C0 .data.w h'4E0
ROM:000CF4C2 .data.w h'4A0
ROM:000CF4C4 .data.w h'460
ROM:000CF4C6 .data.w h'420
ROM:000CF4C8 .data.w h'3F0
ROM:000CF4CA .data.w h'3C0
ROM:000CF4CC .data.w h'950
ROM:000CF4CE .data.w h'950
ROM:000CF4D0 .data.w h'840
ROM:000CF4D2 .data.w h'6E0
ROM:000CF4D4 .data.w h'610
ROM:000CF4D6 .data.w h'580
ROM:000CF4D8 .data.w h'500
ROM:000CF4DA .data.w h'4C0
ROM:000CF4DC .data.w h'470
ROM:000CF4DE .data.w h'430
ROM:000CF4E0 .data.w h'400
ROM:000CF4E2 .data.w h'3D0
ROM:000CF4E4 .data.w h'3B0
ROM:000CF4E6 .data.w h'390
ROM:000CF4E8 .data.w h'360
ROM:000CF4EA .data.w h'350
ROM:000CF4EC .data.w h'7F0
ROM:000CF4EE .data.w h'7E0
ROM:000CF4F0 .data.w h'620
ROM:000CF4F2 .data.w h'550
ROM:000CF4F4 .data.w h'4B0
ROM:000CF4F6 .data.w h'440
ROM:000CF4F8 .data.l h'40003B0, h'3900360, h'3400320, h'30002E0, h'2D002C0
ROM:000CF4F8 .data.l h'4800480, h'4800430, h'3C00380, h'3400310, h'2F002D0
ROM:000CF4F8 .data.l h'2B002A0, h'2800270, h'2600250
ROM:000CF4F8 .datab.l 2, h'3000300
ROM:000CF4F8 .data.l h'30002F0, h'2D002A0, h'2800270, h'2600250, h'2300220
ROM:000CF4F8 .data.l h'2100200
After sampling a few values from the map data, it's nearly identical to the other tables posted.
Defining these tables is pretty easy, there are two references to SSM_Battery_Volts in the low ROM, the first is the A/D Conversion, the second should be this table pull.
This table pull uses a slightly different PULL 2d routine, which incorporates a FMAC instruction to apply a gradient/offset based on incoming registers.
This all makes alot of sense because the timing is controlled by the ATU. Seeing how dwell is such a small time value, the only reasonable way to incorporate it is directly into the timer logic, hence the location in the low ROM.