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