Consegui entender melhor o funcionamento dessa rotina, e após algumas tentativas, "transformei" o meu DV256K para PAL, fazendo poucas alterações.
O ponto chave me pareceu este:
B2:805A 90 FB 82 mov DPTR, #XRAM_FB82
B2:805D E0 movx A, @DPTR
B2:805E 30 E0 3F jnb ACC.0, B2_80A0 ; Accumulator
Dependendo do que está em #XRAM_FB82, é feito um desvio para B2_80A0, onde se define #2 para SetPrefChar(#0F) e para ArmPutChar(#2A) para NTSC. Quando não é feito o desvio a rotina continua e define #0 para PAL, ao invés de #2. Isso ocorre de maneira semelhante em todos os LGs.
Para mudar o DV256K para PAL eu tive que apenas por NOP para evitar o desvio (que iria para NTSC), e também eliminar uma verificação de #0F em PrefGetChar.
Já no DV383, eu coloquei um sjmp para o trecho que define NTSC. Não encontrei nehuma verificação de PrefGetChar lá. Apenas PrefSetChar. Então não mudei mais nada.
Estou enviando esse firmware apenas para o usuário super_tg testar. Além da nova tentativa de correção do Sistema para NTSC, aproveitei para tornar o firmware Region Free (como expliquei no tópico do LG DV256K). mantive a correção do Subtitle Timing Bug. Vamos ver, se não der certo desta vez, pelo menos estamos chegando perto...