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
Matthew Berry
4b745a075a
basic single data transfer impl
2020-09-27 00:41:25 -07:00
Matthew Berry
df79b7b48b
data processing logical flags, minor rotate_register patch, abstract immediate_offset
2020-09-26 21:47:00 -07:00
Matthew Berry
64c8b26fb8
update bits macro to call methods on RangeLiteral rather than Range
2020-09-26 18:08:44 -07:00
Matthew Berry
2a0aac031b
fix logging and unused opcodes in lut
2020-09-25 20:57:19 -07:00
Matthew Berry
e9a1acb52a
move cpsr onto new bitfield implementation
2020-09-23 08:21:56 -07:00
Matthew Berry
e94754ca06
initial minimum readme information
2020-09-17 23:55:34 -07:00
Matthew Berry
b026160553
move instr lookup to lookup table, move instrs into module across files
2020-09-16 22:54:15 -07:00
Matthew Berry
ea5322b0fa
pulled out register rotation since it seems like that'll need to be abstracted
2020-09-15 22:57:01 -07:00
Matthew Berry
238076dda3
default regs, log/trace macros, print mgba-style state
2020-09-14 23:28:50 -07:00
Matthew Berry
fbacc2cf9f
make bitfields macros instead of function calls
2020-09-13 17:07:14 -07:00
Matthew Berry
eafe206b06
cleanup, shifts, and some data processing w/o flags
2020-09-01 00:04:27 -07:00
Matthew Berry
2ef9b87cd6
check condition before executing instruction
2020-08-24 23:21:52 -07:00
Matthew Berry
f004c0f461
branching and basic instr pipeline
2020-08-22 15:17:58 -07:00