c_joerg
c_joerg
I've tried rawopint.lua and MDFB2013.lua. Works very well on the usual.
I have a problem with the M100 and rawopint. So far I've only used the EFM 15-45 for this. There are no problems with that.
With the EFS 55-250 or a manual lens, the camera goes out on the second shot. After the crash, the camera's mechanical shutter is closed. This doesn't happen with a normal interval script.
I created a ROMLOG. There was also a GK.log that I haven't noticed before.
It's not crashing here, but there's a raw hook related fix in my source - perhaps that's why. I'll attempt to post updated source in a few days - will have to check trunk changes first.
In the meantime, if you still have the source snapshot, replace following in [tt]replaced.c[/tt]
void __attribute__((naked,noinline,aligned(4))) hook_E004E928()
{
asm volatile (
"bl capt_seq_hook_raw_here\n" // +
"bl clear_current_raw_addr\n" // +
"mov r0, r4\n"
"bl sub_e004c680\n"
"mov r0, r4\n"
"ldr pc, =0xE004E931\n" // -> back to ROM
);
}
void plant_hacks_for_e0040000(unsigned addr)
{
place_fw_patch_t2_64b(hook_E004B840, addr+0xB840);
place_fw_patch_t2_64b(hook_E0045B18, addr+0x5B1π;
place_fw_patch_t2_64b(hook_E004E6A8, addr+0xE6Aπ;
place_fw_patch_t2_64b(hook_E004E750, addr+0xE750);
place_fw_patch_t2_64b(hook_E004E820, addr+0xE820);
place_fw_patch_t2_64b(hook_E004E928, addr+0xE92π;
}
with this
void __attribute__((naked,noinline,aligned(4))) hook_E004E95C()
{
asm volatile (
"bl capt_seq_hook_raw_here\n" // +
"bl clear_current_raw_addr\n" // +
"ldr.w r0, [r7, #0x184]\n"
"cbz r0, loc_e004e96a\n"
"movs r2, #1\n"
"movs r1, #0\n"
"ldr pc, =0xe004e965\n" // -> back to ROM
"loc_e004e96a:\n"
"ldr pc, =0xe004e96b\n" // -> back to ROM
);
}
void plant_hacks_for_e0040000(unsigned addr)
{
place_fw_patch_t2_64b(hook_E004B840, addr+0xB840);
place_fw_patch_t2_64b(hook_E0045B18, addr+0x5B1π;
place_fw_patch_t2_64b(hook_E004E6A8, addr+0xE6Aπ;
place_fw_patch_t2_64b(hook_E004E750, addr+0xE750);
place_fw_patch_t2_64b(hook_E004E820, addr+0xE820);
place_fw_patch_t2_64b(hook_E004E95C, addr+0xE95C);
*(unsigned short*)(addr+0xE95A) = 0xbf00; // nop (benign 16-bit instruction, added to replace 1st half of destroyed 32-bit instruction)
}