Commit graph

274 commits

Author SHA1 Message Date
Matthew Berry
e706c5f64f updated readme gif and added cryboy gifs to readme dir 2021-05-28 00:31:15 -07:00
Matthew Berry
1372453133 remove unused variable and one extra call to to_u32 2021-05-27 00:09:34 -07:00
Matthew Berry
92c33f5872 fix fps calculation causing crashes above 2148 fps 2021-05-26 00:07:21 -07:00
Matthew Berry
71131ac86a increment affine reference points before hdma
This alone seems to fix Golden Sun. Many games like Gadget Racers still
don't work, but this seems to be a closer approximation of "correct".
Finally, the best game for the GBA is playable... I'm sad that this was
all it took to "fix" lol.
2021-05-25 00:23:34 -07:00
Matthew Berry
7b114029a9 make all ppu regs use read__byte and write_byte 2021-05-24 22:49:19 -07:00
Matthew Berry
2f983c5045 use better variable names in reg bg render func 2021-05-23 14:47:44 -07:00
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