Magic Lantern Firmware Wiki


328pages on
this wiki
Add New Page
Talk0 Share

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

550 1.0.9
check file extension

ROM:FFFF4F0C                 LDRB    R1, [R0,#-3]
ROM:FFFF4F10                 CMP     R1, #'F'
ROM:FFFF4F14                 BNE     loc_FFFF5058
ROM:FFFF4F18                 LDRB    R1, [R0,#-2]
ROM:FFFF4F1C                 CMP     R1, #'I'
ROM:FFFF4F20                 BNE     loc_FFFF5058
ROM:FFFF4F24                 LDRB    R0, [R0,#-1]
ROM:FFFF4F28                 CMP     R0, #'R'
ROM:FFFF4F2C                 BNE     loc_FFFF5058
ROM:FFFF4F30                 LDR     R4, =0x40800000 ; FIR file location
ROM:FFFF4F34                 LDR     R0, =0xF8002000
ROM:FFFF4F38                 LDR     R0, [R0,#0x14] ; update flag
ROM:FFFF4F3C                 CMN     R0, #1
ROM:FFFF4F40                 BNE     loc_FFFF4F48

check model id in FIR header

ROM:FFFF4F44                 MOV     R0, #0x270 ; 550d model number
ROM:FFFF4F48 loc_FFFF4F48                            
ROM:FFFF4F48                 LDR     R1, [R4]
ROM:FFFF4F4C                 ORR     R0, R0, #0x80000000
ROM:FFFF4F50                 CMP     R1, R0
ROM:FFFF4F54                 BEQ     loc_FFFF4F6C

compute and check checksum

ROM:FFFF4FBC loc_FFFF4FBC                            
ROM:FFFF4FBC                 CMP     R0, R3   ; r3 = size
ROM:FFFF4FC0                 BCS     loc_FFFF4FD8
ROM:FFFF4FC4                 LDR     R12, =0x40800000
ROM:FFFF4FC8                 LDRB    R12, [R12,R0]
ROM:FFFF4FCC                 ADD     R2, R2, R12
ROM:FFFF4FD0                 ADD     R0, R0, #1
ROM:FFFF4FD4                 B       loc_FFFF4FBC
ROM:FFFF4FD8 ; ---------------------------------------------------------------------------
ROM:FFFF4FD8 loc_FFFF4FD8             ;correction = substract checksum value in file
ROM:FFFF4FD8                 LDRB    R0, [SP,#0x40+var_3C]
ROM:FFFF4FDC                 SUB     R0, R2, R0
ROM:FFFF4FE0                 LDRB    R2, [SP,#0x40+var_3C+1]
ROM:FFFF4FE4                 SUB     R0, R0, R2
ROM:FFFF4FE8                 LDRB    R2, [SP,#0x40+var_3C+2]
ROM:FFFF4FEC                 SUB     R0, R0, R2
ROM:FFFF4FF0                 LDRB    R2, [SP,#0x40+var_3C+3]
ROM:FFFF4FF4                 SUB     R0, R0, R2
ROM:FFFF4FF8                 MVN     R5, R0
ROM:FFFF4FFC                 MOV     R2, R5
ROM:FFFF5000                 ADR     R0, aChecksumXSumX ; "CheckSum=%x sum=%x\n"
ROM:FFFF5004                 BL      printf
ROM:FFFF5008                 LDR     R0, [R4,#0x20]
ROM:FFFF500C                 CMP     R0, R5  ; compare computed and stored sums
ROM:FFFF5010                 BEQ     loc_FFFF501C

autoexec.bin launch

ROM:FFFF40F0                 MOV     R0, #0xF8000000
ROM:FFFF40F4                 LDR     R0, [R0,#8] ;ramexec/bootflag
ROM:FFFF40F8                 CMN     R0, #1
ROM:FFFF40FC                 BEQ     loc_FFFF411C
ROM:FFFF4100                 BL      Read0x10cdf4
ROM:FFFF4104                 BL      CPSR_stuff
ROM:FFFF4108                 MOV     R1, #0x800000
ROM:FFFF410C                 ADR     R0, aRamexec    ; "RAMEXEC"
ROM:FFFF4110                 BL      sub_FFFF315C

jump and back

ROM:FFFF315C sub_FFFF315C             
ROM:FFFF315C                 STMFD   SP!, {R4-R6,LR}
ROM:FFFF3160                 MOV     R5, R0
ROM:FFFF3164                 MOV     R4, R1
ROM:FFFF3168                 MOV     R1, R5
ROM:FFFF316C                 ADR     R0, aNowJumpToS ; "Now jump to %s!!\n"
ROM:FFFF3170                 BL      printf
ROM:FFFF3174                 MOV     R1, R4
ROM:FFFF3178                 MOV     R0, #0
ROM:FFFF317C                 BL      sub_FFFFE75C
ROM:FFFF3180 ; ---------------------------------------------------------------------------
ROM:FFFF3180                 MOV     R1, R5
ROM:FFFF3184                 LDMFD   SP!, {R4-R6,LR}
ROM:FFFF3188                 ADR     R0, aNowReturnedFro ; "Now returned from %s!!\n"
ROM:FFFF318C                 B       printf
ROM:FFFF318C ; End of function sub_FFFF315C

Also on Fandom

Random Wiki