Rekai Nyangadzayi Musuka
af1887e0a6
feat: schedule audio sampling on scheduler
...
DMA sound in games like Pokemon Emerald, Chobits, Love Hina, and Kirby:
Nightmare in Dream Land sound great save for conerns about resampling
2022-10-21 05:12:36 -03:00
Rekai Nyangadzayi Musuka
14bb2f6fbe
chore: improve timer behaviour
2022-10-21 05:12:36 -03:00
Rekai Nyangadzayi Musuka
d144973acf
chore: move some init code to functions
2022-10-21 05:12:35 -03:00
Rekai Nyangadzayi Musuka
eecd78a008
feat: impelemt THUMB open bus
2022-10-21 05:12:35 -03:00
Rekai Nyangadzayi Musuka
c03c142b14
feat: implement ARM read open bus
2022-10-21 05:12:35 -03:00
Rekai Nyangadzayi Musuka
40f3600de2
fix: remove accidental rotation in ldrsh instructions
2022-10-21 05:12:35 -03:00
Rekai Nyangadzayi Musuka
c08e331f77
chore: move log statement
2022-10-21 05:12:35 -03:00
Rekai Nyangadzayi Musuka
a92989ed24
chore: remove magic numbers
2022-10-21 05:12:35 -03:00
Rekai Nyangadzayi Musuka
6c61eb3537
chore: remove unnecessary 32MB allocation
2022-10-21 05:12:34 -03:00
Rekai Nyangadzayi Musuka
05c1274ec1
chore: define more I/O read/writes
2022-10-21 05:12:34 -03:00
Rekai Nyangadzayi Musuka
27ad8772ea
feat: pass jsmolka memory.gba
2022-10-21 05:12:34 -03:00
Rekai Nyangadzayi Musuka
135987745c
chore: ignore instead of logging errors for perf reasons
2022-10-21 05:12:34 -03:00
Rekai Nyangadzayi Musuka
f039c891c7
feat: Initial Implementation of DMA Audio
2022-10-21 05:12:33 -03:00
Rekai Nyangadzayi Musuka
e69f4cfafe
chore: tick scheduler on memory access
2022-10-21 05:12:33 -03:00
Rekai Nyangadzayi Musuka
a4020400da
chore: log error on open bus in page 0x00 and 0x01
2022-10-21 05:12:33 -03:00
Rekai Nyangadzayi Musuka
d4aac22e34
chore: rewrite I/O read/writes
2022-10-21 05:12:33 -03:00
Rekai Nyangadzayi Musuka
601e717850
chore: reimplement bus read/writes
2022-10-21 05:12:33 -03:00
Rekai Nyangadzayi Musuka
886b9abf3d
fix: force align reads/writes in memory bus rather than in CPU
2022-10-21 05:12:32 -03:00
Rekai Nyangadzayi Musuka
9c87b9820e
fix: pass none.gba and kind of sram.gba from jsmolka test suite
2022-10-21 05:12:32 -03:00
Rekai Nyangadzayi Musuka
1fe332a44f
feat: implement GamePak out-of-bounds reads
2022-10-21 05:12:32 -03:00
Rekai Nyangadzayi Musuka
b6d2084c96
chore: run zigfmt
2022-10-21 05:12:32 -03:00
Rekai Nyangadzayi Musuka
ed896d976d
chore: change implementation of rotr
2022-10-21 05:12:32 -03:00
Rekai Nyangadzayi Musuka
677eecad41
chore: rewrite read/write methods for remainig Bus devices
2022-10-21 05:12:32 -03:00
Rekai Nyangadzayi Musuka
74b6fa2ecc
chore: mirror VRAM
2022-10-21 05:12:31 -03:00
Rekai Nyangadzayi Musuka
effb6315e9
chore: write generic read/write for VRAM
2022-10-21 05:12:31 -03:00
Rekai Nyangadzayi Musuka
3c8390a248
Merge branch 'main' of ssh://musuka.dev:2222/paoda/zba
2022-10-21 05:12:31 -03:00
Rekai Nyangadzayi Musuka
8337a6dcd9
chore: update dependencies
2022-10-21 05:12:31 -03:00
Rekai Nyangadzayi Musuka
2d8fa9c2f7
fix: don't create un-needed save file
...
If we don't know if we support a game's save type yet, avoid
creating a file for it.
2022-10-21 05:12:30 -03:00
Rekai Nyangadzayi Musuka
b76481b34c
chore: don't assume 1cpi when stepping by a frame
2022-10-21 05:12:30 -03:00
Rekai Nyangadzayi Musuka
147f6ac9ec
Revert "chore: tick on memory access instead of 1cpi"
...
This reverts commit 7f555095f2
.
2022-10-21 05:12:30 -03:00
Rekai Nyangadzayi Musuka
84273cbdad
chore: tick on memory access instead of 1cpi
2022-10-21 05:12:30 -03:00
Rekai Nyangadzayi Musuka
885f92beeb
feat: implement Flash backup cartrige kinds
2022-10-21 05:12:30 -03:00
Rekai Nyangadzayi Musuka
f12800f2d0
chore: stub more apu I/O addresses
2022-10-21 05:12:30 -03:00
Rekai Nyangadzayi Musuka
a93b335dea
fix: account for subset of disallowed chars in save file names
2022-10-21 05:12:29 -03:00
Rekai Nyangadzayi Musuka
ad9463dcb9
feat: implement SRAM saving and loading
2022-10-21 05:12:29 -03:00
Rekai Nyangadzayi Musuka
242627199b
chore: properly deallocate OAM buffer
2022-10-21 05:12:29 -03:00
Rekai Nyangadzayi Musuka
22a8f67d81
fix: speed percentage in title is now accurate
...
We now properly account for full speed being 59.97Hz not, 59Hz or 60Hz
2022-10-21 05:12:29 -03:00
Rekai Nyangadzayi Musuka
4ee0eed2e5
chore: make some variables const
2022-10-21 05:12:29 -03:00
Rekai Nyangadzayi Musuka
20f39176c6
feat: minor performance improvements
2022-10-21 05:12:29 -03:00
Rekai Nyangadzayi Musuka
ed792d71d3
feat: switch from BGR555 to RGBA8888
2022-10-21 05:12:28 -03:00
Rekai Nyangadzayi Musuka
c3ae727ed1
fix: improve perf of instructions w/ rotr
2022-10-21 05:12:28 -03:00
Rekai Nyangadzayi Musuka
0116dcdbe1
fix: improve frame limiting and fps counting
2022-10-21 05:12:28 -03:00
Rekai Nyangadzayi Musuka
5ecbcc9f33
fix: implement proper SRAM mirroring and stub Flash
2022-10-21 05:12:28 -03:00
Rekai Nyangadzayi Musuka
2d16e4a4e6
chore: move DMA and Timers from io to bus
2022-10-21 05:12:28 -03:00
Rekai Nyangadzayi Musuka
bb9dc45e0c
feat: define APU registers
2022-10-21 05:12:27 -03:00
Rekai Nyangadzayi Musuka
9dcecc0d58
fix: move code in scheduler to ppu
2022-10-21 05:12:27 -03:00
Rekai Nyangadzayi Musuka
92e63f5dd6
chore: create different types of emuloops
2022-10-21 05:12:27 -03:00
Rekai Nyangadzayi Musuka
74cda6a1d0
fix: resolve relative sprite priority issues
2022-10-21 05:12:27 -03:00
Rekai Nyangadzayi Musuka
d7354cca33
chore: improve accuracy of frame limiter
2022-10-21 05:12:27 -03:00
Rekai Nyangadzayi Musuka
7684cf0f4a
chore: improve accuracy of thread sleep in emu thread
2022-10-21 05:12:27 -03:00
Rekai Nyangadzayi Musuka
3994c2c7c8
feat: implement video sync
2022-10-21 05:12:26 -03:00
Rekai Nyangadzayi Musuka
a768d28e7c
chore: organize io switch statements
2022-10-21 05:12:26 -03:00
Rekai Nyangadzayi Musuka
efd99f16e0
fix: mirror SRAM
...
SRAM is mirrored in 64K chunks
TODO: According to GBATEK SRAM chips are 32K and mirrored
2022-10-21 05:12:26 -03:00
Rekai Nyangadzayi Musuka
61d6288fec
chore: don't panic on unknown bus and io writes/reads
...
This will lead to emulation bugs due to devices I've yet to implement but by
doing this a lot of games become playable "by default" such as Doom or
Kirby: Nightmare in Dream Land.
When implementing feature and/or debuggin make sure to set:
panic_on_und_bus and panic_on_und_io to true so that the emu crashes
on unknown reads/writes
2022-10-21 05:12:26 -03:00
Rekai Nyangadzayi Musuka
e3e45cd129
feat: implement Timers
2022-10-21 05:12:26 -03:00
Rekai Nyangadzayi Musuka
15191aedca
fix: implement sprite coord overflow behaviour
2022-10-21 05:12:26 -03:00
Rekai Nyangadzayi Musuka
63486f13f2
fix: resolve issues with sprite mirroring
2022-10-21 05:12:25 -03:00
Rekai Nyangadzayi Musuka
17455e40d1
feat: Implement MVP of Mode 0 Sprites
2022-10-21 05:12:25 -03:00
Rekai Nyangadzayi Musuka
d54e593276
chore: clean up io
2022-10-21 05:12:25 -03:00
Rekai Nyangadzayi Musuka
c6a544a824
feat: fix tile flipping issue
2022-10-21 05:12:25 -03:00
Rekai Nyangadzayi Musuka
e3ae3635bc
chore: add some type definitions for sprites
2022-10-21 05:12:25 -03:00
Rekai Nyangadzayi Musuka
6723bfb364
feat: improve DMA Transfer support
2022-10-21 05:12:25 -03:00
Rekai Nyangadzayi Musuka
12c628e82c
chore(ppu): resolve integer overflow regression
2022-10-21 05:12:24 -03:00
Rekai Nyangadzayi Musuka
5f9abf69d3
feat(ppu): implement bg priority and transparency
2022-10-21 05:12:24 -03:00
Rekai Nyangadzayi Musuka
68b0601a42
chore: replace unnecessarily complex sign extension implementation
2022-10-21 05:12:24 -03:00
Rekai Nyangadzayi Musuka
9455ffe837
feat: pass beeg yoshi
2022-10-21 05:12:24 -03:00
Rekai Nyangadzayi Musuka
02d2ff3e0c
fix: palette id is a u16 not a u8
2022-10-21 05:12:24 -03:00
Rekai Nyangadzayi Musuka
02572dd15c
feat: DMA Transfer MVP
2022-10-21 05:12:23 -03:00
Rekai Nyangadzayi Musuka
6d253cc74e
feat(ppu): implement transparency + backdrop in mode 0
2022-10-21 05:12:23 -03:00
Rekai Nyangadzayi Musuka
4885a86833
chore(io): replace some bitfields with enums
2022-10-21 05:12:23 -03:00
Rekai Nyangadzayi Musuka
fd9ffb20b4
fix: better emulate behaviour of IO reads
2022-10-21 05:12:23 -03:00
Rekai Nyangadzayi Musuka
56ef2b077a
chore: document select unimplmented I/O registers
...
These registers are written to / read from Kirby: Nightmare in Dream Land
2022-10-21 05:12:23 -03:00
Rekai Nyangadzayi Musuka
d4c7cfdf8b
feat: impelement a barebones SRAM
2022-10-21 05:12:23 -03:00
Rekai Nyangadzayi Musuka
4d75d156e5
feat: pass retAddr.gba
2022-10-21 05:12:22 -03:00
Rekai Nyangadzayi Musuka
d30a4d7ee5
feat: implement Hblank and Vcount Interrupts
...
Also implemented unique behaviour when writing to IF
2022-10-21 05:12:22 -03:00
Rekai Nyangadzayi Musuka
d1fce8ba75
chore: improve Bus log + panic messages
2022-10-21 05:12:22 -03:00
Rekai Nyangadzayi Musuka
0f74e4fcf9
chore: improve io.zig
2022-10-21 05:12:22 -03:00
Rekai Nyangadzayi Musuka
4afcbd0957
feat: implement mirroring for IWRAM EWRAM, OAM and PALRAM
...
Also realized I confused IWRAM and EWRAM. This is also fixed
TODO: Implemnt Mirroring for VRRAM
2022-10-21 05:12:22 -03:00
Rekai Nyangadzayi Musuka
50dc31447d
fix: resolve integer overflow in BG0 Drawing
2022-10-21 05:12:22 -03:00
Rekai Nyangadzayi Musuka
acf1a10f91
chore: don't panic on 32-bit I/O
2022-10-21 05:12:21 -03:00
Rekai Nyangadzayi Musuka
606f9b959a
chore: stub CPU HALTing
2022-10-21 05:12:21 -03:00
Rekai Nyangadzayi Musuka
f19b42baf3
chore: correct logic errors in map size 1 and 3
2022-10-21 05:12:21 -03:00
Rekai Nyangadzayi Musuka
2a3d0c8b0d
chore: properly write to VOFS and HOFS in 32-bit bus
2022-10-21 05:12:21 -03:00
Rekai Nyangadzayi Musuka
4405fa6bbf
feat: implement hofs and vofs on io bus
2022-10-21 05:12:21 -03:00
Rekai Nyangadzayi Musuka
e2b2bf882a
feat: implement scrolling
2022-10-21 05:12:21 -03:00
Rekai Nyangadzayi Musuka
08e4eb1bf1
feat: add support for multiple BGs in Mode 0
2022-10-21 05:12:20 -03:00
Rekai Nyangadzayi Musuka
f4b176a813
feat: document mode 0
2022-10-21 05:12:20 -03:00
Rekai Nyangadzayi Musuka
efc7d817db
feat: Mode 0 MVP
2022-10-21 05:12:20 -03:00
Rekai Nyangadzayi Musuka
1b17b1eb0c
chore: use zig slices for fun
2022-10-21 05:12:20 -03:00
Rekai Nyangadzayi Musuka
fab6d4c2a2
chore: give DISPCNT DISPSTAT and VCOUNT to PPU struct
2022-10-21 05:12:20 -03:00
Rekai Nyangadzayi Musuka
223a3403c0
chore: give io read/write functions access to the entire Bus
2022-10-21 05:12:20 -03:00
Rekai Nyangadzayi Musuka
dfd0d064de
feat: implement BG Scrolling Registers
2022-10-21 05:12:19 -03:00
Rekai Nyangadzayi Musuka
0c4882e658
feat: impelemnt BG0,1,2CNT and IF
2022-10-21 05:12:19 -03:00
Rekai Nyangadzayi Musuka
bfdad9fa32
feat: implement OAM
2022-10-21 05:12:19 -03:00
Rekai Nyangadzayi Musuka
37fd8dab84
chore: squash bugs preventing swi_demo.gba from working
2022-10-21 05:12:19 -03:00
Rekai Nyangadzayi Musuka
c143aefb01
chore(cpu): reimplement bank switching logic
2022-10-21 05:12:19 -03:00
Rekai Nyangadzayi Musuka
05bf245b5a
fix: don't mask away MSB in THUMB.5 add
2022-10-21 05:12:19 -03:00
Rekai Nyangadzayi Musuka
f9e7128061
fix: properly decode format 11 instructions
2022-10-21 05:12:18 -03:00
Rekai Nyangadzayi Musuka
603e4b6fdf
chore: make use of scoped logging
2022-10-21 05:12:18 -03:00
Rekai Nyangadzayi Musuka
599a1f2973
chore: remove TODOs and some useless imports
2022-10-21 05:12:18 -03:00
Rekai Nyangadzayi Musuka
22424ca69c
fix: improper condition check and initialization of register
2022-10-21 05:12:18 -03:00
Rekai Nyangadzayi Musuka
67a785cc22
fix(cpu): force align thumb and arm block data transfers
2022-10-21 05:12:18 -03:00
Rekai Nyangadzayi Musuka
4eb3842606
feat: pass arm.gba
2022-10-21 05:12:17 -03:00
Rekai Nyangadzayi Musuka
1ee8b51b2b
chore: reimplement ARM LDM/STM
2022-10-21 05:12:17 -03:00
Rekai Nyangadzayi Musuka
130310e5cc
chore: improve arm ldm/stm
2022-10-21 05:12:17 -03:00
Rekai Nyangadzayi Musuka
e933d7e5c7
fix(cpu): force-align SWP reads and writes
2022-10-21 05:12:17 -03:00
Rekai Nyangadzayi Musuka
44e8b5b882
fix: force-align ARM STRH reads
2022-10-21 05:12:17 -03:00
Rekai Nyangadzayi Musuka
28361e8b7d
fix: implement the same LDRSH logic as THUMB LDRSH
2022-10-21 05:12:16 -03:00
Rekai Nyangadzayi Musuka
75921d6413
fix: PC is 12 ahead when it is rd in str and strb
2022-10-21 05:12:16 -03:00
Rekai Nyangadzayi Musuka
17226d8f75
fix: listen to my past self
...
By deleting this line I go from test 234 to test 355 in arm.gba
2022-10-21 05:12:16 -03:00
Rekai Nyangadzayi Musuka
2cb1bf834a
chore: dont use std.mem.bytesToValue
...
the stdlib accounts for endianness, which isn't something we want.
2022-10-21 05:12:16 -03:00
Rekai Nyangadzayi Musuka
8006ca31e6
chore: remove unnecessary @as calls
2022-10-21 05:12:16 -03:00
Rekai Nyangadzayi Musuka
82b92b4733
feat: pass thumb.gba
2022-10-21 05:12:15 -03:00
Rekai Nyangadzayi Musuka
bf42d3ae2f
chore: account for empty rlist in THUMB LDM/STM
2022-10-21 05:12:15 -03:00
Rekai Nyangadzayi Musuka
f63ae76931
fix(cpu): handle edge case in LDRSH
2022-10-21 05:12:15 -03:00
Rekai Nyangadzayi Musuka
f046787523
chore: reorganize util.zig
2022-10-21 05:12:15 -03:00
Rekai Nyangadzayi Musuka
bbd73550e8
fix: zero initialize all allocated memory
2022-10-21 05:12:15 -03:00
Rekai Nyangadzayi Musuka
4776dc0788
Revert "fix: allow for 32-bit reads to KEYINPUT"
...
This reverts commit 3a51707280
.
2022-10-21 05:12:14 -03:00
Rekai Nyangadzayi Musuka
d8bd6da563
fix: resolve decoding mixup in THUMB format 8 instructions
2022-10-21 05:12:14 -03:00
Rekai Nyangadzayi Musuka
b569a32170
fix: allow for 32-bit reads to KEYINPUT
2022-10-21 05:12:14 -03:00
Rekai Nyangadzayi Musuka
06e20666bd
chore: refactor ARMv4 decoding
2022-10-21 05:12:14 -03:00
Rekai Nyangadzayi Musuka
36687c5c67
chore: add more debug information to CPU panic method
2022-10-21 05:12:14 -03:00
Rekai Nyangadzayi Musuka
dd9b20030a
chore: give more descriptive panic messages when changing mode fails
2022-10-21 05:12:13 -03:00
Rekai Nyangadzayi Musuka
c0db2a987b
chore: clean up THUMB instruction decoding
2022-10-21 05:12:13 -03:00
Rekai Nyangadzayi Musuka
c3ff2ed6c1
feat: parse cartridge header
2022-10-21 05:12:13 -03:00
Rekai Nyangadzayi Musuka
271f42cf0e
feat: rename ARM and THUMB SWI functions
2022-10-21 05:12:13 -03:00
Rekai Nyangadzayi Musuka
01e15584da
chore: group THUMB and select ARM instructions together (same file)
2022-10-21 05:12:13 -03:00
Rekai Nyangadzayi Musuka
17b91db2ef
feat: integrate zig-clap with ZBA
2022-10-21 05:12:13 -03:00
Rekai Nyangadzayi Musuka
3e786d02ac
fix(cpu): properly decode format 7 and 8
2022-10-21 05:12:12 -03:00
Rekai Nyangadzayi Musuka
c8f2db69df
fix(cpu): resolve edge cases in THUMB Format 5
2022-10-21 05:12:12 -03:00
Rekai Nyangadzayi Musuka
b4e0682801
fix(cpu): allow for select values to overflow
...
FuzzARM found these operations which panicked, when they should
have overflowed. These are now fixed
n = 8000
2022-10-21 05:12:12 -03:00
Rekai Nyangadzayi Musuka
af10c1b076
feat(cpu): implement format 13
...
While bugs do exist, at this point all THUMB and ARMv4 instructions
have been implemented! Yay!
2022-10-21 05:12:12 -03:00
Rekai Nyangadzayi Musuka
e6a0eab667
feat(cpu): implement THUMB format 17
2022-10-21 05:12:12 -03:00
Rekai Nyangadzayi Musuka
523b9d2736
feat(cpu): implement THUMB format11
2022-10-21 05:12:12 -03:00
Rekai Nyangadzayi Musuka
011d2f2f2a
chore: update to latest zig nightly
2022-10-21 05:12:11 -03:00
Rekai Nyangadzayi Musuka
c37546d273
chore: progress towards passing ldr/str thumb in armwrestler
2022-10-21 05:12:11 -03:00
Rekai Nyangadzayi Musuka
fbedebb938
fix(cpu): properly negate in NEG
2022-10-21 05:12:11 -03:00
Rekai Nyangadzayi Musuka
1773a3acc8
fix(cpu): reimplement THUMB offset shifts
2022-10-21 05:12:11 -03:00
Rekai Nyangadzayi Musuka
058c02150c
fix(cpu): op == 0b00 decodes to add in format 5
2022-10-21 05:12:11 -03:00
Rekai Nyangadzayi Musuka
8d841ead50
fix(cpu): account for overflow in THUMB alu MUL
2022-10-21 05:12:10 -03:00
Rekai Nyangadzayi Musuka
152dafbdf7
chore: use if-else when decoding THUMB instructions
2022-10-21 05:12:10 -03:00
Rekai Nyangadzayi Musuka
7dbd2fc556
fix(cpu): account for rn in rlist in block data transfer
2022-10-21 05:12:10 -03:00
Rekai Nyangadzayi Musuka
85e0924669
feat: implement LDM/STM behaviour when S is set
2022-10-21 05:12:10 -03:00
Rekai Nyangadzayi Musuka
97919f646d
feat(cpu): Pass all LDR/STR ARMwrestler tests
2022-10-21 05:12:10 -03:00
Rekai Nyangadzayi Musuka
696cc1b359
feat(cpu): decode and implement all necessary ARM CPU instructions
2022-10-21 05:12:10 -03:00
Rekai Nyangadzayi Musuka
151de2eab4
feat(cpu): implement ARM SWP and SWPB
2022-10-21 05:12:10 -03:00
Rekai Nyangadzayi Musuka
e7f6464564
fix: resolve off by n * 2 when accessing Palette during BG Mode 4
2022-10-21 05:12:09 -03:00
Rekai Nyangadzayi Musuka
da681c946e
feat(cpu): Implement Multiply Long ARM instructions
2022-10-21 05:12:09 -03:00
Rekai Nyangadzayi Musuka
e0e43eece5
fix: no buttons are pressed by default
2022-10-21 05:12:09 -03:00
Rekai Nyangadzayi Musuka
7013389288
feat(cpu): implement format 18 THUMB instructions
2022-10-21 05:12:09 -03:00
Rekai Nyangadzayi Musuka
443520ecae
chore: more detailed panic message
2022-10-21 05:12:09 -03:00
Rekai Nyangadzayi Musuka
96d7285111
feat(cpu): implement format 10 THUMB instructions
2022-10-21 05:12:08 -03:00
Rekai Nyangadzayi Musuka
7e6fc44191
feat(cpu): implement SWP
2022-10-21 05:12:08 -03:00
Rekai Nyangadzayi Musuka
9cb4ebaa7f
fix(cpu): perform MUL with u64s, throw away upper 32 bits
2022-10-21 05:12:08 -03:00
Rekai Nyangadzayi Musuka
3e4d7e7ed8
feat: implement keyboard input
2022-10-21 05:12:08 -03:00
Rekai Nyangadzayi Musuka
3a6951d93d
chore: don't panic on unsupported BG mode
2022-10-21 05:12:08 -03:00
Rekai Nyangadzayi Musuka
391096872e
chore: tempoarily disable fps counter
2022-10-21 05:12:08 -03:00
Rekai Nyangadzayi Musuka
eebf6fcae4
chore: zero-initialize VRAM
2022-10-21 05:12:07 -03:00
Rekai Nyangadzayi Musuka
8b7223cf35
chore: stub KeyInput I/O register
2022-10-21 05:12:07 -03:00
Rekai Nyangadzayi Musuka
e1fec48a0e
fix(cpu): properly decode multiply instructions
2022-10-21 05:12:07 -03:00
Rekai Nyangadzayi Musuka
0778ee8dd7
feat(cpu): implement ARM multiply instructions
2022-10-21 05:12:07 -03:00
Rekai Nyangadzayi Musuka
14d5160674
fix: allow 32-bit writes to DISPCNT
2022-10-21 05:12:07 -03:00
Rekai Nyangadzayi Musuka
eabf787305
fix(cpu): properly decode ldm stm thumb instructions
2022-10-21 05:12:07 -03:00
Rekai Nyangadzayi Musuka
980e4ff5dd
fix(cpu): properly decode THUMB PUSH and POP at comptime
2022-10-21 05:12:06 -03:00
Rekai Nyangadzayi Musuka
1ac193c506
fix(cpu): don't ignore 11th bit of THUMB BL offset
2022-10-21 05:12:06 -03:00
Rekai Nyangadzayi Musuka
d6ed071bc6
feat(cpu): implement thumb push / pop and stub format 13 thumb instrs
2022-10-21 05:12:06 -03:00
Rekai Nyangadzayi Musuka
a3d53d40fb
feat(cpu): implement THUMB format 9 loads / stores
2022-10-21 05:12:06 -03:00
Rekai Nyangadzayi Musuka
a17dfbe41f
fix(cpu): resolve issues with unexpected PC value in THUMB
2022-10-21 05:12:06 -03:00
Rekai Nyangadzayi Musuka
b9a81baa47
feat(cpu): implement THUMB ldmia stmia
2022-10-21 05:12:06 -03:00
Rekai Nyangadzayi Musuka
97b236225e
chore: implement THUMB format 4 instructions
2022-10-21 05:12:05 -03:00
Rekai Nyangadzayi Musuka
8113146b86
chore: dedup code in THUMB instructions
2022-10-21 05:12:05 -03:00
Rekai Nyangadzayi Musuka
e6625113db
chore: refactor and genericize ARM data processing calculations
2022-10-21 05:12:05 -03:00
Rekai Nyangadzayi Musuka
2643504eb5
chore: relocate barrel_shifter zig file
2022-10-21 05:12:05 -03:00
Rekai Nyangadzayi Musuka
f7518d1bab
feat(cpu): implement format2 THUMB instructions
2022-10-21 05:12:05 -03:00
Rekai Nyangadzayi Musuka
800ca798cd
feat(cpu): implement format19 THUMB instructions
2022-10-21 05:12:05 -03:00
Rekai Nyangadzayi Musuka
d714ffb4f9
chore: account for THUMB BL instruction when mimicking mGBA logs
2022-10-21 05:12:04 -03:00
Rekai Nyangadzayi Musuka
7bc186a03c
feat(cpu): implement format16 THUMB instructions
2022-10-21 05:12:04 -03:00
Rekai Nyangadzayi Musuka
b94b87d186
feat(cpu): implement format 1 THUMB instructions
2022-10-21 05:12:04 -03:00
Rekai Nyangadzayi Musuka
0289be60ef
fix: dont close file handle early
2022-10-21 05:12:04 -03:00
Rekai Nyangadzayi Musuka
93922b65e3
feat(cpu): implement format 6 THUMB instructions
2022-10-21 05:12:04 -03:00
Rekai Nyangadzayi Musuka
c6608748c6
chore: rename title
2022-10-21 05:12:04 -03:00
Rekai Nyangadzayi Musuka
8e383d55d7
chore: refactor GBA Display Timings
...
This change should reflect that the Hblank bit of DISPSTAT is toggled on all scanlines
while also ensuring that the Vblank bit is set on all Vblank scanlines
2022-10-21 05:12:03 -03:00
Rekai Nyangadzayi Musuka
8926026b5b
chore: move a single statement lol
2022-10-21 05:12:03 -03:00
Rekai Nyangadzayi Musuka
464479b986
chore: mark indexing methods as inline
2022-10-21 05:12:03 -03:00
Rekai Nyangadzayi Musuka
de1c84914c
feat: create emulator thread
2022-10-21 05:12:03 -03:00
Rekai Nyangadzayi Musuka
8e7766e694
chore: disable logging by default
2022-10-21 05:12:03 -03:00
Rekai Nyangadzayi Musuka
4858dbc5dc
chore: revert fastboot changes
2022-10-21 05:12:03 -03:00
Rekai Nyangadzayi Musuka
c4e131b92d
chore: binary logging + file logging + DP chanes + fastBoot changes
2022-10-21 05:12:02 -03:00
Rekai Nyangadzayi Musuka
2e54be76d6
chore: rename skipBios to fastBoot
2022-10-21 05:12:02 -03:00
Rekai Nyangadzayi Musuka
7914268702
chore: set correct values for select banked registers on fast boot
2022-10-21 05:12:02 -03:00
Rekai Nyangadzayi Musuka
4bdb85834c
feat(cpu): implement SWI
2022-10-21 05:12:02 -03:00
Rekai Nyangadzayi Musuka
f89a37936f
chore(bios): allow reading from BIOS
2022-10-21 05:12:02 -03:00
Rekai Nyangadzayi Musuka
8bb7ea6be6
fix(cpu): interim solution to weird program counter behaviour on illegal tst instruction
2022-10-21 05:12:01 -03:00
Rekai Nyangadzayi Musuka
60a1f7fa99
chore(cpu): implement behaviour for undefined test instruction
2022-10-21 05:12:01 -03:00
Rekai Nyangadzayi Musuka
b3b8182f85
fix(cpu): fix PC offset when barrel shifter and bit 4 of DP is set
2022-10-21 05:12:01 -03:00
Rekai Nyangadzayi Musuka
56e660714c
fix(cpu): implement S set + rd == 15 case for data processing
2022-10-21 05:12:01 -03:00
Rekai Nyangadzayi Musuka
eb632056a2
feat(cpu): implement banked registers
2022-10-21 05:12:01 -03:00
Rekai Nyangadzayi Musuka
fbc9de0335
fix(cpu): improve MRS and MSR instructions
2022-10-21 05:12:01 -03:00
Rekai Nyangadzayi Musuka
5c7539cd26
feat(cpu): implement CMN
2022-10-21 05:12:00 -03:00
Rekai Nyangadzayi Musuka
7c20e5fdb5
fix(barrel_shifter): fix PC being 1 word ahead in barrel shifter
2022-10-21 05:12:00 -03:00