critical, on the beebem site the guy says (I paraphrase)
if the master compatible v0.34 runs slow try running the older, model B only version.
i'm sure there's lots of reasons why master compatibility might slow things down.
anyway I was just looking through beebmem.cpp and i found this on memory writes:
// BBC B Start
if (MachineType==0) {
if (Address<0x8000) {
WholeRam[Address]=Value;
return;
}
if ((Address<0xc000) && (Address>=0x8000)) {
if (RomWritable[ROMSEL]) Roms[ROMSEL][Address-0x8000]=Value;
return;
}
}
// BBC B End
so every single time a model B opcode does a memory write it also goes through this
if (MachineType==0) test to check its not a master or a B+
what do you think? I know its only a cycle or two for the ARM to do this test but if its occurring every single time the 6502 does a mem write would it slow things down!? I thought it might.
obviously taking it out interferes with master compatibility maybe there could be several executables, like mame ?? one for the model B with no master checking and vice versa. just a thought
also, the bit I've highlighted below (for ROM writes) in bold is not needed, its redundant cos of the previous if test:
if ((Address<0xc000)
&& (Address>=0x8000)) {
if (RomWritable[ROMSEL]) Roms[ROMSEL][Address-0x8000]=Value;
return;
}
(although I think this last one will make no difference to speed! i know games don't try to switch ROMs much
)
keep going critical !