Commit graph

274 commits

Author SHA1 Message Date
Matthew Berry
0f0d2a4c20 arm data processing clear pipeline if r15=rd 2020-10-13 23:15:29 -07:00
Matthew Berry
025a0c3d5b stub keypad to 0xFF (no keys pressed) 2020-10-13 23:14:17 -07:00
Matthew Berry
cbe206b13e implement sbc, make data_processing use abstracted arith 2020-10-13 18:59:40 -07:00
Matthew Berry
86195d55d1 arm multiply long 2020-10-12 00:10:44 -07:00
Matthew Berry
54dcc01487 allow multiplication wrapping 2020-10-11 23:56:56 -07:00
Matthew Berry
3d0408d702 set proper flags for adc 2020-10-11 23:47:21 -07:00
Matthew Berry
ad446281fc fix stmia register order 2020-10-11 20:07:28 -07:00
Matthew Berry
155f0a7f68 arm single data transfer respect byte quantity 2020-10-11 19:56:53 -07:00
Matthew Berry
4654d15e2a arm fix strh, only store halfword 2020-10-11 19:44:31 -07:00
Matthew Berry
f9c8ae7668 thumb load address 2020-10-11 13:33:04 -07:00
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