Commit graph

296 commits

Author SHA1 Message Date
Matthew Berry
a5ebfd603c fix thumb high reg branch exchange: don't write on cmp 2020-10-23 23:29:05 -07:00
Matthew Berry
bef0d366b6 don't bank cpsr, fix cpsr->spsr copy, make mode enum return u32 2020-10-23 23:27:34 -07:00
Matthew Berry
1f9fad7777 set conditions flag on shift imm 2020-10-23 23:25:18 -07:00
Matthew Berry
94a063adc3 clear pipeline in block data transfer when writing to pc 2020-10-23 00:03:24 -07:00
Matthew Berry
476bb6afd4 only print to console if rendering in unsupported bg mode 2020-10-22 23:53:30 -07:00
Matthew Berry
7b34b5696b add spsr, fix psr transfer (switch mode), set sp on boot, default ppu mode 3 2020-10-22 23:05:49 -07:00
Matthew Berry
2a43b20797 bump bitfield version, add post_init to force all components to init at start 2020-10-21 22:19:32 -07:00
Matthew Berry
da624104fd support adding bios (necessary for interrupts) 2020-10-20 08:25:26 -07:00
Matthew Berry
b401524ea5 arm / thumb software interrupts, register banking 2020-10-19 00:00:05 -07:00
Matthew Berry
49f6d39e84 ror edge-case if bits&31==0 2020-10-18 17:13:51 -07:00
Matthew Berry
71d714fcab adc properly handle case when op2=0xFFFFFFFF and carry is set 2020-10-18 12:33:22 -07:00
Matthew Berry
2ea0eda602 asr handle case where shift > 31 2020-10-18 12:15:46 -07:00
Matthew Berry
860fc64b11 ror &= 31 2020-10-18 11:53:30 -07:00
Matthew Berry
e64b17aea4 asr simply return the word if the shift is 0 2020-10-18 11:38:56 -07:00
Matthew Berry
c6a1db4f6c lsr simply return the word if the shift is 0 2020-10-18 11:27:59 -07:00
Matthew Berry
5db41fa7b2 write to console on unaligned reads instead of aborting 2020-10-18 01:09:28 -07:00
Matthew Berry
7a4680cf8e arm halfword data transfer register offset 2020-10-18 00:29:36 -07:00
Matthew Berry
a10079c1d5 arm single data swap 2020-10-17 23:58:24 -07:00
Matthew Berry
cce814a3a7 fix signed long multiply and negative flag 2020-10-17 11:18:22 -07:00
Matthew Berry
b51e07b643 keyinput implemented 2020-10-17 00:18:11 -07:00
Matthew Berry
337e7d0bc8 render mode 4 w/ page flipping, stub green swap 2020-10-15 23:47:58 -07:00
Matthew Berry
e1f348ac1c barrel shifter handle rotation of 0 bits 2020-10-14 00:00:01 -07:00
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