mirror of https://github.com/bsnes-emu/bsnes.git
Update to bsnes v042r02? release.
New WIP. The entire S-CPU opcode core has been re-written to use my new pre-processor. The downside is that it's actually slightly slower, by less than 1%. Guessing that having almost twice the opcode implementations ends up eating more valuable L1 cache, making it more painful than the two conditionals per function I had before. But damn if it isn't more readable now. Before: ror_addrx(0x7e, ror) { 1:aa.l = op_readpc(); 2:aa.h = op_readpc(); 3:op_io(); 4:rd.l = op_readdbr(aa.w + regs.x.w); 5:if(!regs.p.m) rd.h = op_readdbr(aa.w + regs.x.w + 1); 6:op_io(); if(regs.p.m) { op_$1_b(); } else { op_$1_w(); 7:op_writedbr(aa.w + regs.x.w + 1, rd.h); } 8:last_cycle(); op_writedbr(aa.w + regs.x.w, rd.l); } After: @macro op_adjust_addrx(name) void {class}::op_{name}_addrx_b() { aa.l = op_readpc(); aa.h = op_readpc(); op_io(); rd.l = op_readdbr(aa.w + regs.x.w); op_io(); op_{name}_b(); {lc}op_writedbr(aa.w + regs.x.w, rd.l); } void {class}::op_{name}_addrx_w() { aa.l = op_readpc(); aa.h = op_readpc(); op_io(); rd.l = op_readdbr(aa.w + regs.x.w + 0); rd.h = op_readdbr(aa.w + regs.x.w + 1); op_io(); op_{name}_w(); op_writedbr(aa.w + regs.x.w + 1, rd.h); {lc}op_writedbr(aa.w + regs.x.w + 0, rd.l); } @endmacro ( note: {lc} is short-hand to 'hide' last_cycle(); ) Really worn out now, so don't expect a new WIP for quite a long time I'm afraid. I'll worry about the S-SMP's core much later. Would appreciate thorough testing. Given I rewrote all 256 opcodes by hand, it's possible I made a mistake somewhere. > Once Alt has been pressed to access the menubar (even just one > time), the menu accelerator keys become functional even without > pressing them together with Alt. Wow ... that is quite alarming. Not sure why Qt is doing that. But since I don't have a way of fixing it yet ... for now: > Stop pressing alt. :/ [No archive available]
This commit is contained in:
parent
90aa780d57
commit
f3d1d10d3e