Commit graph

268 commits

Author SHA1 Message Date
Matthew Berry
65ea773adb removed redundant util files 2021-05-21 15:18:25 -07:00
Matthew Berry
00e7795e6f update readme to reflect addition of cryboy codebase 2021-05-19 01:12:15 -07:00
Matthew Berry
6d00710121 touched up tmcnt read logic slightly 2021-05-18 21:05:55 -07:00
Matthew Berry
026b86c891 add minor docs to thumb move shifted reg 2021-05-17 21:04:54 -07:00
Matthew Berry
d5c06fef98 thumb load address does not need set_reg 2021-05-16 21:03:43 -07:00
Matthew Berry
cf804e723c applied formatter to whole project 2021-05-15 00:04:54 -07:00
Matthew Berry
8ccb8cb31b clear the bottom bits of IF properly 2021-05-14 23:41:49 -07:00
Matthew Berry
a8ed1e7f6b simplified cli, made tests run headless again 2021-05-13 22:49:21 -07:00
Matthew Berry
9e2f742d1d make graphics tests output the correct colors, fix dmg colors 2021-05-12 01:00:37 -07:00
Matthew Berry
f2151a0a25 move gb color correction to gpu, unify display logic for gb and gba 2021-05-11 00:47:32 -07:00
Matthew Berry
be81650f54 move gb display from rgb24 to bgr16 2021-05-10 03:18:43 -07:00
Matthew Berry
8b6f300f67 simplify arm branch exchange logic 2021-05-09 23:48:23 -07:00
Matthew Berry
bdda6b0509 copied over cryboy tests and made them run again 2021-05-08 22:25:21 -07:00
Matthew Berry
f6fdd071d1 abstract common keyboard input between emus 2021-05-08 01:08:16 -07:00
Matthew Berry
fceb5ee988 abstract scheduler between gb and gba 2021-05-07 16:30:19 -07:00
Matthew Berry
26d747801d Moved CryBoy into the crab codebase, along with all associated changes
The next step will be abstracting features between the two, like the
scheduler, apu, display, and anything else than can be abstracted. Once
this is abstracted, I can go back to trying to fix the CryBoy APU that
started having trouble once it was on the scheduler. This will ensure
consistency between the two projects.
2021-05-06 00:29:04 -07:00
Matthew Berry
b8a7fc1428 simplify register rotates a little bit 2021-05-02 19:08:06 -07:00
Matthew Berry
655bd67855 use the offest field of bgofs rather than the value directly 2021-05-01 12:40:43 -07:00
Matthew Berry
c584c29fd6 support halting + fast-forwarding the scheduler on halt
this improves performance dramatically in games that utilize halting, including pokemon ruby and golden sun. in both games, framerate was doubled or trippled in many cases
2021-04-29 23:50:48 -07:00
Matthew Berry
b8c64fa69d pull out repetitive logic from scanline loops, saving some fps 2021-04-29 23:40:54 -07:00
Matthew Berry
d92d37e875 add vdma 2021-04-22 22:14:54 -07:00
Matthew Berry
c57bb1e4bf abort on swap halfword transfers 2021-04-01 23:18:58 -07:00
Matthew Berry
6f7f10d292 add optional interframe blending with m key 2021-03-31 00:26:10 -07:00
Matthew Berry
09481ae54d clean up affine screen entry logic 2021-03-12 00:34:05 -08:00
Matthew Berry
a2ccafefa2 emulate internal ref point regs (fix mario kart & tonc m7_ex) 2021-03-10 23:01:42 -08:00
Matthew Berry
f3e049b7d7 don't crash on unmapped apu reads 2021-03-02 00:01:08 -08:00
Matthew Berry
c56a26994e allow dma that overflows to bios 2021-03-01 22:27:41 -08:00
Matthew Berry
dd2bbc20c1 stop crashing on attempted open bus reads 2021-02-28 17:46:30 -08:00
Matthew Berry
893ab68622 ignore serial r/w (make Emerald stop dumping thousands of lines to the console) 2021-02-27 13:02:44 -08:00
Matthew Berry
8c66c9200c stop printing unmapped ppu writes 2021-02-27 12:45:58 -08:00
Matthew Berry
e753ebe18a fix bug that doubled size of rom on Po2 sizes 2021-02-26 21:52:00 -08:00
Matthew Berry
a26a170284 sram word and halfword reads 2021-02-26 21:39:49 -08:00
Matthew Berry
625b79fc35 update sprite priority behavior to make golden sun work (not documented in gbatek or tonc) 2021-02-26 20:17:55 -08:00
Matthew Berry
fb3354521c 8-bit writes to video memory 2021-02-26 18:29:21 -08:00
Matthew Berry
b9c360f229 never clear flags in IF directly 2021-02-25 00:59:30 -08:00
Matthew Berry
a5dd6ba394 implement direct writes in bus 2021-02-24 23:18:24 -08:00
Matthew Berry
832f05521f pad non Po2 roms with 0 to next Po2 (passing gba-suite/unsafe) 2021-02-24 00:02:26 -08:00
Matthew Berry
f4a5564639 moved save mirroring to each save impl 2021-02-23 00:01:08 -08:00
Matthew Berry
7679e985d6 save memory 0x0F mirroring, default sram to 0xFF, less restrictive save type search 2021-02-22 23:24:47 -08:00
Matthew Berry
7444832159 move step_arm ldm/stm logic back to post-instruction, fix golden sun issues
This was causing battles and entering the overworld to fail. I saw a
`stmdb r1, {r0, r2, r3, r4, r5, r6, r7, r8, sb, sl, fp, ip}` while r1
was `03000380` and the currently executing instruction was `03000348`.
This means that the store would write over `03000350`, which is the
instruction being read. Because I had incremented r15 _ahead_ of the
instruction, this caused the pipeline to store the wrong values when the
write near r15 was detected. This changes moves the stepping logic back
to _after_ the instruction, and handles the r15 +12 case directly
2021-02-20 21:11:28 -08:00
Matthew Berry
2950d0d0a3 ldm/stm rewrite & always write incrementing, passing gba-suite/nes 2021-02-20 19:49:50 -08:00
Matthew Berry
33979013c3 dma irqs: got rhythm tongoku working 2021-02-20 18:44:55 -08:00
Matthew Berry
3c13802653 get timers working for tonc tmr_demo and krom timer demo 2021-02-20 10:37:14 -08:00
Matthew Berry
f26fe9faf0 make register rotates take explicit register shift enable 2021-02-20 09:41:10 -08:00
Matthew Berry
02b596943e more precise fps in window title 2021-02-14 00:03:09 -08:00
Matthew Berry
f03c90a13b fix fake pipeline: actually read words in arm pipeline, read correct regs 2021-02-12 00:42:38 -08:00
Matthew Berry
b4af85523e removed repetitive logic from thumb add_subtract 2021-02-11 00:01:07 -08:00
Matthew Berry
c986673e68 fill pipeline if necessary (gba-suite nes.gba #1) 2021-02-10 22:58:41 -08:00
Matthew Berry
eeff849ec0 move to a fake pipeline, 25% perf gain in Emerald and Golden Sun, 400% in wait loops 2021-02-10 22:45:20 -08:00
Matthew Berry
6c575089b1 fix timer off-by-one (stop kirby audio clicking) 2021-02-08 00:07:46 -08:00