Below is a snippet of Lean Cruise for the 98 3800 firebird bin 09352823. If anybody wants to take a stab at reverse engineering it I can help. It's not like my 2004 code, looks simpler.
Code: Select all
ROM:0001D928 sLeanCruise: ; CODE XREF: sub_1D3A4:loc_1D838p
ROM:0001D928 movem.l d1-d2,-(sp) ; Move Multiple Registers
ROM:0001D92C move.w (word_75B08).l,d1 ; Move Data from Source to Destination
ROM:0001D932 move.w (word_FFFF9FBA).w,d4 ; Move Data from Source to Destination
ROM:0001D936 cmp.w d1,d4 ; Compare
ROM:0001D938 bgt.s loc_1D968 ; Branch if Greater Than
ROM:0001D93A cmp.w (word_75B0A).l,d4 ; Compare
ROM:0001D940 blt.s loc_1D968 ; Branch if Less Than
ROM:0001D942 cmp.w (word_FFFF9FBE).w,d1 ; Compare
ROM:0001D946 blt.s loc_1D968 ; Branch if Less Than
ROM:0001D948 move.w (word_FFFF9FBE).w,d3 ; Move Data from Source to Destination
ROM:0001D94C cmp.w (word_75B0A).l,d3 ; Compare
ROM:0001D952 blt.s loc_1D968 ; Branch if Less Than
ROM:0001D954 btst #6,(byte_FFFF9DB2).w ; Test a Bit
ROM:0001D95A bne.s loc_1D968 ; Branch if Not Equal
ROM:0001D95C tst.b (byte_FFFF9130).w ; Test an Operand
ROM:0001D960 bne.s loc_1D968 ; Branch if Not Equal
ROM:0001D962 tst.b (byte_FFFF90F6).w ; Test an Operand
ROM:0001D966 beq.s loc_1D976 ; Branch if Equal
ROM:0001D968
ROM:0001D968 loc_1D968: ; CODE XREF: sLeanCruise+10j
ROM:0001D968 ; sLeanCruise+18j ...
ROM:0001D968 clr.l (pLeanCruiseAFRAdder).w ; Clear an Operand
ROM:0001D96C move.b #1,(byte_FFFF9106).w ; Move Data from Source to Destination
ROM:0001D972 bra.w loc_1DA82 ; Branch Always
ROM:0001D976 ; ---------------------------------------------------------------------------
ROM:0001D976
ROM:0001D976 loc_1D976: ; CODE XREF: sLeanCruise+3Ej
ROM:0001D976 btst #4,(byte_FFFF9DB4).w ; Test a Bit
ROM:0001D97C beq.s loc_1D9F4 ; Branch if Equal
ROM:0001D97E tst.b (byte_FFFF9106).w ; Test an Operand
ROM:0001D982 bne.s loc_1D9F4 ; Branch if Not Equal
ROM:0001D984 move.w (word_FFFF9C56).w,d4 ; Move Data from Source to Destination
ROM:0001D988 cmp.w (word_75B00).l,d4 ; Compare
ROM:0001D98E bcc.s loc_1D9F4 ; Branch if Carry CLear
ROM:0001D990 move.w (word_FFFF9C56).w,d4 ; Move Data from Source to Destination
ROM:0001D994 cmp.w (word_75B02).l,d4 ; Compare
ROM:0001D99A bls.s loc_1D9F4 ; Branch if Low or Same
ROM:0001D99C move.w (word_FFFF95BA).w,d4 ; Move Data from Source to Destination
ROM:0001D9A0 cmp.w (word_75B04).l,d4 ; Compare
ROM:0001D9A6 bcc.s loc_1D9F4 ; Branch if Carry CLear
ROM:0001D9A8 move.w (word_FFFF95BA).w,d4 ; Move Data from Source to Destination
ROM:0001D9AC cmp.w (word_75B06).l,d4 ; Compare
ROM:0001D9B2 bls.s loc_1D9F4 ; Branch if Low or Same
ROM:0001D9B4 move.w (word_FFFF9104).w,d4 ; Move Data from Source to Destination
ROM:0001D9B8 cmp.w (word_75AEA).l,d4 ; Compare
ROM:0001D9BE bcc.s loc_1D9F4 ; Branch if Carry CLear
ROM:0001D9C0 movea.l (dword_FFFF9FC6).w,a2 ; Move Address
ROM:0001D9C4 move.w (word_FFFF9104).w,d4 ; Move Data from Source to Destination
ROM:0001D9C8 add.w (a2),d4 ; Add
ROM:0001D9CA bcc.s loc_1D9D0 ; Branch if Carry CLear
ROM:0001D9CC move.w #$FFFF,d4 ; Move Data from Source to Destination
ROM:0001D9D0
ROM:0001D9D0 loc_1D9D0: ; CODE XREF: sLeanCruise+A2j
ROM:0001D9D0 move.w d4,(word_FFFF9104).w ; Move Data from Source to Destination
ROM:0001D9D4 tst.b (byte_FFFF93F2).w ; Test an Operand
ROM:0001D9D8 beq.w loc_1DA82 ; Branch if Equal
ROM:0001D9DC movea.l (dword_FFFF9FC6).w,a2 ; Move Address
ROM:0001D9E0 move.w (word_FFFF9118).w,d4 ; Move Data from Source to Destination
ROM:0001D9E4 add.w (a2),d4 ; Add
ROM:0001D9E6 bcc.s loc_1D9EC ; Branch if Carry CLear
ROM:0001D9E8 move.w #$FFFF,d4 ; Move Data from Source to Destination
ROM:0001D9EC
ROM:0001D9EC loc_1D9EC: ; CODE XREF: sLeanCruise+BEj
ROM:0001D9EC move.w d4,(word_FFFF9118).w ; Move Data from Source to Destination
ROM:0001D9F0 bra.w loc_1DA82 ; Branch Always
ROM:0001D9F4 ; ---------------------------------------------------------------------------
ROM:0001D9F4
ROM:0001D9F4 loc_1D9F4: ; CODE XREF: sLeanCruise+54j
ROM:0001D9F4 ; sLeanCruise+5Aj ...
ROM:0001D9F4 move.w (word_FFFF9104).w,d4 ; Move Data from Source to Destination
ROM:0001D9F8 cmp.w (word_75AEA).l,d4 ; Compare
ROM:0001D9FE bcs.w loc_1DA82 ; Branch if Carry Set
ROM:0001DA02 tst.b (byte_FFFF9106).w ; Test an Operand
ROM:0001DA06 bne.s loc_1DA82 ; Branch if Not Equal
ROM:0001DA08 move.w (word_FFFF9118).w,d4 ; Move Data from Source to Destination
ROM:0001DA0C cmp.w (word_75AEC).l,d4 ; Compare
ROM:0001DA12 bls.s loc_1DA48 ; Branch if Low or Same
ROM:0001DA14 move.b #1,(byte_FFFF9106).w ; Move Data from Source to Destination
ROM:0001DA1A move.l (dword_75AF8).l,d4 ; Move Data from Source to Destination
ROM:0001DA20 move.l d4,d2 ; Move Data from Source to Destination
ROM:0001DA22 add.l (dword_FFFF816C).w,d2 ; Add
ROM:0001DA26 add.l (pLeanCruiseAFRAdder).w,d4 ; Add
ROM:0001DA2A move.l (dword_75AF0).l,d1 ; Move Data from Source to Destination
ROM:0001DA30 cmp.l d1,d4 ; Compare
ROM:0001DA32 ble.s loc_1DA3A ; Branch if Less or Equal
ROM:0001DA34 move.l d1,(pLeanCruiseAFRAdder).w ; Move Data from Source to Destination
ROM:0001DA38 bra.s loc_1DA3E ; Branch Always
ROM:0001DA3A ; ---------------------------------------------------------------------------
ROM:0001DA3A
ROM:0001DA3A loc_1DA3A: ; CODE XREF: sLeanCruise+10Aj
ROM:0001DA3A move.l d4,(pLeanCruiseAFRAdder).w ; Move Data from Source to Destination
ROM:0001DA3E
ROM:0001DA3E loc_1DA3E: ; CODE XREF: sLeanCruise+110j
ROM:0001DA3E cmp.l d1,d2 ; Compare
ROM:0001DA40 ble.s loc_1DA7E ; Branch if Less or Equal
ROM:0001DA42
ROM:0001DA42 loc_1DA42: ; CODE XREF: sLeanCruise+154j
ROM:0001DA42 move.l d1,(dword_FFFF816C).w ; Move Data from Source to Destination
ROM:0001DA46 bra.s loc_1DA82 ; Branch Always
ROM:0001DA48 ; ---------------------------------------------------------------------------
ROM:0001DA48
ROM:0001DA48 loc_1DA48: ; CODE XREF: sLeanCruise+EAj
ROM:0001DA48 cmp.w (word_75AEE).l,d4 ; Compare
ROM:0001DA4E bcc.s loc_1DA82 ; Branch if Carry CLear
ROM:0001DA50 move.b #1,(byte_FFFF9106).w ; Move Data from Source to Destination
ROM:0001DA56 move.l (dword_75AFC).l,d4 ; Move Data from Source to Destination
ROM:0001DA5C move.l d4,d2 ; Move Data from Source to Destination
ROM:0001DA5E add.l (dword_FFFF816C).w,d2 ; Add
ROM:0001DA62 add.l (pLeanCruiseAFRAdder).w,d4 ; Add
ROM:0001DA66 move.l (dword_75AF4).l,d1 ; Move Data from Source to Destination
ROM:0001DA6C cmp.l d1,d4 ; Compare
ROM:0001DA6E bge.s loc_1DA76 ; Branch if Greater or Equal
ROM:0001DA70 move.l d1,(pLeanCruiseAFRAdder).w ; Move Data from Source to Destination
ROM:0001DA74 bra.s loc_1DA7A ; Branch Always
ROM:0001DA76 ; ---------------------------------------------------------------------------
ROM:0001DA76
ROM:0001DA76 loc_1DA76: ; CODE XREF: sLeanCruise+146j
ROM:0001DA76 move.l d4,(pLeanCruiseAFRAdder).w ; Move Data from Source to Destination
ROM:0001DA7A
ROM:0001DA7A loc_1DA7A: ; CODE XREF: sLeanCruise+14Cj
ROM:0001DA7A cmp.l d1,d2 ; Compare
ROM:0001DA7C blt.s loc_1DA42 ; Branch if Less Than
ROM:0001DA7E
ROM:0001DA7E loc_1DA7E: ; CODE XREF: sLeanCruise+118j
ROM:0001DA7E move.l d2,(dword_FFFF816C).w ; Move Data from Source to Destination
ROM:0001DA82
ROM:0001DA82 loc_1DA82: ; CODE XREF: sLeanCruise+4Aj
ROM:0001DA82 ; sLeanCruise+B0j ...
ROM:0001DA82 movem.l (sp)+,d1-d2 ; Move Multiple Registers
ROM:0001DA86 rts ; Return from Subroutine
ROM:0001DA86 ; End of function sLeanCruise
The Code Changed in 2001 to this:
Code: Select all
ROM:00021276 sLeanCruise: ; CODE XREF: sub_208D6:loc_21160p
ROM:00021276 movem.l d0-d2/d6,-(sp)
ROM:0002127A movea.l (pRunTime_Millisecs).w,a2
ROM:0002127E move.w (a2),d1
ROM:00021280 move.w (word_759F8).l,d4
ROM:00021286 move.w (word_FFFFAABA).w,d3
ROM:0002128A cmp.w d4,d3
ROM:0002128C bgt.s loc_212BE
ROM:0002128E cmp.w (word_759F2).l,d3
ROM:00021294 blt.s loc_212BE
ROM:00021296 cmp.w (word_FFFFAABE).w,d4
ROM:0002129A blt.s loc_212BE
ROM:0002129C move.w (word_FFFFAABE).w,d2
ROM:000212A0 cmp.w (word_759F2).l,d2
ROM:000212A6 blt.s loc_212BE
ROM:000212A8 btst #6,(byte_FFFFA912).w
ROM:000212AE bne.s loc_212BE
ROM:000212B0 btst #4,(byte_FFFF99CB).w
ROM:000212B6 bne.s loc_212BE
ROM:000212B8 tst.b (byte_FFFF99B0).w
ROM:000212BC beq.s loc_212C8
ROM:000212BE
ROM:000212BE loc_212BE: ; CODE XREF: sLeanCruise+16j
ROM:000212BE ; sLeanCruise+1Ej ...
ROM:000212BE move.b #3,(byte_FFFF99D9).w
ROM:000212C4 bra.w loc_21388
ROM:000212C8 ; ---------------------------------------------------------------------------
ROM:000212C8
ROM:000212C8 loc_212C8: ; CODE XREF: sLeanCruise+46j
ROM:000212C8 btst #4,(byte_FFFFA914).w
ROM:000212CE beq.w loc_21384
ROM:000212D2 move.w (word_FFFFA7B2).w,d4
ROM:000212D6 cmp.w (word_759EA).l,d4
ROM:000212DC bcc.w loc_21384
ROM:000212E0 move.w (word_FFFFA7B2).w,d4
ROM:000212E4 cmp.w (word_759EC).l,d4
ROM:000212EA bls.w loc_21384
ROM:000212EE move.w (word_FFFF9B18).w,d4
ROM:000212F2 cmp.w (word_759EE).l,d4
ROM:000212F8 bcc.w loc_21384
ROM:000212FC move.w (word_FFFF9B18).w,d4
ROM:00021300 cmp.w (word_759F0).l,d4
ROM:00021306 bls.s loc_21384
ROM:00021308 move.w (word_FFFF99DA).w,d4
ROM:0002130C cmp.w (word_75A40).l,d4
ROM:00021312 bhi.s loc_21384
ROM:00021314 move.l d1,d4
ROM:00021316 add.w (word_FFFF99C0).w,d4
ROM:0002131A bcc.s loc_21320
ROM:0002131C move.w #$FFFF,d4
ROM:00021320
ROM:00021320 loc_21320: ; CODE XREF: sLeanCruise+A4j
ROM:00021320 move.w d4,(word_FFFF99C0).w
ROM:00021324 tst.b (byte_FFFF9CDA).w
ROM:00021328 beq.s loc_2133A
ROM:0002132A move.l d1,d0
ROM:0002132C add.w (word_FFFF99E0).w,d0
ROM:00021330 bcc.s loc_21336
ROM:00021332 move.w #$FFFF,d0
ROM:00021336
ROM:00021336 loc_21336: ; CODE XREF: sLeanCruise+BAj
ROM:00021336 move.w d0,(word_FFFF99E0).w
ROM:0002133A
ROM:0002133A loc_2133A: ; CODE XREF: sLeanCruise+B2j
ROM:0002133A cmp.w (word_759CE).l,d4
ROM:00021340 bcs.s loc_21384
ROM:00021342 move.w (word_FFFF99E0).w,d3
ROM:00021346 cmp.w (word_759D6).l,d3
ROM:0002134C bcs.s loc_21356
ROM:0002134E move.b #1,(byte_FFFF99D9).w
ROM:00021354 bra.s loc_2136A
ROM:00021356 ; ---------------------------------------------------------------------------
ROM:00021356
ROM:00021356 loc_21356: ; CODE XREF: sLeanCruise+D6j
ROM:00021356 cmp.w (word_759D8).l,d3
ROM:0002135C bhi.s loc_21366
ROM:0002135E move.b #2,(byte_FFFF99D9).w
ROM:00021364 bra.s loc_2136A
ROM:00021366 ; ---------------------------------------------------------------------------
ROM:00021366
ROM:00021366 loc_21366: ; CODE XREF: sLeanCruise+E6j
ROM:00021366 clr.b (byte_FFFF99D9).w
ROM:0002136A
ROM:0002136A loc_2136A: ; CODE XREF: sLeanCruise+DEj
ROM:0002136A ; sLeanCruise+EEj
ROM:0002136A clr.w (word_FFFF99E0).w
ROM:0002136E clr.w (word_FFFF99C0).w
ROM:00021372 move.w (word_FFFF99DA).w,d3
ROM:00021376 addq.w #1,d3
ROM:00021378 move.w d3,(word_FFFF99DA).w
ROM:0002137C cmp.w (word_75A40).l,d3
ROM:00021382 bls.s loc_21388
ROM:00021384
ROM:00021384 loc_21384: ; CODE XREF: sLeanCruise+58j
ROM:00021384 ; sLeanCruise+66j ...
ROM:00021384 clr.b (byte_FFFF99D9).w
ROM:00021388
ROM:00021388 loc_21388: ; CODE XREF: sLeanCruise+4Ej
ROM:00021388 ; sLeanCruise+10Cj
ROM:00021388 move.b (byte_FFFF99D9).w,d2
ROM:0002138C cmpi.b #3,d2
ROM:00021390 beq.w loc_21420
ROM:00021394 clr.l d4
ROM:00021396 move.w (word_75A3E).l,d4
ROM:0002139C cmp.l (dword_FFFFA464).w,d4
ROM:000213A0 bhi.s loc_21420
ROM:000213A2 move.w (word_FFFF84FC).w,d4
ROM:000213A6 cmp.w (word_75A42).l,d4
ROM:000213AC bcs.s loc_21420
ROM:000213AE tst.b (byte_FFFF9CDA).w
ROM:000213B2 bne.s loc_21420
ROM:000213B4 move.w (word_FFFF99DC).w,d4
ROM:000213B8 bne.s loc_21412
ROM:000213BA move.w (word_FFFFA194).w,d3
ROM:000213BE move.b (byte_FFFF9D23).w,d5
ROM:000213C2 asl.b #5,d5
ROM:000213C4 andi.w #$FF,d5
ROM:000213C8 lea unk_759FA(d5.w),a2
ROM:000213D0 cmpi.w #$1E00,d3
ROM:000213D4 bcc.s loc_213DA
ROM:000213D6 lsr.w #1,d3
ROM:000213D8 bra.s loc_213DE
ROM:000213DA ; ---------------------------------------------------------------------------
ROM:000213DA
ROM:000213DA loc_213DA: ; CODE XREF: sLeanCruise+15Ej
ROM:000213DA move.w #$F00,d3
ROM:000213DE
ROM:000213DE loc_213DE: ; CODE XREF: sLeanCruise+162j
ROM:000213DE tblu.w (a2),d3
ROM:000213E2 cmp.w (word_FFFFA7B2).w,d3
ROM:000213E6 bls.s loc_21438
ROM:000213E8 move.w (word_75A3C).l,d0
ROM:000213EE ext.l d0
ROM:000213F0 asl.l #8,d0
ROM:000213F2 asl.l #8,d0
ROM:000213F4 add.l (pLeanCruiseAFRAdder).w,d0
ROM:000213F8 move.l d0,(pLeanCruiseAFRAdder).w
ROM:000213FC move.l (dword_759DE).l,d3
ROM:00021402 cmp.l d3,d0
ROM:00021404 bge.s loc_2140A
ROM:00021406 move.l d3,(pLeanCruiseAFRAdder).w
ROM:0002140A
ROM:0002140A loc_2140A: ; CODE XREF: sLeanCruise+18Ej
ROM:0002140A add.w d1,d4
ROM:0002140C move.w d4,(word_FFFF99DC).w
ROM:00021410 bra.s loc_21438
ROM:00021412 ; ---------------------------------------------------------------------------
ROM:00021412
ROM:00021412 loc_21412: ; CODE XREF: sLeanCruise+142j
ROM:00021412 add.w d1,d4
ROM:00021414 move.w d4,(word_FFFF99DC).w
ROM:00021418 cmp.w (word_75A3A).l,d4
ROM:0002141E bra.s loc_21432
ROM:00021420 ; ---------------------------------------------------------------------------
ROM:00021420
ROM:00021420 loc_21420: ; CODE XREF: sLeanCruise+11Aj
ROM:00021420 ; sLeanCruise+12Aj ...
ROM:00021420 move.w (word_FFFF99DC).w,d3
ROM:00021424 beq.s loc_21438
ROM:00021426 add.w d1,d3
ROM:00021428 move.w d3,(word_FFFF99DC).w
ROM:0002142C cmp.w (word_75A3A).l,d3
ROM:00021432
ROM:00021432 loc_21432: ; CODE XREF: sLeanCruise+1A8j
ROM:00021432 bcs.s loc_21438
ROM:00021434 clr.w (word_FFFF99DC).w
ROM:00021438
ROM:00021438 loc_21438: ; CODE XREF: sLeanCruise+170j
ROM:00021438 ; sLeanCruise+19Aj ...
ROM:00021438 cmpi.b #2,d2
ROM:0002143C bhi.s loc_214AE
ROM:0002143E beq.s loc_21472
ROM:00021440 tst.b d2
ROM:00021442 beq.s loc_214B8
ROM:00021444 move.l (dword_759E2).l,d0
ROM:0002144A move.l d0,d4
ROM:0002144C add.l (dword_FFFF99C6).w,d4
ROM:00021450 add.l (pLeanCruiseAFRAdder).w,d0
ROM:00021454 move.l (dword_759DA).l,d3
ROM:0002145A cmp.l d3,d4
ROM:0002145C ble.s loc_21464
ROM:0002145E move.l d3,(dword_FFFF99C6).w
ROM:00021462 bra.s loc_21468
ROM:00021464 ; ---------------------------------------------------------------------------
ROM:00021464
ROM:00021464 loc_21464: ; CODE XREF: sLeanCruise+1E6j
ROM:00021464 move.l d4,(dword_FFFF99C6).w
ROM:00021468
ROM:00021468 loc_21468: ; CODE XREF: sLeanCruise+1ECj
ROM:00021468 cmp.l d3,d0
ROM:0002146A ble.s loc_2149A
ROM:0002146C
ROM:0002146C loc_2146C: ; CODE XREF: sLeanCruise+222j
ROM:0002146C move.l d3,(pLeanCruiseAFRAdder).w
ROM:00021470 bra.s loc_2149E
ROM:00021472 ; ---------------------------------------------------------------------------
ROM:00021472
ROM:00021472 loc_21472: ; CODE XREF: sLeanCruise+1C8j
ROM:00021472 move.l (dword_759E6).l,d0
ROM:00021478 move.l d0,d4
ROM:0002147A add.l (dword_FFFF99C6).w,d4
ROM:0002147E add.l (pLeanCruiseAFRAdder).w,d0
ROM:00021482 move.l (dword_759DE).l,d3
ROM:00021488 cmp.l d3,d4
ROM:0002148A bge.s loc_21492
ROM:0002148C move.l d3,(dword_FFFF99C6).w
ROM:00021490 bra.s loc_21496
ROM:00021492 ; ---------------------------------------------------------------------------
ROM:00021492
ROM:00021492 loc_21492: ; CODE XREF: sLeanCruise+214j
ROM:00021492 move.l d4,(dword_FFFF99C6).w
ROM:00021496
ROM:00021496 loc_21496: ; CODE XREF: sLeanCruise+21Aj
ROM:00021496 cmp.l d3,d0
ROM:00021498 blt.s loc_2146C
ROM:0002149A
ROM:0002149A loc_2149A: ; CODE XREF: sLeanCruise+1F4j
ROM:0002149A move.l d0,(pLeanCruiseAFRAdder).w
ROM:0002149E
ROM:0002149E loc_2149E: ; CODE XREF: sLeanCruise+1FAj
ROM:0002149E clr.w d3
ROM:000214A0 move.b (byte_FFFF99CA).w,d3
ROM:000214A4 move.l (dword_FFFF99C6).w,dword_FFFF847A(d3.w*4)
ROM:000214AC bra.s loc_214B8
ROM:000214AE ; ---------------------------------------------------------------------------
ROM:000214AE
ROM:000214AE loc_214AE: ; CODE XREF: sLeanCruise+1C6j
ROM:000214AE clr.l (pLeanCruiseAFRAdder).w
ROM:000214B2 bset #7,(byte_FFFF99CB).w
ROM:000214B8
ROM:000214B8 loc_214B8: ; CODE XREF: sLeanCruise+1CCj
ROM:000214B8 ; sLeanCruise+236j
ROM:000214B8 movem.l (sp)+,d0-d2/d6
ROM:000214BC rts
ROM:000214BC ; End of function sLeanCruise