In (e.g.) B-FIRHTBEUC firmware, we have some possibly relevant functions:
Code: Select all
Mopt_IsDVDRegionCodeFreeEnabled()
Mopt_GetDefaultDvdRegionCode()
Mopt_GetDefaultBDRegionCode()
Tracing the xrefs for Mopt_GetDefaultBDRegionCode(), I think current player region setting gets determined in CBDPlayerApp::ApplySetupValue() - after Mopt_GetDefaultBDRegionCode() call, it subsequently executes the following function (given in C/perl pseudocode):
Code: Select all
BdPce_ConfigRegionCode(arg1) {
char cbuf[0x84]; char *res;
R4=arg1;
res=getenv("EMULATOR_PSR20");
res == NULL && goto setPSR;
res=getenv("EMULATOR_PSR20")
snprintf(cbuf,0x80,res);
int rcv=(cbuf[0] eq '0' && cbuf[1] eq 'x')? strtol(cbuf,0,16): strtol(cbuf,0,10);
(rcv == 1 || rcv == 2 || rcv == 4) && (R4=rcv);
setPSR:
BdPce_SetPSR(20,R4);
}

Code: Select all
export EMULATOR_PSR20=1
EMULATOR_PSR20 string seems to be present in all exeDSP binaries for B-FIR* models (same thing for E-series B-ECB* models), so this method - assuming it will actually work - may be somehow universal.
Btw, I wonder what will happen if we set PSR (player settings register) #20 to value 0x7: perhaps that will result in "ABC" region (region-free) player? But that will require a little patching of exeDSP function (BdPce_ConfigRegionCode, or CBDPlayerApp::ApplySetupValue seems to be a good candidate), because the only values accepted for EMULATOR_PSR20 environment variable are: 1, 2 & 4.
***) I can't test this idea myself any further; I have region B player, but I don't have any BD discs with A or C region (nor any region B discs, for that matter - all BD discs I own are region-code-free). In case someone decides to take some risk and actually test it: I'm not responsible for any possible damages
