Fandom

Magic Lantern Firmware Wiki

VRAM ADDR from code

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.

500D 1.1.0Edit

ROM:FF05EEE0 SetImageVramAddress

ROM:FF05EEE0 var_1C          = -0x1C
ROM:FF05EEE0 var_18          = -0x18
ROM:FF05EEE0 var_14          = -0x14
ROM:FF05EEE0
ROM:FF05EEE0                 STMFD   SP!, {R0-R6,LR}
ROM:FF05EEE4                 LDR     R5, =0x25D8
ROM:FF05EEE8                 ADR     R2, aSetimagevramad ; "SetImageVramAddress DispType=%d"
ROM:FF05EEEC                 LDR     R3, [R5,#0x2C]

550D 1.0.9:Edit

int i;
unsigned int *bmp_ram_addr = bmp_vram_info;
for (i=0; i<2; i++)
  DebugMsg( DM_MAGIC, 3, "bmp_vram[]=0x%08x, 0x%08x, 0x%08x", 
    bmp_ram_addr[3*i+0],  bmp_ram_addr[3*i+1], bmp_ram_addr[3*i+2] );
unsigned int *vram_info_addr = vram_info;
for (i=0; i<3; i++)
  DebugMsg( DM_MAGIC, 3, "vram_info[]=0x%08x, w=%4d, h=%4d, p=%4d, n=%4d",
      vram_info_addr[5*i+0],  vram_info_addr[5*i+1], 
      vram_info_addr[5*i+2], vram_info_addr[5*i+3], vram_info_addr[5*i+4] );
unsigned int *stateobj_disp = 0x23D8+0x90; // see FF05DAF8 SetBitmapVramAddress
    DebugMsg( DM_MAGIC, 3, "stateobj_disp+0xb0[]=0x%08x,0x%08x,0x%08x,", 
    stateobj_disp[0], stateobj_disp[1], stateobj_disp[2]);

produced this:

2109:  9760.005 [MAGIC] bmp_vram[]=0xc0f140d0, 0x00000000, 0x02087100
2110:  9760.045 [MAGIC] bmp_vram[]=0xc0f140d4, 0x00000000, 0x02087100
2111:  9760.082 [MAGIC] vram_info[]=0x40d07800, w= 720, h= 720, p= 480, n=   2
2112:  9760.116 [MAGIC] vram_info[]=0x4c233800, w= 720, h= 720, p= 480, n=   0
2113:  9760.149 [MAGIC] vram_info[]=0x4f11d800, w= 720, h= 720, p= 480, n=   0
2114:  9760.194 [MAGIC] stateobj_disp+0xb0[]=0x42080008,0x40d07800,0x40958c3c,

See SetBitmapVramAddress

ROM:FF05DAF8 SetBitmapVramAddress
ROM:FF05DAF8    STMFD   SP!, {R4-R6,LR}
ROM:FF05DAFC    LDR     R4, =0x23D8
ROM:FF05DB00    ADR     R2, aSetbitmapvramaddressPbitmap_addr ; "SetBitmapVramAddress pBitmap_Address=%x"...
ROM:FF05DB04    LDR     R3, [R4,#0x90]

'DisplayState" Stateobject creation is:

ROM:FF0601B4 create_display_device_state_object

ROM:FF0601B4 var_10          = -0x10
ROM:FF0601B4
ROM:FF0601B4                 STMFD   SP!, {R3-R5,LR}
ROM:FF0601B8                 MOV     R3, #4
ROM:FF0601BC                 LDR     R4, =0x23D8
ROM:FF0601C0                 STR     R3, [SP,#0x10+var_10]
ROM:FF0601C4                 LDR     R0, [R4]
ROM:FF0601C8                 LDR     R2, =dword_FF4567C8
ROM:FF0601CC                 MOV     R3, #0x18
ROM:FF0601D0                 MOV     R1, #0
ROM:FF0601D4                 BL      CreateStateObject

600D 1.0.1Edit

this code

int i;
unsigned int *bmp_ram_addr = bmp_vram_info;
for (i=0; i<2; i++)
  DebugMsg( DM_MAGIC, 3, "bmp_vram[]=0x%08x, 0x%08x, 0x%08x", 
    bmp_ram_addr[3*i+0],  bmp_ram_addr[3*i+1], bmp_ram_addr[3*i+2] );
unsigned int *vram_info_addr = vram_info;
for (i=0; i<3; i++)
  DebugMsg( DM_MAGIC, 3, "vram_info[]=0x%08x, w=%4d, h=%4d, p=%4d, n=%4d",
      vram_info_addr[5*i+0],  vram_info_addr[5*i+1], 
      vram_info_addr[5*i+2], vram_info_addr[5*i+3], vram_info_addr[5*i+4] );
unsigned int *stateobj_disp = 0x23DC+0xb0; // see FF062CEC SetBitmapVramAddress
DebugMsg( DM_MAGIC, 3, "stateobj_disp+0xb0[]=0x%08x,0x%08x,0x%08x,", 
  stateobj_disp[0], stateobj_disp[1], stateobj_disp[2]);

produced this

629: 28499.078 [MAGIC] bmp_vram[0]=0xc0f140d0, 0x00000000, 0x02087100
630: 28499.124 [MAGIC] bmp_vram[1]=0xc0f140d4, 0x00000000, 0x02087100
631: 28499.161 [MAGIC] vram_info[0]=0x40d07800, w= 720, h= 720, p= 480, n=   1
632: 28499.198 [MAGIC] vram_info[1]=0x4c233800, w= 720, h= 720, p= 480, n=   0
633: 28499.233 [MAGIC] vram_info[2]=0x4f11d800, w= 720, h= 720, p= 480, n=   0
634: 28499.279 [MAGIC] stateobj_disp+0xb0={0x42080008,0x4c233800,0x40a82a14}

See SetBitmapVramAddress

ROM:FF062CEC SetBitmapVramAddress                   
ROM:FF062CEC   STMFD   SP!, {R4-R6,LR}
ROM:FF062CF0   LDR     R4, =0x23DC
ROM:FF062CF4   ADR     R2, aSetbitmapvramaddress ; "SetBitmapVramAddress pBitmap_Address=%x"...
ROM:FF062CF8   LDR     R3, [R4,#0xB0]

DisplayState stateobject is created here

ROM:FF065A50 sub_FF065A50     CODE XREF: InitializeDisplayDeviceController+A0
ROM:FF065A50
ROM:FF065A50 var_10          = -0x10
ROM:FF065A50
ROM:FF065A50                 STMFD   SP!, {R3-R5,LR}
ROM:FF065A54                 MOV     R3, #4
ROM:FF065A58                 LDR     R4, =0x23DC
ROM:FF065A5C                 STR     R3, [SP,#0x10+var_10]
ROM:FF065A60                 LDR     R0, [R4]
ROM:FF065A64                 LDR     R2, =dword_FF570494
ROM:FF065A68                 MOV     R3, #0x1C
ROM:FF065A6C                 MOV     R1, #0
ROM:FF065A70                 BL      create_state_obj

Also on Fandom

Random Wiki