Commit graph

1733 commits

Author SHA1 Message Date
Paul Holden
a0cee2cd1a Fix texture pitch calculation via loadtile 2012-07-10 08:15:27 +01:00
Paul Holden
a2d745d16d Support for RGBA32 textures 2012-07-10 07:54:12 +01:00
Paul Holden
5ea419efa8 Implement mirror mode emulation for textures 2012-07-09 21:25:55 +01:00
Paul Holden
2a26b8014f fix indentation 2012-07-09 08:21:45 +01:00
Paul Holden
ebccc03249 Simplify sinstr/dinstr 2012-07-09 00:24:34 +01:00
Paul Holden
f265fbb077 tidy whitespace 2012-07-08 23:54:48 +01:00
Paul Holden
17e3c1e073 Implement generateSRAV/SLLV/SRLV 2012-07-08 23:52:58 +01:00
Paul Holden
21b260eaf5 Reimplement SLL/SRL/SRA 2012-07-08 23:36:26 +01:00
Paul Holden
71c83c249d Generate J/JAL/JALR/JR 2012-07-08 23:15:37 +01:00
Paul Holden
ce1a9554c1 Improve cop1 performance 2012-07-08 22:44:15 +01:00
Paul Holden
9ac7034664 generateSD 2012-07-08 21:25:13 +01:00
Paul Holden
cce230a779 Generate code for LH/LHU/LB/LBU/LWU 2012-07-08 21:08:20 +01:00
Paul Holden
dc8a54366d Use local 'c' rather than cpu0 2012-07-07 15:17:26 +01:00
Paul Holden
28cda83e4f Better implementation for generateBEW/generateBNE 2012-07-07 15:09:55 +01:00
Paul Holden
8382793648 Inline trivial ops 2012-07-07 14:35:53 +01:00
Paul Holden
9033c0c63a Implement generateADDI 2012-07-07 14:35:31 +01:00
Paul Holden
5e91f06bb2 Reimplement ADDU/SUBU etc directly, rather than via impl functions. Less work for the jitter and forces inlining 2012-07-07 10:48:41 +01:00
Paul Holden
5dcd16a271 Improve self-assignment for ADDIU, ORI, XORI. Improve generated code formatting a little 2012-07-07 09:51:45 +01:00
Paul Holden
8f071630f2 Generate code for ANDI/ORI/XORI/LUI 2012-07-07 09:30:57 +01:00
Paul Holden
ca08aaf51e CLEAR/MOV are trivial ops 2012-07-07 09:13:35 +01:00
Paul Holden
bea8758bec Comment 2012-07-07 09:08:53 +01:00
Paul Holden
5d49ab7b56 Identify sequences of trivial ops, so that we can eliminate branch delay checks 2012-07-07 09:07:29 +01:00
Paul Holden
66125fce92 Cache next fragments in an array - one per op - so that we can branch predict more accurately 2012-07-07 08:41:18 +01:00
Paul Holden
51e4a6fcc0 Add a todo 2012-07-07 08:23:07 +01:00
Paul Holden
f1f144e2f0 Bump up the hot count threshold 2012-07-07 08:17:11 +01:00
Paul Holden
7a389ce186 Defer COUNT update until the end of the fragment 2012-07-07 08:12:42 +01:00
Paul Holden
6c7180cba6 prototypes 2012-07-07 08:09:34 +01:00
Paul Holden
bd6c4fe1dc Change dynarec from 'stuff everything into one function' to 'generate function per op'. Lots of extra dynarec work 2012-07-05 23:59:15 +01:00
Paul Holden
170287e209 Argh, faster branchAddress calc was generating signed values 2012-07-04 23:24:08 +01:00
Paul Holden
be360b8dfd Remove opsExecuted - one less thing to update 2012-07-03 08:02:32 +01:00
Paul Holden
45acab39d9 Tidy 2012-07-03 07:57:32 +01:00
Paul Holden
8b4a4d6e6a Silence viewport spam. Rename fragmentsRemoved 2012-07-03 07:55:55 +01:00
Paul Holden
16c681c8af Remove dedicated rominfo pane. Make output window white on black 2012-07-03 07:51:58 +01:00
Paul Holden
b2a578ed1e Only update various bits of UI when active 2012-07-03 07:43:56 +01:00
Paul Holden
b213449e88 Alias hi/lo regs as Int32Arrays so we can avoid more deopts 2012-07-03 07:22:22 +01:00
Paul Holden
295da6ed50 Some more _signed microopts. Remove some repeated calls to rs()/rt() 2012-07-03 07:15:23 +01:00
Paul Holden
fdaeee9ff6 Perform nextPC/branchTarget setup as a part of postOp - more scope for runtime to optimise 2012-07-02 22:58:09 +01:00
Paul Holden
91ef5421a5 Use _signed registers where possible to avoid deopts (plus some associated optimisations) 2012-07-02 22:54:55 +01:00
Paul Holden
303c46714b Fix tagged-to-i deopts coming from SLT instructions 2012-07-01 22:00:32 +01:00
Paul Holden
152bd08012 Special case or with r0 for rs/rt 2012-07-01 11:48:55 +01:00
Paul Holden
7c2ef24e23 Seems if/else is faster than ternary - http://jsperf.com/ternary-vs-and-or-vs-if-else/2 2012-07-01 11:34:39 +01:00
Paul Holden
84125913ff Rename opsExecuted to opsCompiled 2012-07-01 10:50:46 +01:00
Paul Holden
29cd5cfbff Make handleCounter use cpu stuffToDo flags, so we can simplify the code a little bit 2012-07-01 10:50:15 +01:00
Paul Holden
d2e0b3bff3 Crack out args for add/sub/and/or/xor/nor. Hardcode next pc (should always be known in advace) 2012-07-01 10:37:38 +01:00
Paul Holden
e8270fafe5 Increase the number of ops in a fragment 2012-06-30 21:14:25 +01:00
Paul Holden
3306e609ff Hoist out special and regimm instructions 2012-06-30 21:13:39 +01:00
Paul Holden
a2e0c6c1fc Fix issue with interrupts being missed if fragments were executing (wasn't checking stuffToDo) 2012-06-30 12:15:34 +01:00
Paul Holden
a22e6bfbd4 Dynarec first pass. Gives a small speedup but lots of improvements to come 2012-06-30 11:32:15 +01:00
Paul Holden
e3d4597a75 Avoid some overhead in performBranch 2012-06-27 08:03:08 +01:00
Paul Holden
80255ada54 Further simplifications to the way that the PC is updated. There's an explicit nextPC now, which is set directly and avoids some horrible fiddling with .pc to compensate for the post-execute increment 2012-06-27 07:55:59 +01:00