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