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