Commit graph

64 commits

Author SHA1 Message Date
Matthew Berry
e8de35e27e fix large asr 2020-10-11 13:32:35 -07:00
Matthew Berry
403bd71d7e impl bgcnt registers 2020-10-11 12:23:13 -07:00
Matthew Berry
367b578d9f clear pipeline if rd==15 in thumb hi-reg bx, load/store imm, load/store reg 2020-10-11 10:29:22 -07:00
Matthew Berry
b52599ae2d thumb fix conditional branch crash on wrong int type 2020-10-10 20:38:48 -07:00
Matthew Berry
9b1f73e741 thumb load/store register offset 2020-10-10 20:38:15 -07:00
Matthew Berry
dfb833a351 arm multiply, fix arm lut bit selection 2020-10-10 18:48:08 -07:00
Matthew Berry
4a2f0a6789 scheduler, ppu vcount/dispstat on scheduler, ppu io fix read/write order 2020-10-09 21:01:04 -07:00
Matthew Berry
71235e4b2a arm fix negative branch offset 2020-10-09 20:17:51 -07:00
Matthew Berry
cf156829e5 add dispstat + reads/writes 2020-10-09 00:58:07 -07:00
Matthew Berry
705113eae2 arm block data transfer 2020-10-08 08:35:04 -07:00
Matthew Berry
e29bde0bcf arm fix single data transfer imm offset, add mmio/interrupt writes
this hits the fps by ~15 for some reason on tonc's m3_demo...
2020-10-07 08:19:14 -07:00
Matthew Berry
9c166aca90 thumb halfword data transfer immediate, pram read/write 2020-10-06 21:13:07 -07:00
Matthew Berry
d808070d24 custom/minimal pipeline implementation in favor of Deque
also removed constants from Bus class, which seems to have improved
performance for some reason as well
2020-10-05 00:14:19 -07:00
Matthew Berry
493d8b74f6 remove constant ranges from bus, redesign mem map lookups
Turns out constants in Crystal are slow as _hell_. Thanks Ary for the
help discovering that. Maybe one day Crystal will improve that, but for
now this change over triples performance.
2020-10-04 16:10:34 -07:00
Matthew Berry
800bf36803 remove hot .to_u8 call in bus, add fps to display title 2020-10-04 00:18:23 -07:00
Matthew Berry
7795000cac thumb fix setting reg in high reg branch exchange 2020-10-03 14:55:25 -07:00
Matthew Berry
0177822cfc thumb load/store sign extended 2020-10-03 14:33:07 -07:00
Matthew Berry
63a57e07ab thumb sp-relative load/store 2020-10-03 00:54:07 -07:00
Matthew Berry
f1058e3450 thumb add offset to stack pointer 2020-10-03 00:10:58 -07:00
Matthew Berry
7228a50427 loop cpu forever, make cpu tick other components 2020-10-03 00:00:00 -07:00
Matthew Berry
fc9f3d3035 very basic ppu, passing tonc first.gba 2020-10-02 23:30:14 -07:00
Matthew Berry
b25d941d0f thumb unconditional branch 2020-10-02 23:13:59 -07:00
Matthew Berry
67c58e5f2b vram writes 2020-10-02 00:00:21 -07:00
Matthew Berry
1d148c3ea7 thumb load/store halfword, add halfword type, add halfword write 2020-10-01 22:20:03 -07:00
Matthew Berry
b830b97687 ppu writes to dispcnt 2020-09-30 22:19:43 -07:00
Matthew Berry
843fb155df fix thumb add not setting value, rename var in thumb multiple load/store 2020-09-30 22:03:33 -07:00
Matthew Berry
4194dfb6fd fix word writes, fix register list in thumb push/pop, fix thumb push/pop stack pointer decrement 2020-09-30 22:01:55 -07:00
Matthew Berry
27b0a4e4ce thumb only clear pipeline when branching 2020-09-30 00:01:36 -07:00
Matthew Berry
e4d98a3970 thumb long branch offset is signed 2020-09-30 00:00:09 -07:00
Matthew Berry
f230348f75 thumb push/pop registers 2020-09-29 00:17:46 -07:00
Matthew Berry
cf310896b1 abstract addition, set carry/overflow flags for addition 2020-09-28 23:33:38 -07:00
Matthew Berry
21ae86e2ff thumb load/store immediate offset 2020-09-28 22:46:28 -07:00
Matthew Berry
e7664c5796 thumb high register branch 2020-09-28 22:28:46 -07:00
Matthew Berry
3ad9f6d8df patch check_cond abstraction, now works properly with thumb and arm 2020-09-28 00:13:47 -07:00
Matthew Berry
116058472c abstract subtraction, set carry/overflow flags for subtraction 2020-09-28 00:12:47 -07:00
Matthew Berry
15433454a4 allow writes to wram board/chip 2020-09-27 23:39:18 -07:00
Matthew Berry
d62bfecacf thumb multiple load store 2020-09-27 23:33:13 -07:00
Matthew Berry
ac7e3bbe72 thumb alu operations 2020-09-27 23:32:14 -07:00
Matthew Berry
7820e69eb6 thumb actually check the condition... 2020-09-27 22:41:54 -07:00
Matthew Berry
0ec726cfbe thumb add/subtract 2020-09-27 22:41:02 -07:00
Matthew Berry
3471a8b34c thumb long branch 2020-09-27 20:06:47 -07:00
Matthew Berry
99bdf3ec86 thumb move/compare/add/subtract, fix thumb conditional branch bug 2020-09-27 19:55:47 -07:00
Matthew Berry
7d8e2dccef set carry flag from barrel shifter ops (arm & thumb) 2020-09-27 18:12:04 -07:00
Matthew Berry
8e6040e4c4 thumb conditional branch, fix reg rotation, thumb/arm abstraction 2020-09-27 17:51:17 -07:00
Matthew Berry
55589ea0b0 thumb move shifted register (- carry flag)
diverges from armwrestler here bc of carry flag
2020-09-27 17:00:21 -07:00
Matthew Berry
eb5d932579 thumb pc relative load 2020-09-27 16:58:22 -07:00
Matthew Berry
cbc140b7c4 basic thumb template 2020-09-27 16:14:17 -07:00
Matthew Berry
9eca952a78 arm branch exchange impl 2020-09-27 14:44:32 -07:00
Matthew Berry
e238d297cc fix register reads in data processing instrs 2020-09-27 13:54:49 -07:00
Matthew Berry
09b8876b73 early psr transfer implementation 2020-09-27 13:51:17 -07:00