Commit Graph

41 Commits

Author SHA1 Message Date
Rekai Nyangadzayi Musuka ae3bb94036 fix(ppu): draw file select sprites in amazing mirror 2023-01-08 01:36:58 -06:00
Rekai Nyangadzayi Musuka 6bf1c44961 chore: refactor sprite rendering code 2022-12-30 19:47:01 -06:00
Rekai Nyangadzayi Musuka 4326ae7a0a fix: resolve broken affine bg in mario kart 2022-12-18 08:59:19 -04:00
Rekai Nyangadzayi Musuka 905c4448d0 feat: kind-of account for 1/4th of obj mode 2022-12-18 08:35:14 -04:00
Rekai Nyangadzayi Musuka 0de44835e5 fix: properly implement black/white blending for sprites
There's unique rules to handle for BLDY w/r/t sprites, I didn't know
about them (shown in bld_demo.gba). I'm sure I haven't ironed out every
rule but bld_demo.gba now *actually* passes
2022-12-18 07:44:01 -04:00
Rekai Nyangadzayi Musuka 5aac04faf5 tmp: disable buggy window emulation
I'd like to merge my affine sprite impl into main, which will require
merging a lot of the rewrites I did in this branch. My plan is to
merge the buggy ppu window impl to main, but keep it disabled.

This is technically a regression but the current impl barely worked
anyways so....
2022-12-17 09:58:15 -04:00
Rekai Nyangadzayi Musuka f98a1700e0 feat: implement affine sprites 2022-12-17 09:47:10 -04:00
Rekai Nyangadzayi Musuka acdb270793 chore: reimplement alpha blending 2022-12-16 22:16:37 -04:00
Rekai Nyangadzayi Musuka 4ceed382ed chore(ppu): use @ptrCast in drawTextMode 2022-12-16 22:16:37 -04:00
Rekai Nyangadzayi Musuka 52ce4f3d20 chore(ppu): reimplement modes 3, 4, and 5 2022-12-16 22:16:37 -04:00
Rekai Nyangadzayi Musuka c1c8cac6e4 style(ppu): move text mode drawing to unique fn 2022-12-16 22:16:37 -04:00
Rekai Nyangadzayi Musuka be7a34f719 fix(window): proper inRange impl for window
window wrap now works (it's pretty slow though?)
2022-12-16 22:16:37 -04:00
Rekai Nyangadzayi Musuka f7a94634f9 chore: improve readability of sprite drawing code a bit 2022-12-16 22:16:37 -04:00
Rekai Nyangadzayi Musuka 7d4ab6db2c style: remove unused imports 2022-12-16 22:16:37 -04:00
Rekai Nyangadzayi Musuka 0a78587d8e chore: dont allocate not-small ?Sprite array on stack
use memset like most other allocations in this emu
2022-12-16 22:16:37 -04:00
Rekai Nyangadzayi Musuka b753ceef8e chore: move FrameBuffer struct to util.zig 2022-12-16 22:16:37 -04:00
Rekai Nyangadzayi Musuka 8963fe205b chore: move OAM, PALRAM and VRAM structs to separate files 2022-12-16 22:16:37 -04:00
Rekai Nyangadzayi Musuka 3195a45e3d chore: refactor window 2022-12-16 22:16:37 -04:00
Rekai Nyangadzayi Musuka 6aad911985 chore: crude background window impl (no affine) 2022-12-16 22:16:37 -04:00
Rekai Nyangadzayi Musuka e3b45ef794 chore: rename function (misspelt until now somehow) 2022-12-16 22:16:37 -04:00
Rekai Nyangadzayi Musuka 20f611b7b5 chore: be more intentional in atomic ordering use 2022-11-30 00:21:02 -04:00
Rekai Nyangadzayi Musuka 102b2c946b fix(io): respect read-only bits in DISPSTAT
Superstar Saga now renders correctly
2022-11-02 07:54:06 -03:00
Rekai Nyangadzayi Musuka c395c04a6e feat(bus): implement fastmem
+100 fps in Pokemon Emerald lol
2022-11-01 06:18:12 -03:00
Rekai Nyangadzayi Musuka 472215b4c2 feat(ppu): implement all i/o writes 2022-10-30 03:11:04 -03:00
Rekai Nyangadzayi Musuka c9a423d094 fix(ppu): resolve mistakes in ppu i/o reads 2022-10-30 02:15:26 -03:00
Rekai Nyangadzayi Musuka 58375795bf fix(ppu): apply proper masks to ppu i/o
Refactor Window, and bldcnt, bldalpha, bldy
2022-10-29 05:18:53 -03:00
Rekai Nyangadzayi Musuka 36832ba1fb feat(apu): impelement all apu i/o reads 2022-10-29 04:24:06 -03:00
Rekai Nyangadzayi Musuka 647bd83224 chore(io): rewrite certain error messages
We can do this now that we know that it won't be because of any
unimplemented feature in some circumstances
2022-10-29 02:37:54 -03:00
Rekai Nyangadzayi Musuka 268961262d feat(dma): implement all dma i/o reads 2022-10-29 01:30:12 -03:00
Rekai Nyangadzayi Musuka 3e62feacba feat(ppu): implement all ppu i/o reads 2022-10-29 01:29:27 -03:00
Rekai Nyangadzayi Musuka 371cf4cc12 style(i/o, ppu): refactor ppu i/o 2022-10-28 23:45:54 -03:00
Rekai Nyangadzayi Musuka 14b24787ab style: remove unnecessary imports 2022-10-28 21:56:55 -03:00
Rekai Nyangadzayi Musuka e60b556f72 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-17 20:31:42 -03:00
Rekai Nyangadzayi Musuka 21eddac31e style: improve code quality 2022-10-13 00:23:58 -03:00
Rekai Nyangadzayi Musuka fd38fd6506 style(scheduler): rename scheduler event handlers 2022-10-13 00:23:58 -03:00
Rekai Nyangadzayi Musuka 13f6ee8ec4 style(bus): refactor several hardware abstractions 2022-10-10 11:57:57 -03:00
Rekai Nyangadzayi Musuka 3fb7f2f814 chore: better conform to zig idioms 2022-09-03 18:30:48 -03:00
Rekai Nyangadzayi Musuka 6a798d2c9d 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-08-29 01:07:25 -05:00
Rekai Nyangadzayi Musuka 5f8c6833f4 chore: improve init/deinit methods 2022-08-29 01:07:25 -05:00
Rekai Nyangadzayi Musuka 53eec5c3ff chore: don't init bus in Arm7tdmi init 2022-07-27 13:44:24 -03:00
Rekai Nyangadzayi Musuka 53191b0eeb chore: change directory structure 2022-07-22 21:11:19 -03:00