DIGIC 8 'PowerShot' development (M50, SX70, SX740)

Started by dfort, April 21, 2018, 04:20:27 PM

Previous topic - Next topic

0 Members and 4 Guests are viewing this topic.

Walter Schulz

Subject should get enhanced, I suppose: G5 X Mark II, G7 X Mark III firmware have *.FIR suffix. M200 still without confirmation but listed as compatible to EOS Webcam Utility and "real" PowerShot doesn't seem to be supported at all.

coon

Quote from: Sténo on October 20, 2020, 11:13:02 AM



Hello !

Do you need coding skills to install this feature on the m50 ?

GUI_SetSilentShutter sets a property which is persistent (survives a battery pull) until it is deactivated. Therefore this could also be done via Canon Basic script. Silent shutter mode can also be deactivated by entering SCN mode and leaving it again.
EOS RP

ArcziPL

Sounds cool!

Will it be as simple as this?


private sub Initialize()
GUI_SetSilentShutter(1)
end sub
M50.110 [main cam] | G7X III [pocket cam] | 70D.112 [gathers dust] | M.202 [gathers dust] | waiting for M5II

coon

No, GUI_SetSilentShutter is not an Event Procedure and you need to export it first.
The following script meight work on M50 v1.0.2 (untested, use at own risk!):


private sub Initialize()
    ExportToEventProcedure("GUI_SetSilentShutter", 0xe053607f)
    GUI_SetSilentShutter(1)
end sub



EOS RP

ArcziPL

Thanks! I'm on 1.1.0, so need the new adress first (and add +1, for setting the THUMB flag).
M50.110 [main cam] | G7X III [pocket cam] | 70D.112 [gathers dust] | M.202 [gathers dust] | waiting for M5II

coon

Script for M50 v1.1.0 is:


private sub Initialize()
    ExportToEventProcedure("GUI_SetSilentShutter", 0xe0536113)
    GUI_SetSilentShutter(1)
end sub
EOS RP

a1ex

When sharing scripts that are likely to be run by regular users, I strongly recommend performing some kind of camera model / firmware version checking. CHDK do this for scripts meant to be run by users (look up "check_compat").

Most of the time, the effect of calling an invalid stub - which would usually jump in the middle of some random Canon function - will be a crash, but if one is unlucky enough, that crash might lead to a memory write that will end up written back into main ROM at camera shutdown (yes, Canon firmware does this). Or, what if - on some different camera model - that stub might be in the middle of EraseSectorOfRom? Very unlikely, but still...

I've got a fair amount of backlash in the past for recommending this timeless article to other developers, but I still believe the advice there is very good (long answer). And I have no experience unbricking recent Canon models, btw ;)

ArcziPL

Quote from: coon on February 06, 2021, 12:51:09 AM
Script for M50 v1.1.0 is:


private sub Initialize()
    ExportToEventProcedure("GUI_SetSilentShutter", 0xe0536113)
    GUI_SetSilentShutter(1)
end sub


It works, thank you! This feature is fantastic! :)

Thanks Greg for finding this function and trying out.
M50.110 [main cam] | G7X III [pocket cam] | 70D.112 [gathers dust] | M.202 [gathers dust] | waiting for M5II

coon

Quote from: coon on February 06, 2021, 12:26:11 AM
[...] (untested, use at own risk!):

But I agree that having some check_compat function in our scripts would be better, especially on code which modifies properties.
Model name and version number in string representation are stored somewhere in the ROM. I may try to compare against those in future.
EOS RP

Walter Schulz

As mentioned/ranted some time ago: Some users will intentionally disregard such warnings and trying to mess with any script available -> Unable or unwilling to take risks into consideration. (I can provide examples showing a lack of understanding and jackass attitude which will ripple your foot nails, as we say here).
Please consider some checks, at least. Won't prevent worst kind users from getting their hair burned to the skin but majority will not get a clue why a script won't work because of said checks.

And please add some comment why these checks are implemented and the risks involved. Leaving only people wanting to see the world burn wanting to remove them.

coon

I am thinking about something like this (pseudo code):


dim model_name        = "Canon EOS RP"
dim firmware_version  = "1.6.0"
dim model_name_addr   = 0xe121d57c
dim firmware_ver_addr = 0xe00408e0

public sub check_compat()
    if model_name_addr == model_name and firmware_ver_addr == firmware_version then
        check_compat = 1
    else
        check_compat = 0
    end if
end sub


That way the code would self document for what model the script is for. I Just need to find a way to do a strncmp in canon basic for that.
EOS RP

ArcziPL

Does anyone have an idea if there is a function to change ISO selection steps from 1/3EV to 1EV? On 70D it's an option in Canon menu but it's not present on M50.

I personally find the 1/3EV steps a disadvantage. They make changing ISO with the dial way too slow for my taste and it's just a digital push/pull which can be done in post.

Greg, maybe you have digged in this direction already?
M50.110 [main cam] | G7X III [pocket cam] | 70D.112 [gathers dust] | M.202 [gathers dust] | waiting for M5II

Greg

The last time I looked at the M50 rom dump was almost a year ago. There was a lot of functionality not visible in the menu but I don't remember.
If the R/RP has this feature, the M50 should also have it, but not visible in the menu.

You can check - "GUI_SetIsoSettingStep"

ArcziPL

Yep, it exists! Thanks!

GUI_SetIsoSettingStep Value(%d)
M50.110 [main cam] | G7X III [pocket cam] | 70D.112 [gathers dust] | M.202 [gathers dust] | waiting for M5II

whitefang

Hello!
Thanks a lot for your hard work!

I really hope that someday there will be a working magic lantern firmware for this device.
I own this camera a few year.
I am ready to help as much as I can.

Can you please tell me, if it is possible to make a clean hdmi on this camera (by analogy with the m200) using autofocus?
I really want to use it not only for video recording, but also for streaming. Autofocus would be a great helper!
Thank you!

mazzdaddy

Quote from: Greg on April 26, 2020, 02:06:58 PM
M50 1.0.2 - 7 frames exposure bracketing



THUMB_FN(0xE04E05BE, GUI_SetCFnBktSheetsData)

#define BktSheets3                  0x3
#define BktSheets5                  0x5
#define BktSheets7                  0x7

extern int GUI_SetCFnBktSheetsData(int);
GUI_SetCFnBktSheetsData(BktSheets7);

This is all I want to do.  How do I do this, please?  My camera came with 1.1.0.  Do I need to replace with 1.0.2?  And how do I access/change the code to allow 7 brackets?

dbot

haven't read the whole thread, but will the M50 have similiar hacked capabilities like the original M at some point?

Walter Schulz

Sorry, unable to answer ATM. All devs are busy running a side quest to regain magic balls stolen by the Illuminati!

kitor

When one day you woke up an decided to speedrun a port:



Code is at the moment on my Github: https://github.com/kitor/magiclantern_simplified/tree/M50_110_speedrun
Merged to dev: https://github.com/reticulatedpines/magiclantern_simplified/tree/dev

Same stuff as EOS R and 200D: Menus, nothing more. Even funnier as if you open any submenu in ML menus and then exit to Canon GUI - a wild ERR70 appears. fixed, bad stub ;)

(it may have something to do with messages on UART, seems that there's some memory leak?)
ERROR [MEM] Over Permanet Memory cache 48 17348

Another caveat: Trash button won't send any keycode in LV until you assign a function in C.fn. And code depends on function assigned.
Touchscreen events works differently than on M/M2, so I mapped ML menu into M.fn button.

Anyway I prepared 2 days before I got M50 in my hands and this is what I leave you - as I just send M50 to its real owner.
Yes, this means I won't proceed any further with M50, R is enough for me. But this bring up M50 to similar status and codebase as R and 200d.

In the process I found UART TX line, more about this in Battery grip pins / UART
Too many Canon cameras.
If you have a dead R, RP, 250D mainboard (e.g. after camera repair) and want to donate for experiments, I'll cover shipping costs.

vlast3k

I am wondering if there is an option to set minimum shutter speed for AutoISO on M50.
In the rom dump i can find some function
GUI_SetLimitedTvValueAtAutoIso Null

But this null confuses me. e.g. others are like
GUI_SetSilentShutter Value(%d)

jo.meatloaf

Is it possible to put this code on the M6 ​​mkII?

names_are_hard

Every camera needs individual work.  Nobody is working on the M6, and I think you'd want CHDK for that, not Magiclantern.

Walter Schulz

Quote from: names_are_hard on May 11, 2021, 12:38:33 PM
I think you'd want CHDK for that, not Magiclantern.
Actually no: M6 II is ours. Firmware file name: 6200111.FIR

names_are_hard

Thanks - why must the M series be so confusing? :)

Walter Schulz

You tell me! And there are at least 2 more PowerShots with EOS inside: G5X II and G7X III.