Hello,
The cpuDisOpcode returns an incorrect length (4 bytes instead of 6) for long branches (BSR.L, etc)
eg:
$00E59CD4 BSR.L $00E5986E ; 61FF FFFFFB98
$00E59CD8 ILLEGAL ; FB98
$00E59CDA MOVE.W D3,$000C(A7) ; 3F43 000C
It can be fixed in CpuModule_Disassembler.c, function cpuDisBcc
else if (disp == -1 && cpuGetModelMajor() >= 2)
{
prc += 2;
disp2 = memoryReadLong(prc);
cpuDisLongAppend(disp2, sdata);
adr = prc + disp2;
prc += 2; <<<<< add in extra 2 bytes here
}
Thanks, good catch!