Compare commits

..

517 Commits

Author SHA1 Message Date
Rekai Nyangadzayi Musuka 9436888b28 chore(gitignore): update .gitignore
sometimes I'm left with a src/zig-cache, and I want to
just make sure that I never-ever end up commiting that
2022-10-21 05:13:13 -03:00
Rekai Nyangadzayi Musuka 583ed54ee3 feat: write default config.toml if it doesn't exist
also resolves panic on missing /zba or /zba/save directory by ensuring
those directories exist as soon as we know the data directory
2022-10-21 05:13:13 -03:00
Rekai Nyangadzayi Musuka 7944cd7abc chore: update README 2022-10-21 05:13:13 -03:00
Rekai Nyangadzayi Musuka ffd94c96ce Merge pull request 'Configure SDL2 to use OpenGL' (#4) from opengl into main
Reviewed-on: #4
2022-10-21 05:13:13 -03:00
Rekai Nyangadzayi Musuka 4fe612da61 fix(opengl): properly control whether vsync is enabled 2022-10-21 05:13:12 -03:00
Rekai Nyangadzayi Musuka 4262688fa8 chore(ppu): remove BGR555 -> RGBA888 LUT
LUT probably couldn't fit in CPU cache anyways.

TODO: Consider whether LUTs for separate channels (size 32 * 3 * 3
instead of std.math.maxInt(u15))
2022-10-21 05:13:12 -03:00
Rekai Nyangadzayi Musuka 35d685f032 chore: replace OpenGL 4.5 bindings with OpenGL 3.3 2022-10-21 05:13:12 -03:00
Rekai Nyangadzayi Musuka 5b9d3d0960 chore: remove unnecessary ptr cast 2022-10-21 05:13:12 -03:00
Rekai Nyangadzayi Musuka 44b2e9be88 chore(gpio): add missing errdefer 2022-10-21 05:13:11 -03:00
Rekai Nyangadzayi Musuka 4b7ef52a7a feat: implement better Colour Emulation 2022-10-21 05:13:11 -03:00
Rekai Nyangadzayi Musuka 5103fdf646 chore(main): report errors slightly better 2022-10-21 05:13:11 -03:00
Rekai Nyangadzayi Musuka acddaf76aa fix: lower required OpenGL version + resolve offset bug 2022-10-21 05:13:11 -03:00
Rekai Nyangadzayi Musuka 3da3b69e13 feat: use opengl
TODO:
- Texture isn't scaling properly
- I need to reverse the colours in the frag shader
2022-10-21 05:13:11 -03:00
Rekai Nyangadzayi Musuka 40062d4dfe chore(config): add log message 2022-10-21 05:13:10 -03:00
Rekai Nyangadzayi Musuka 1c91b497bc feat(config): add option to skip BIOS 2022-10-21 05:13:10 -03:00
Rekai Nyangadzayi Musuka e3286a9872 feat(cli): Add option to skip BIOS 2022-10-21 05:13:10 -03:00
Rekai Nyangadzayi Musuka ddb0e2f928 chore: Update README.md 2022-10-21 05:13:10 -03:00
Rekai Nyangadzayi Musuka d927ee6c90 Merge pull request 'Draft: Implement Instruction Pipeline' (#3) from pipeline into main
Reviewed-on: #3
2022-10-21 05:13:10 -03:00
Rekai Nyangadzayi Musuka 011f105bee feat(config): add config option to mute ZBA 2022-10-21 05:13:09 -03:00
Rekai Nyangadzayi Musuka 2c88f9bbce fix(bios): set addr_latch even if bios is skipped 2022-10-21 05:13:09 -03:00
Rekai Nyangadzayi Musuka 30c5fafec1 chore(config): add example config file 2022-10-21 05:13:09 -03:00
Rekai Nyangadzayi Musuka 3b144e581a fix(bus): make open bus impl aware of CPU pipeline 2022-10-21 05:13:09 -03:00
Rekai Nyangadzayi Musuka 0117a52f4d style(bus): cpu ptr doesn't need to be optional 2022-10-21 05:13:09 -03:00
Rekai Nyangadzayi Musuka 3cf7c83269 style: code cleanup 2022-10-21 05:13:09 -03:00
Rekai Nyangadzayi Musuka 85d4690c56 fix: resolve timing regressions
make sure to use fetch timings when fetching instructions
2022-10-21 05:13:08 -03:00
Rekai Nyangadzayi Musuka 130d40bc7f fix: rename Pipline to Pipeline 2022-10-21 05:13:08 -03:00
Rekai Nyangadzayi Musuka 2c928eafec feat: working pipeline implementation 2022-10-21 05:13:08 -03:00
Rekai Nyangadzayi Musuka dcbeeee7cc chore: refactor ARM/THUMB data processing instructions 2022-10-21 05:13:08 -03:00
Rekai Nyangadzayi Musuka 84ccb7224b fix: don't flush pipeline when reloading CPSR in ARM Data Processing 2022-10-21 05:13:08 -03:00
Rekai Nyangadzayi Musuka dd4bb4ff03 chore: don't write to CPSR + swap with SPSR at the same time 2022-10-21 05:13:07 -03:00
Rekai Nyangadzayi Musuka ecbfe67b27 chore: update README.md 2022-10-21 05:13:07 -03:00
Rekai Nyangadzayi Musuka e29c20019d fix: advance r15, even when the pipeline is reloaded from the scheduler
The PC would fall behind whenever an IRQ was called because the pipeline
was reloaded (+8 to PC), however that was never actually done by any code

Now, the PC is always incremented when the pipeline is reloaded
2022-10-21 05:13:07 -03:00
Rekai Nyangadzayi Musuka d8c397248f chore: dump pipeline state on cpu panic 2022-10-21 05:13:07 -03:00
Rekai Nyangadzayi Musuka 64aed01869 fix: reimpl THUMB.5 instructions
pipeline branch now passes arm.gba and thumb.gba again

(TODO: Stop rewriting my commits away)
2022-10-21 05:13:07 -03:00
Rekai Nyangadzayi Musuka 29f2a0288f fix: impl workaround for stage2 miscompilation 2022-10-21 05:13:07 -03:00
Rekai Nyangadzayi Musuka 27ada16377 chore: instantly refill the pipeline on flush
I believe this to be necessary in order to get hardware interrupts
working.

thumb.gba test 108 fails but I'm committing anyways (despite the
regression) because this is kind of rebase/merge hell and I have
something that at least sort of works rn
2022-10-21 05:13:06 -03:00
Rekai Nyangadzayi Musuka ad1cec58e7 fix: reimpl handleInterrupt code 2022-10-21 05:13:06 -03:00
Rekai Nyangadzayi Musuka 97d9edab93 feat: implement basic pipeline
passes arm.gba, thumb.gb and armwrestler, fails in actual games
TODO: run FuzzARM debug specific titles
2022-10-21 05:13:06 -03:00
Rekai Nyangadzayi Musuka 39f56e6d8a feat: resolve off-by-{word, halfword} errors when printing debug info 2022-10-21 05:13:06 -03:00
Rekai Nyangadzayi Musuka f0014e7179 feat: reimplement cpu logging 2022-10-21 05:13:06 -03:00
Rekai Nyangadzayi Musuka 8a804ea05e Merge pull request 'Add TOML Support' (#2) from toml into main
Reviewed-on: #2
2022-10-21 05:13:05 -03:00
Rekai Nyangadzayi Musuka efce1a6dce chore(emu): refactor code 2022-10-21 05:13:05 -03:00
Rekai Nyangadzayi Musuka 8b9ab6f4b5 feat(config): add support for (and read from) TOML config file 2022-10-21 05:13:05 -03:00
Rekai Nyangadzayi Musuka d21c860eb5 feat: parse config.toml in data folder
Also took the chance to rework parts of the logic that determines
ZBA's save path
2022-10-21 05:13:05 -03:00
Rekai Nyangadzayi Musuka 85e670a1d7 chore: add zig-toml dependency 2022-10-21 05:13:05 -03:00
Rekai Nyangadzayi Musuka 4f823217bd chore: update dependencies 2022-10-21 05:13:04 -03:00
Rekai Nyangadzayi Musuka 207a99edbe style: improve code quality 2022-10-21 05:13:04 -03:00
Rekai Nyangadzayi Musuka 3c5b30dece feat: rewrite device ticks 2022-10-21 05:13:04 -03:00
Rekai Nyangadzayi Musuka 739d38533a style(scheduler): rename scheduler event handlers 2022-10-21 05:13:04 -03:00
Rekai Nyangadzayi Musuka ae6b8e2f03 style: code refactoring 2022-10-21 05:13:04 -03:00
Rekai Nyangadzayi Musuka 208f4b522d style(apu): split apu.zig into multiple files + refactor 2022-10-21 05:13:03 -03:00
Rekai Nyangadzayi Musuka bd54700103 style(backup): refactor code 2022-10-21 05:13:03 -03:00
Rekai Nyangadzayi Musuka 08d27520e0 style(flash): move flash code into it's own file 2022-10-21 05:13:03 -03:00
Rekai Nyangadzayi Musuka bfe97c671e style(eeprom): move eeprom code to it's own file 2022-10-21 05:13:03 -03:00
Rekai Nyangadzayi Musuka 9baadadba2 style(bus): refactor several hardware abstractions 2022-10-21 05:13:03 -03:00
Rekai Nyangadzayi Musuka 68a87e0a54 chore: SDL2.zig expects target to be set before link() is called 2022-10-21 05:13:02 -03:00
Rekai Nyangadzayi Musuka 1d7dfe71ca chore: update dependencies 2022-10-21 05:13:02 -03:00
Rekai Nyangadzayi Musuka 1acc5e35e9 chore: move util.zig 2022-10-21 05:13:02 -03:00
Rekai Nyangadzayi Musuka df73cdbecc chore: disable audio sync by default
forgot SDL2 AudioStream doesn't work well for my use-case
2022-10-21 05:13:02 -03:00
Rekai Nyangadzayi Musuka 6738dfac85 chore: change default settings 2022-10-21 05:13:02 -03:00
Rekai Nyangadzayi Musuka 11985f4019 chore: reimpl util.escape
should make use of stdlib when I can
2022-10-21 05:13:02 -03:00
Rekai Nyangadzayi Musuka 7cad3aca13 fix: Detect FRAM ROMs 2022-10-21 05:13:01 -03:00
Rekai Nyangadzayi Musuka 2bbc12cd1a chore: improve util and Gui API 2022-10-21 05:13:01 -03:00
Rekai Nyangadzayi Musuka 270db2b5ff chore: move Gpio and Clock structs to separate file 2022-10-21 05:13:01 -03:00
Rekai Nyangadzayi Musuka bce46418cd Merge pull request 'Implement RTC' (#1) from rtc into main
Reviewed-on: #1
2022-10-21 05:13:01 -03:00
Rekai Nyangadzayi Musuka 2d9b03a725 feat: add option to force-enable RTC 2022-10-21 05:13:01 -03:00
Rekai Nyangadzayi Musuka c34752ac65 feat: auto-detect RTC in commercial ROMS 2022-10-21 05:13:00 -03:00
Rekai Nyangadzayi Musuka 60680a36e2 fix: account for lateness in RTC scheduler event 2022-10-21 05:13:00 -03:00
Rekai Nyangadzayi Musuka 4111bb5e4f fix: RTC day is 6 bits wide, not 3 2022-10-21 05:13:00 -03:00
Rekai Nyangadzayi Musuka 612f5fe30e feat: put RTC Sync on Scheduler
TODO: Database to see what games have what GPIO devices
2022-10-21 05:13:00 -03:00
Rekai Nyangadzayi Musuka d9776e99d3 chore: import datetime library + default time for RTC 2022-10-21 05:13:00 -03:00
Rekai Nyangadzayi Musuka 960efcd428 fix: ignore RTC Time/DateTime writes
this falls in-line with better emulators
2022-10-21 05:13:00 -03:00
Rekai Nyangadzayi Musuka b07dc8484d chore: use Clock.Writer for Command parsing, delete Clock.Command 2022-10-21 05:12:59 -03:00
Rekai Nyangadzayi Musuka ebcae80a9d feat: implement RTC Read/Writes 2022-10-21 05:12:59 -03:00
Rekai Nyangadzayi Musuka ff8ea79620 feat: implement force irqs for GPIO/RTC 2022-10-21 05:12:59 -03:00
Rekai Nyangadzayi Musuka fe19b19fc7 fix: properly resovle stack UAF 2022-10-21 05:12:59 -03:00
Rekai Nyangadzayi Musuka e709c2030c chore: shorten `orelse @panic` to `.?` 2022-10-21 05:12:59 -03:00
Rekai Nyangadzayi Musuka 5725bbbe35 fix: update GpioData extern union
u4's are no longer supported in extern unions :\
2022-10-21 05:12:59 -03:00
Rekai Nyangadzayi Musuka 8553ab6e6d chore: Guilty Gear X expects these I/O Registers 2022-10-21 05:12:58 -03:00
Rekai Nyangadzayi Musuka 372bfdc5f6 tmp: incomplete impl of GPIO + RTC 2022-10-21 05:12:58 -03:00
Rekai Nyangadzayi Musuka fad5c9e632 feat: implement open bus for unmapped i/o 2022-10-21 05:12:58 -03:00
Rekai Nyangadzayi Musuka 5fb5247d0e chore: comment open bus impl 2022-10-21 05:12:58 -03:00
Rekai Nyangadzayi Musuka 75be6aa82a chore: update dependencies 2022-10-21 05:12:58 -03:00
Rekai Nyangadzayi Musuka 0b8cc30d4d chore: Update README.md 2022-10-21 05:12:58 -03:00
Rekai Nyangadzayi Musuka d2a50cf9d2 feat: reimplement audio sync
APU will now drop samples if the Audio Queue is already full, therefore
creating a "sped-up" effect when the emulator runs faster than 100%
2022-10-21 05:12:57 -03:00
Rekai Nyangadzayi Musuka b2386a6a2b chore: move arm/thumb lut idx functions 2022-10-21 05:12:57 -03:00
Rekai Nyangadzayi Musuka 22fbe380eb chore: update dependencies 2022-10-21 05:12:57 -03:00
Rekai Nyangadzayi Musuka f2b27f31f4 chore: better conform to zig idioms 2022-10-21 05:12:57 -03:00
Rekai Nyangadzayi Musuka 867025b1ec chore: rename arm7tdmi variables to just cpu
Less verbose, specifying arm7tdmi doesn't really do much when there's
no other CPU in the system
2022-10-21 05:12:57 -03:00
Rekai Nyangadzayi Musuka 9b0f54b111 chore: allocate sprite array on heap
Each Sprite optional is 10 bytes meaning I'm allocating 1.28Kb on the
stack which isn't necessary.
2022-10-21 05:12:56 -03:00
Rekai Nyangadzayi Musuka 4cf58f1faa chore: improve init/deinit methods 2022-10-21 05:12:56 -03:00
Rekai Nyangadzayi Musuka 1a56f957c1 chore: reorganize some code 2022-10-21 05:12:56 -03:00
Rekai Nyangadzayi Musuka 1a4a2a56a3 chore: pass the allocator as an argument more often
As of right now, I think the only cases where I shouldn't explicitly pass an allocator
are in read/write functions and deinits
2022-10-21 05:12:56 -03:00
Rekai Nyangadzayi Musuka c701156ce6 fix: resolve use-afer-free in backup.zig
This worked fine on stage1, and works fine in debug in stage3.
However, stage3 ReleaseSafe would panic due to what I assume must
have been an undefined behaviour optimization.

While I'm happy that I was quickly made aware of the issue thanks to
the safety checks in ReleaseSafe I do wish that this issue showed itself
in Debug, since I *am* using the GPA
2022-10-21 05:12:56 -03:00
Rekai Nyangadzayi Musuka 4b6897aedf feat: Get ZBA working on Zig's new stage2/stage3 compiler 2022-10-21 05:12:55 -03:00
Rekai Nyangadzayi Musuka 1471288969 chore: move window scale const to emu.zig 2022-10-21 05:12:55 -03:00
Rekai Nyangadzayi Musuka 7488fd7fd5 fix: reimpl debug reads w/out throwing away *const Self 2022-10-21 05:12:55 -03:00
Rekai Nyangadzayi Musuka 20056eff2c chore: update dependencies: 2022-10-21 05:12:55 -03:00
Rekai Nyangadzayi Musuka 3f760fccaf feat: reimplement cpu logging 2022-10-21 05:12:55 -03:00
Rekai Nyangadzayi Musuka f833de765c chore: don't init bus in Arm7tdmi init 2022-10-21 05:12:55 -03:00
Rekai Nyangadzayi Musuka aa19ef5f71 feat: move arm instr decoding to module 2022-10-21 05:12:54 -03:00
Rekai Nyangadzayi Musuka f0284107f9 feat: move thumb instr decoding to module 2022-10-21 05:12:54 -03:00
Rekai Nyangadzayi Musuka 91c94fe528 chore: change directory structure 2022-10-21 05:12:54 -03:00
Rekai Nyangadzayi Musuka 45fc49b216 fix: reimplement halt fast-forwarding 2022-10-21 05:12:54 -03:00
Rekai Nyangadzayi Musuka 0939d6d7bc chore: move audio sync, video sync variables 2022-10-21 05:12:53 -03:00
Rekai Nyangadzayi Musuka e7b5410509 chore: update README.md 2022-10-21 05:12:53 -03:00
Rekai Nyangadzayi Musuka 2758e511ea chore: update SDL.zig 2022-10-21 05:12:53 -03:00
Rekai Nyangadzayi Musuka 46ee21f464 feat: impl WININ, WINOUT, WIN{N}H and WIN{N}V 2022-10-21 05:12:53 -03:00
Rekai Nyangadzayi Musuka 0287c9a260 fix: force align DMA transfers 2022-10-21 05:12:53 -03:00
Rekai Nyangadzayi Musuka 665767c250 fix: resolve bugs in VRAM unpredictable read/writes 2022-10-21 05:12:53 -03:00
Rekai Nyangadzayi Musuka 0fd8a13a93 fix: don't start HDMA in vblank 2022-10-21 05:12:52 -03:00
Rekai Nyangadzayi Musuka 125b931d0c feat: implement brightness increase/decrease 2022-10-21 05:12:52 -03:00
Rekai Nyangadzayi Musuka 27259c97db feat: implement object blending 2022-10-21 05:12:52 -03:00
Rekai Nyangadzayi Musuka 9479838614 feat: implement background alpha blending 2022-10-21 05:12:52 -03:00
Rekai Nyangadzayi Musuka 8a203ff05f feat: implement BLDCNT, BLDALPHA, BLDY 2022-10-21 05:12:52 -03:00
Rekai Nyangadzayi Musuka 39f71730e0 chore: update README 2022-10-21 05:12:52 -03:00
Rekai Nyangadzayi Musuka 33f993c19d chore: rename + remove some code 2022-10-21 05:12:51 -03:00
Rekai Nyangadzayi Musuka 18ec16eb6d fix: properly fire DMA IRQs
This resolves Sound DMA Timing issues present in DOOM
2022-10-21 05:12:51 -03:00
Rekai Nyangadzayi Musuka bf558922f9 chore: rename Dma.active to Dma.in_progress 2022-10-21 05:12:51 -03:00
Rekai Nyangadzayi Musuka e87bda7584 chore: rewrite info log message 2022-10-21 05:12:51 -03:00
Rekai Nyangadzayi Musuka 87dc70436c feat: implement NR10 obscure behaviour 2022-10-21 05:12:51 -03:00
Rekai Nyangadzayi Musuka 5dd78177f4 feat: handle all I/O when using Cult-Of-GBA BIOS 2022-10-21 05:12:51 -03:00
Rekai Nyangadzayi Musuka 203af4c471 chore: 32-bit reads for PSG audio 2022-10-21 05:12:50 -03:00
Rekai Nyangadzayi Musuka 98223d9e5a chore: implement more than just 1 cycle per mem access 2022-10-21 05:12:50 -03:00
Rekai Nyangadzayi Musuka e8cc0dfabb fix: implement register reads for Yoshi's Island 2022-10-21 05:12:50 -03:00
Rekai Nyangadzayi Musuka c8585a6f9a fix: reimplement DMA ticking 2022-10-21 05:12:50 -03:00
Rekai Nyangadzayi Musuka 7d79361aca chore(cpu): add inline fn isHalted() 2022-10-21 05:12:50 -03:00
Rekai Nyangadzayi Musuka d1d32e465c chore: attempt to debug Rhythm Heaven 2022-10-21 05:12:50 -03:00
Rekai Nyangadzayi Musuka 42c6b21124 fix: impl BG?{X,Y} RefPoint write behaviour outside of Vblank
With this fix Mode 7-like games now properly render their backgrounds
2022-10-21 05:12:49 -03:00
Rekai Nyangadzayi Musuka 44e1dacb7b chore: change priority of some logs 2022-10-21 05:12:49 -03:00
Rekai Nyangadzayi Musuka eeea8a6327 chore: mess with debug statements + mask APU I/O reads 2022-10-21 05:12:49 -03:00
Rekai Nyangadzayi Musuka 0a5df26c31 chore: move timer, apu and dma i/o addr matching outside of io.zig 2022-10-21 05:12:49 -03:00
Rekai Nyangadzayi Musuka d3bc58d71c chore: separate render code for affine sprites 2022-10-21 05:12:49 -03:00
Rekai Nyangadzayi Musuka 8d32d9788e chore: reimplement object rendering
TODO: implement affine sprites
2022-10-21 05:12:48 -03:00
Rekai Nyangadzayi Musuka b18f488b01 chore: small changes to normal background drawing code 2022-10-21 05:12:48 -03:00
Rekai Nyangadzayi Musuka 4b4242df2a feat: implement affine backgrounds 2022-10-21 05:12:48 -03:00
Rekai Nyangadzayi Musuka e2533dedeb chore: stub 8-bit window registers 2022-10-21 05:12:48 -03:00
Rekai Nyangadzayi Musuka 89619596ad chore: remove code that pretends to remove DC offset 2022-10-21 05:12:48 -03:00
Rekai Nyangadzayi Musuka 02fee16561 fix: replace affine bg register bitfields with signed integers 2022-10-21 05:12:48 -03:00
Rekai Nyangadzayi Musuka bf8521eb5e chore: use stdlib endian-aware integer read/write functions 2022-10-21 05:12:47 -03:00
Rekai Nyangadzayi Musuka 299244a37a chore: update zig version in README.md 2022-10-21 05:12:47 -03:00
Rekai Nyangadzayi Musuka 9990fa3513 chore: update SDL.zig 2022-10-21 05:12:47 -03:00
Rekai Nyangadzayi Musuka db064d2321 chore: misc style improvements 2022-10-21 05:12:47 -03:00
Rekai Nyangadzayi Musuka e0523aea63 chore: rename method in FpsTracker 2022-10-21 05:12:47 -03:00
Rekai Nyangadzayi Musuka 5982fdea98 chore: update README.md 2022-10-21 05:12:46 -03:00
Rekai Nyangadzayi Musuka c18be62b11 fix(backup): resolve banking issue in flash impl 2022-10-21 05:12:46 -03:00
Rekai Nyangadzayi Musuka 9f69b122d0 chore: remove awful ptr casts in backup.zig and bios.zig 2022-10-21 05:12:46 -03:00
Rekai Nyangadzayi Musuka 295aa139f6 feat: pass jsmolka's bios.gba 2022-10-21 05:12:46 -03:00
Rekai Nyangadzayi Musuka 2502cc5bf0 fix: play right samples in right channel 2022-10-21 05:12:46 -03:00
Rekai Nyangadzayi Musuka fc7f2a2959 fix: resolve issue when handling event sooner than expected 2022-10-21 05:12:46 -03:00
Rekai Nyangadzayi Musuka 9d839a0328 fix: remove DC offset from audio output 2022-10-21 05:12:45 -03:00
Rekai Nyangadzayi Musuka 55dada243e chore: add debug keybinds for scheduler capacity + event count 2022-10-21 05:12:45 -03:00
Rekai Nyangadzayi Musuka 78e7c0bc3f perf: don't check scheduler every iteration of runFrame loop
~20fps gain in Pokemon Emerald, nice
2022-10-21 05:12:45 -03:00
Rekai Nyangadzayi Musuka 9134456229 chore: simplify 4bpp palette code 2022-10-21 05:12:45 -03:00
Rekai Nyangadzayi Musuka 0ef71ecb49 perf: convert BGR555 to RGBA8888 at compile-time, access w/ lookup table
Compile speed isn't slowed down by that much + there's a ~20fps gain in
Pokemon emerald, though this isn't anything exact
2022-10-21 05:12:45 -03:00
Rekai Nyangadzayi Musuka 3d18685d36 chore: modify type signature of util.sext 2022-10-21 05:12:45 -03:00
Rekai Nyangadzayi Musuka f194bee4eb chore: cleanup main 2022-10-21 05:12:44 -03:00
Rekai Nyangadzayi Musuka f373d8e17c chore: emu audio sync code to emu.zig 2022-10-21 05:12:44 -03:00
Rekai Nyangadzayi Musuka 1b7d15e7d2 chore: redo apu sampling 2022-10-21 05:12:44 -03:00
Rekai Nyangadzayi Musuka 89d8c08cd1 chore: implement apu u16 reads 2022-10-21 05:12:44 -03:00
Rekai Nyangadzayi Musuka 3cd02a44cf fix: clean up frequency timer implementations 2022-10-21 05:12:44 -03:00
Rekai Nyangadzayi Musuka 87eb0cc808 Revert "fix: resolve off-by-one errors when scheduling freq timer expirations"
This reverts commit c9b0030b4b.
2022-10-21 05:12:43 -03:00
Rekai Nyangadzayi Musuka 8313210ddc fix: resolve off-by-one errors when scheduling freq timer expirations 2022-10-21 05:12:43 -03:00
Rekai Nyangadzayi Musuka 2664f5cf20 chore: improve APU accuracy + scheduler refactoring 2022-10-21 05:12:43 -03:00
Rekai Nyangadzayi Musuka 47518268a6 chore: update SDL.zig 2022-10-21 05:12:43 -03:00
Rekai Nyangadzayi Musuka 29ee225c1f feat: stub Affine BG registers 2022-10-21 05:12:43 -03:00
Rekai Nyangadzayi Musuka ff6d2517be fix: resolve out-of-bounds error with 8bpp tall / horizontal sprites
Boot ROM is now enabled by default as well
2022-10-21 05:12:43 -03:00
Rekai Nyangadzayi Musuka 242bf08cf2 chore: improve audio accuracy 2022-10-21 05:12:42 -03:00
Rekai Nyangadzayi Musuka 996de65688 chore: reintroduce thread sleeping + simplify fps counter 2022-10-21 05:12:42 -03:00
Rekai Nyangadzayi Musuka b97b66927f feat: implement double buffering 2022-10-21 05:12:42 -03:00
Rekai Nyangadzayi Musuka 628d4cfb68 chore: clean up DMA code 2022-10-21 05:12:42 -03:00
Rekai Nyangadzayi Musuka ff002f18c6 feat: handle DMA IRQs (maybe?) 2022-10-21 05:12:42 -03:00
Rekai Nyangadzayi Musuka 5d5d3827fb chore: contain Timers in a tuple rather than a struct 2022-10-21 05:12:42 -03:00
Rekai Nyangadzayi Musuka 8826242bf3 chore: contain DMA Controllers in a tuple rather than a struct 2022-10-21 05:12:41 -03:00
Rekai Nyangadzayi Musuka 4bb1aa06f7 chore: update git submodules 2022-10-21 05:12:41 -03:00
Rekai Nyangadzayi Musuka 570ff8536c chore: resolve incorrect memory mirror in VRAM
+ stub GPIO registers on ROM Write
2022-10-21 05:12:41 -03:00
Rekai Nyangadzayi Musuka 2c0d2b64a2 chore: stub a few I/O registers 2022-10-21 05:12:41 -03:00
Rekai Nyangadzayi Musuka 1750c0a26e chore: allow 8-bit IO to BG0CNT and BG1CNT
BG0CNT and and BG1CNT now work properly in mario kart
2022-10-21 05:12:41 -03:00
Rekai Nyangadzayi Musuka a102d68e99 chore: define affine sprite attributes 2022-10-21 05:12:41 -03:00
Rekai Nyangadzayi Musuka 61483b93e8 feat: stub mode 1 and 2 2022-10-21 05:12:40 -03:00
Rekai Nyangadzayi Musuka 192d7645eb feat: implement mode 5
I wonder which obscure game makes heavy use of this mode
2022-10-21 05:12:40 -03:00
Rekai Nyangadzayi Musuka f1c68fb0de chore: comment ARM MSR code + Audio issues 2022-10-21 05:12:40 -03:00
Rekai Nyangadzayi Musuka cb74bfd280 chore: pass destoer's cond_invalid test 2022-10-21 05:12:40 -03:00
Rekai Nyangadzayi Musuka 0d1717538b chore: misc print message improvements 2022-10-21 05:12:40 -03:00
Rekai Nyangadzayi Musuka 896ae0935a chore: improvements to APU accuracy 2022-10-21 05:12:39 -03:00
Rekai Nyangadzayi Musuka 1a23073424 fix: incorrect order-of-operations in ARM BL impl 2022-10-21 05:12:39 -03:00
Rekai Nyangadzayi Musuka 36f3b0d381 chore: special case saving for ROMS without titles 2022-10-21 05:12:39 -03:00
Rekai Nyangadzayi Musuka 74335cacbf chore: update README 2022-10-21 05:12:39 -03:00
Rekai Nyangadzayi Musuka 1ee2dd9c5e chore: update most recent zig version 2022-10-21 05:12:39 -03:00
Rekai Nyangadzayi Musuka c2f3790dc3 feat: pass DenSinH's eeprom-test 2022-10-21 05:12:39 -03:00
Rekai Nyangadzayi Musuka 746c28004f feat: implement EEPROM 2022-10-21 05:12:38 -03:00
Rekai Nyangadzayi Musuka 084d4b28dd chore: implement I/O regsister for Minish Cap 2022-10-21 05:12:38 -03:00
Rekai Nyangadzayi Musuka ed6e83b121 chore: change default window scale to 4x 2022-10-21 05:12:38 -03:00
Rekai Nyangadzayi Musuka b827ba3a1c chore: write more debug log messages for unimplemented registers 2022-10-21 05:12:38 -03:00
Rekai Nyangadzayi Musuka 0f343f0b74 chore: only sync to audio for now 2022-10-21 05:12:38 -03:00
Rekai Nyangadzayi Musuka 7a670c6ed9 feat: panic on unimplemented I/O in ReleaseSafe/Debug but not ReleaseFast 2022-10-21 05:12:38 -03:00
Rekai Nyangadzayi Musuka e690f88cda chore: misc improvements 2022-10-21 05:12:37 -03:00
Rekai Nyangadzayi Musuka c7f537959b fix: improper lifetime for *Arm7tdmi ptr in Bus
*Arm7tdmi ptr is now assigned one scope up so that it lives as least
as long as Bus does
2022-10-21 05:12:37 -03:00
Rekai Nyangadzayi Musuka f074b703b3 feat: implement Noise
Kirby & The Amazing Mirror crashes only in ReleaseSafe / ReleaseBug.

TODO: Figure out why
2022-10-21 05:12:37 -03:00
Rekai Nyangadzayi Musuka f8159645e0 feat: implement ch3 2022-10-21 05:12:37 -03:00
Rekai Nyangadzayi Musuka cccb83a926 feat: implement ch2 2022-10-21 05:12:37 -03:00
Rekai Nyangadzayi Musuka af8fe66c43 feat: implement ch1
TODO: It's really loud
2022-10-21 05:12:36 -03:00
Rekai Nyangadzayi Musuka 1f23aff22c chore: broken impl of ch1 2022-10-21 05:12:36 -03:00
Rekai Nyangadzayi Musuka e580b78020 feat: add audio resampler
Also implement extremely naive audio sync
2022-10-21 05:12:36 -03:00
Rekai Nyangadzayi Musuka a87a5ce273 chore: calculate apu sample rate a bit better 2022-10-21 05:12:36 -03:00
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 f5bc78ae22 chore: update README 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 ee194b03d0 chore: update README 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 351a687a2d chore: update README.md 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 9ed37340cc Merge branch 'main' of ssh://musuka.dev:2222/paoda/zba 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 4a4663607e chore: update README 2022-10-21 05:12:17 -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 0166999446 chore: update SDL.zig 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 feded4ac25 chore: specify which compiler this project is built with 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 fce560dd89 chore: don't commit *.sh files 2022-10-21 05:12:14 -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 90e0d9139c chore: ignore .bin files 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 19094b492e chore: remove reccomended extension 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
Rekai Nyangadzayi Musuka f79e7126ee feat(cpu): Implement RSC 2022-10-21 05:12:00 -03:00
Rekai Nyangadzayi Musuka 15e92bc6af feat(cpu): implement RSB 2022-10-21 05:12:00 -03:00
Rekai Nyangadzayi Musuka 47fc96fe00 feat(cpu): implement BIC 2022-10-21 05:12:00 -03:00
Rekai Nyangadzayi Musuka 4ac5ad42c6 feat(cpu): implement EOR 2022-10-21 05:12:00 -03:00
Rekai Nyangadzayi Musuka c93153672f feat(cpu): implement ADD 2022-10-21 05:11:59 -03:00
Rekai Nyangadzayi Musuka a46dd448f4 feat(cpu): implement fix for ADC and implement SBC 2022-10-21 05:11:59 -03:00
Rekai Nyangadzayi Musuka 01f75112ce chore(barrel_shifter): remove panic from ASR 2022-10-21 05:11:59 -03:00
Rekai Nyangadzayi Musuka 051b98bc02 fix(barrel_shifter): should not modify cpsr when amount == 0 2022-10-21 05:11:59 -03:00
Rekai Nyangadzayi Musuka 5d0bc1b335 chore(cpu): refactor the barrel shifter once again 2022-10-21 05:11:59 -03:00
Rekai Nyangadzayi Musuka 43d011538e feat(cpu): implement ADC
ADC interacting w/ the Barrel Shifter is not working though
2022-10-21 05:11:59 -03:00
Rekai Nyangadzayi Musuka f3ad5e90ff feat(cpu): implement RRX for Barrel Shifter 2022-10-21 05:11:58 -03:00
Rekai Nyangadzayi Musuka 9b867c02e0 feat(cpu): implement SUB in THUMB format 3 2022-10-21 05:11:58 -03:00
Rekai Nyangadzayi Musuka 2ba09868ba feat(cpu): implement ARM SUB in data processing 2022-10-21 05:11:58 -03:00
Rekai Nyangadzayi Musuka 9394754593 feat(cpu): implement MVN 2022-10-21 05:11:58 -03:00
Rekai Nyangadzayi Musuka 41bab3d6ba chore(cpu): refactor barrel shifter 2022-10-21 05:11:58 -03:00
Rekai Nyangadzayi Musuka 99b686b2d7 fix(cpu): use barrel shifter in data processing immediates 2022-10-21 05:11:58 -03:00
Rekai Nyangadzayi Musuka daad98bbfe feat(cpu): implement format 12 thumb instructions 2022-10-21 05:11:57 -03:00
Rekai Nyangadzayi Musuka 2fb01577af feat(cpu): implement some already decoded format 3 instructions 2022-10-21 05:11:57 -03:00
Rekai Nyangadzayi Musuka 96d21f27a5 feat(cpu): implement THUMB format 5 instructions 2022-10-21 05:11:57 -03:00
Rekai Nyangadzayi Musuka 793110f315 chore: mgba log now supports printing THUMB instructions 2022-10-21 05:11:57 -03:00
Rekai Nyangadzayi Musuka 5ed5c5d52d feat(cpu): implement like 1 THUMB instruction 2022-10-21 05:11:57 -03:00
Rekai Nyangadzayi Musuka 01385ee46b chore: distinguish between undefined ARM and THUMB instr 2022-10-21 05:11:57 -03:00
Rekai Nyangadzayi Musuka 0eba3aca1f chore(cpu): lay groundwork for THUMB instruction decoding and execution 2022-10-21 05:11:57 -03:00
Rekai Nyangadzayi Musuka 83a5370196 chore(cpu): refactor ARM functions to make room for THUMB 2022-10-21 05:11:56 -03:00
Rekai Nyangadzayi Musuka b0b6247f06 fix(cpu): fix conditions for GT cond 2022-10-21 05:11:56 -03:00
Rekai Nyangadzayi Musuka 2a33716166 fix(cpu): fix imm value calculation in MSR 2022-10-21 05:11:56 -03:00
Rekai Nyangadzayi Musuka 9b26454c72 fix(cpu): resolve off-by-one error when executing LDM 2022-10-21 05:11:56 -03:00
Rekai Nyangadzayi Musuka 97b933d9ea feat(cpu): implement branch and exchange
If I want to continue with armwrestler, I'll have to implement
THUMB instructions now
2022-10-21 05:11:56 -03:00
Rekai Nyangadzayi Musuka ff70aadfdb fix(cpu): make Data Processing instructions r15-aware 2022-10-21 05:11:55 -03:00
Rekai Nyangadzayi Musuka ae53f92d40 fix(cpu): make LDRH and STRH aware of r15 2022-10-21 05:11:55 -03:00
Rekai Nyangadzayi Musuka f51e1d3154 fix(cpu): account for r15 in LDR and STR instructions 2022-10-21 05:11:55 -03:00
Rekai Nyangadzayi Musuka a21f94569f fix(cpu): flip two branches in PSR Transfer execution 2022-10-21 05:11:55 -03:00
Rekai Nyangadzayi Musuka b9255bffe7 feat(cpu): implement MSR and MRS 2022-10-21 05:11:55 -03:00
Rekai Nyangadzayi Musuka e1f8400343 feat(cpu): stub PSR Transfer instructions 2022-10-21 05:11:55 -03:00
Rekai Nyangadzayi Musuka 52493831cc chore(io): implement IE and IME 2022-10-21 05:11:54 -03:00
Rekai Nyangadzayi Musuka 00ba7afac4 chore: remove some magic constants 2022-10-21 05:11:54 -03:00
Rekai Nyangadzayi Musuka c703352ac3 Merge branch 'main' of ssh://musuka.dev:2222/paoda/zba 2022-10-21 05:11:54 -03:00
Rekai Nyangadzayi Musuka 97e663febf fix(bus): remove accidental recursion 2022-10-21 05:11:54 -03:00
Rekai Nyangadzayi Musuka 3891b54f42 chore: ignores for building on windows 2022-10-21 05:11:54 -03:00
Rekai Nyangadzayi Musuka 9a5959e46c fix(cpu): write results of ORR to destination register 2022-10-21 05:11:54 -03:00
Rekai Nyangadzayi Musuka 780c717409 feat(cpu): implement TEQ 2022-10-21 05:11:53 -03:00
Rekai Nyangadzayi Musuka 34c6df344d feat(cpu): Implement ORR 2022-10-21 05:11:53 -03:00
Rekai Nyangadzayi Musuka 670347d4a0 feat(bus): implement IWRAM and EWRAM 2022-10-21 05:11:53 -03:00
Rekai Nyangadzayi Musuka e0c4b3b407 fix(ppu): properly access Mode 4 palette 2022-10-21 05:11:53 -03:00
Rekai Nyangadzayi Musuka cffffab8ea feat(cpu): refactor LDM/STM 2022-10-21 05:11:53 -03:00
Rekai Nyangadzayi Musuka 527bd2889e feat(cpu): implement LDM/STM 2022-10-21 05:11:53 -03:00
Rekai Nyangadzayi Musuka 15dc4ce03a chore(io): DISPSTAT bits 3 and 4 better match GBATEK documentation 2022-10-21 05:11:52 -03:00
Rekai Nyangadzayi Musuka 4f629227ab fix(cpu): fix off-by-word bug in BL 2022-10-21 05:11:52 -03:00
Rekai Nyangadzayi Musuka caa799853e feat(bus): have VCOUNT be addressable on the bus 2022-10-21 05:11:52 -03:00
Rekai Nyangadzayi Musuka 3590215d33 feat(ppu): implement Mode 4
Implementation is not tested. Pending on LDM and STM so that I can
run beeg.gba
2022-10-21 05:11:52 -03:00
Rekai Nyangadzayi Musuka d6aafc61bd chore(io): rename some io bitfield fields 2022-10-21 05:11:52 -03:00
Rekai Nyangadzayi Musuka 357211a4cc chore: remove premature inlines 2022-10-21 05:11:52 -03:00
Rekai Nyangadzayi Musuka c4c4332485 chore: add FPS counter 2022-10-21 05:11:51 -03:00
Rekai Nyangadzayi Musuka 2cec8d9f70 chore: improve code clarity 2022-10-21 05:11:51 -03:00
Rekai Nyangadzayi Musuka 8348d7c4bc feat(ppu): improve timings + implement BG mode 3 bitmap 2022-10-21 05:11:51 -03:00
Rekai Nyangadzayi Musuka c33068d831 fix: allocate framebuf on heap 2022-10-21 05:11:51 -03:00
Rekai Nyangadzayi Musuka f28b963f9d chore: add code for heap alloc of white texture 2022-10-21 05:11:51 -03:00
Rekai Nyangadzayi Musuka 7fc77f993f chore(gui): switch from RGBA8888 to BGR5555 to match BG Mode 3 2022-10-21 05:11:51 -03:00
Rekai Nyangadzayi Musuka 0e0b21d8c3 feat: draw white texture using SDL2 2022-10-21 05:11:50 -03:00
Rekai Nyangadzayi Musuka f3ad0eb3aa fix(ppu): deallocate palette RAM on cleanup 2022-10-21 05:11:50 -03:00
Rekai Nyangadzayi Musuka 036b861b05 chore: code cleanup 2022-10-21 05:11:50 -03:00
Rekai Nyangadzayi Musuka 880546468c chore(bus): refactor bus.zig 2022-10-21 05:11:50 -03:00
Rekai Nyangadzayi Musuka 1a9c9ba4cb chore: refactor instruction exec code 2022-10-21 05:11:50 -03:00
Rekai Nyangadzayi Musuka a9e7140a88 chore(io): alias @This() to Self in io.zig 2022-10-21 05:11:50 -03:00
Rekai Nyangadzayi Musuka 808633deb7 chore: refactor bios.zig and pak.zig 2022-10-21 05:11:49 -03:00
Rekai Nyangadzayi Musuka ee4fcd926b fix: by convention deinit() should not take pointers to self 2022-10-21 05:11:49 -03:00
Rekai Nyangadzayi Musuka 9d1229fe0c feat: implement PPU Timings in Scheduler 2022-10-21 05:11:49 -03:00
Rekai Nyangadzayi Musuka d54c8df7b3 feat(sched): add HBlank and VBlank events to the scheduler 2022-10-21 05:11:49 -03:00
Rekai Nyangadzayi Musuka d495f5b4c5 feat: implement S (when rd != 15) for several data processing instructions 2022-10-21 05:11:49 -03:00
Rekai Nyangadzayi Musuka 788bef188d feat: implement dedicated Barrel Shifter SHL and SHR 2022-10-21 05:11:49 -03:00
Rekai Nyangadzayi Musuka bff9be03cc chore: stub TST 2022-10-21 05:11:48 -03:00
Rekai Nyangadzayi Musuka 44424e0687 chore: comment-out logging by default 2022-10-21 05:11:48 -03:00
Rekai Nyangadzayi Musuka 4b43dcd256 fix(cpu): improve LDR/STR write-back logic 2022-10-21 05:11:48 -03:00
Rekai Nyangadzayi Musuka 47805fb60c feat(bus): implement Palette RAM and DISPSTAT 2022-10-21 05:11:48 -03:00
Rekai Nyangadzayi Musuka abe2fc431e fix(bus): restrict Game ROM and VRAM to a 16-bit bus 2022-10-21 05:11:48 -03:00
Rekai Nyangadzayi Musuka 46c694d95a fix(cpu): properly implement SUB/CMP CSPSR carry bit condition 2022-10-21 05:11:48 -03:00
Rekai Nyangadzayi Musuka faced77161 fix(cpu): resolve reversed if statement + write back on W = 0 2022-10-21 05:11:47 -03:00
Rekai Nyangadzayi Musuka 32f0b9d71c chore: add mgba compatible (minus disasm) log function 2022-10-21 05:11:47 -03:00
Rekai Nyangadzayi Musuka bbdcc0a8c2 chore: rename CPSR u32 from val to raw 2022-10-21 05:11:47 -03:00
Rekai Nyangadzayi Musuka 67bf975034 chore: remove print statements 2022-10-21 05:11:47 -03:00
Rekai Nyangadzayi Musuka da7300a78c chore: remove all memory leaks 2022-10-21 05:11:47 -03:00
Rekai Nyangadzayi Musuka 5c5179a553 feat(ppu): implement VRAM 2022-10-21 05:11:47 -03:00
Rekai Nyangadzayi Musuka dcf78d0f76 fix(emu): prevent infinite loop when advancing scheduler 2022-10-21 05:11:46 -03:00
Rekai Nyangadzayi Musuka 4836ea3bcf fix(io): fix DISPCNT is at wrong IO address 2022-10-21 05:11:46 -03:00
Rekai Nyangadzayi Musuka 182392bf1c feat(cpu): properly implement STR STRH and STRB 2022-10-21 05:11:46 -03:00
Rekai Nyangadzayi Musuka c6de540c8a feat(cpu): implement skipBios method 2022-10-21 05:11:46 -03:00
Rekai Nyangadzayi Musuka 82fb5e7a93 chore: panic on read from BIOS
GBA Bios requires a lot of implemented features, so we're ignoring it
for now
2022-10-21 05:11:46 -03:00
Rekai Nyangadzayi Musuka cbcc6282df feat(bus): add Io Struct
Also, add more information to all panic messages
2022-10-21 05:11:46 -03:00
Rekai Nyangadzayi Musuka 614ac4a262 chore: rename consturctors to fit convention 2022-10-21 05:11:45 -03:00
Rekai Nyangadzayi Musuka 80d49e03d6 chore: move bitfield library to lib director
I'd presonally prefer to use a git submodule here but It doesn't quite
seem like git submodules are possible for individual files. I'll have to
check with FlorenceOS every once and a while to ensure that there are no
lingering soundness issues with the library.

Thanks to @N00byEdge for this wonderful library!
2022-10-21 05:11:45 -03:00
Rekai Nyangadzayi Musuka 7016fcdb79 chore: use bitfield library 2022-10-21 05:11:45 -03:00
Rekai Nyangadzayi Musuka f030889d6c feat(bus): emu is now able to read from user-provided BIOS 2022-10-21 05:11:45 -03:00
Rekai Nyangadzayi Musuka d50aff30c9 feat(bus): implement Gameboy Advance MMIO 2022-10-21 05:11:45 -03:00
Rekai Nyangadzayi Musuka 5cbfae677a feat: implement ROM CLI argument 2022-10-21 05:11:45 -03:00
Rekai Nyangadzayi Musuka d660babecd fix(cpu): purposely overflow when calculating PC during branch 2022-10-21 05:11:44 -03:00
Rekai Nyangadzayi Musuka cb06c20864 feat(cpu): implement condition field behaviour 2022-10-21 05:11:44 -03:00
Rekai Nyangadzayi Musuka c98e8d384a chore: conform to zig style guides 2022-10-21 05:11:44 -03:00
Rekai Nyangadzayi Musuka 446eeba094 chore: run zig fmt 2022-10-21 05:11:44 -03:00
Rekai Nyangadzayi Musuka e841bf44ca chore(cpu): iron out some false assumptions 2022-10-21 05:11:44 -03:00
Rekai Nyangadzayi Musuka 1991bd8525 feat: implement LDR STR 2022-10-21 05:11:44 -03:00
Rekai Nyangadzayi Musuka 6c6d7d463d chore: run zig fmt 2022-10-21 05:11:43 -03:00
Rekai Nyangadzayi Musuka acdf13cb7b chore: add reccomended vscode extensions 2022-10-21 05:11:43 -03:00

Diff Content Not Available