Commit Graph

232 Commits

Author SHA1 Message Date
RSDuck 05b94eff66 make audio output thread safe(r?) 2020-11-15 15:29:38 +01:00
RSDuck 62e3f41f20 delay savefile flush to the end of the frame 2020-11-11 13:38:05 +01:00
Hypnotron 05e274a1f6 Added 8/16-bit IPCFIFOSEND writes 2020-10-29 16:09:25 -04:00
Arisotura d2cd3eadbe fix to timers (ZXDS no longer runs slow as shit) 2020-10-27 05:03:17 +01:00
Arisotura fc922ffb14 Merge branch 'master' into dsi_camera
# Conflicts:
#	src/DSi_I2C.cpp
2020-10-26 20:47:30 +01:00
Arisotura 9fdc1de6fe add a few missing 32bit I/O accesses (IPC, SPI) 2020-10-25 18:14:40 +01:00
RSDuck f2fa52f26c add functionality to import savefiles 2020-09-11 03:08:06 +02:00
Arisotura 8d42b1c7d7 messin' around 2020-09-08 20:19:37 +02:00
RSDuck 9772201345 remove some UB
- savestates used to read a four bytes from a single byte value
- a few unassigned variables
- some other things
- also make the ROR macro an inline function
2020-09-04 20:37:14 +02:00
Arisotura 5431c469c3 actually add DLDI. bahahahhh 2020-09-03 20:28:07 +02:00
qeeg 9bfaf8682d Fix a typo 2020-08-31 16:37:42 -05:00
Arisotura ba373ca72a DSi: make ARM9-clock-selector actually work 2020-08-17 19:15:45 +02:00
RSDuck ea734084ca check DSi interrupts for halted processor wakeup 2020-07-27 23:18:33 +02:00
Nadia Holmquist Pedersen b4ad35948d Merge remote-tracking branch 'upstream/slirp' into slirp-merge 2020-07-26 21:41:09 +02:00
RSDuck 8a96dfce18 fix build with JIT disabled
fixes #675 and #674
2020-07-25 20:59:53 +02:00
Arisotura 2f9a6b7c03 SPU: delay channel start until whenever it can actually start. fixes maxmod interpolated mode. 2020-07-23 12:59:19 +02:00
RSDuck 778623a8b7 make linux work and fix a few bugs 2020-07-04 18:58:00 +02:00
RSDuck c5381d2911 reconcile DSi and JIT, fastmem for x64 and Windows 2020-06-30 23:50:41 +02:00
RSDuck e335a8ca76 first steps in bringing over the JIT refactor/fastmem 2020-06-16 12:11:19 +02:00
RSDuck e7d076403d Merge branch 'generic_jit' of https://github.com/Arisotura/melonDS into generic_jit 2020-06-16 12:06:42 +02:00
RSDuck 052ff73672 rewrite JIT memory emulation 2020-06-16 12:01:08 +02:00
RSDuck 441869a105 integrate changes from ARM64 backend and more
- better handle LDM/STM in reg alloc
- unify Halted and IRQ in anticipation for branch inlining
- literal optimisations can be disabled in gui
- jit blocks follow simple returns
- fix idle loop detection
- break jit blocks on IRQ (fixes saving in Pokemon White)
2020-06-16 11:57:45 +02:00
RSDuck 40b88ab05a new block cache and much more...
- more reliable code invalidation detection
- blocks aren't stopped at any branch, but are being followed
if possible to get larger blocks
- idle loop recognition
- optimised literal loads, load/store cycle counting
 and loads/stores from constant addresses
2020-06-16 11:56:36 +02:00
RSDuck 00cd9af033 fix uninitialised memory mapping 2020-06-16 11:54:47 +02:00
RSDuck 4deecc7d65 jit: decrease blockcache AddrMapping size for ARM9 2020-06-16 11:54:05 +02:00
RSDuck 86f2be7260 jit: add compile option 2020-06-16 11:54:03 +02:00
RSDuck d13d625f73 jit: make everything configurable 2020-06-16 11:53:21 +02:00
RSDuck 10e386fe50 JIT: most mem instructions working
+ branching
2020-06-16 11:53:08 +02:00
RSDuck c692287eba JIT: base
all instructions are interpreted
2020-06-16 11:53:05 +02:00
Arisotura fc5eedc716 * take nwifi forward some
* shut up CP15 printf's for Fx0
* fix bugs
2020-06-15 13:39:33 +02:00
Arisotura 43e045357f make it able to switch between DS and DSi modes 2020-06-01 20:36:30 +02:00
Arisotura 6326ddd172 reset SD controllers during a soft-reset 2020-06-01 16:32:44 +02:00
Arisotura b62d90cbe4 Merge remote-tracking branch 'remotes/origin/master' into melonDSi 2020-05-30 03:19:20 +02:00
Arisotura 2327de2423 Merge commit '4b57416552ec2fa95216e2b044559f215723bf70' into melonDSi 2020-05-30 03:12:42 +02:00
Arisotura 5eb01f1f15 begin renovating melonDSi 2020-05-30 02:40:51 +02:00
Arisotura 95f9698077 add back some hotkeys.
remove some legacy cruft from NDS.cpp.
2020-05-19 22:37:48 +02:00
Arisotura c5c9434ac9 verify BIOS and firmware before booting games/firmware 2020-05-17 05:42:09 +02:00
Arisotura 17d30e91f0 actually hook this up 2020-05-17 04:37:44 +02:00
RSDuck 0f53a34551 rewrite JIT memory emulation 2020-05-09 00:45:05 +02:00
RSDuck 81f38c14be integrate changes from ARM64 backend and more
- better handle LDM/STM in reg alloc
- unify Halted and IRQ in anticipation for branch inlining
- literal optimisations can be disabled in gui
- jit blocks follow simple returns
- fix idle loop detection
- break jit blocks on IRQ (fixes saving in Pokemon White)
2020-04-26 13:05:05 +02:00
RSDuck a687be9879 new block cache and much more...
- more reliable code invalidation detection
- blocks aren't stopped at any branch, but are being followed
if possible to get larger blocks
- idle loop recognition
- optimised literal loads, load/store cycle counting
 and loads/stores from constant addresses
2020-04-26 13:05:03 +02:00
RSDuck 51b6b7a7d5 fix uninitialised memory mapping 2020-04-26 13:03:11 +02:00
RSDuck 9d180c7bbc jit: decrease blockcache AddrMapping size for ARM9 2020-04-26 13:03:09 +02:00
RSDuck 411fb57c07 jit: add compile option 2020-04-26 13:03:06 +02:00
RSDuck 9d76d63af5 jit: make everything configurable 2020-04-26 13:03:03 +02:00
RSDuck 2c44bf927c JIT: most mem instructions working
+ branching
2020-04-26 13:02:57 +02:00
RSDuck c5c342c009 JIT: base
all instructions are interpreted
2020-04-26 13:02:53 +02:00
Arisotura 104b2a03aa properly handle ROMs with encrypted secure area 2020-03-30 11:04:50 +02:00
Arisotura 5f99a68151 detect whether we are running the game 2020-02-24 18:31:44 +01:00
Arisotura 83f8e11bc1 update copyright years 2020-02-14 20:18:08 +01:00
Arisotura 106b9a6f24 lay base for AR cheatzorz. baahahhhh 2020-02-14 19:26:52 +01:00
Raphaël Zumer f257b007a2 Properly pass through GBA GPIO writes 2019-12-10 19:10:14 -05:00
Raphaël Zumer 5ad85f15c1 Add a framework to support non-SRAM GBA saves
The support is not yet there, but at least
we should not read or write bogus data.
2019-12-09 04:58:54 -05:00
Raphaël Zumer 62b9f51e23 Handle GBA cartridge SRAM writes 2019-12-08 21:20:01 -05:00
Raphaël Zumer 968768042e Properly init/deinit the GBA slot 2019-12-08 15:30:56 -05:00
Raphaël Zumer d86ee1d5bf Add GBA cart model and allow reading from it 2019-12-08 15:30:07 -05:00
Raphaël Zumer f21347c918 Fix GBA memory values on deselected CPU
Previously, the GBA memory was 0xFF-filled
on both CPUs. However, GBATEK reports that
the deselected CPU is 0x00-filled, and that
some titles depend on this behavior to
function properly.
2019-12-08 12:33:02 -05:00
Arisotura e82364f010 * some fixes to SD controller support, make it clear that there is no SD inserted, makes Flipnote work somewhat better
* immediately clear AES busy flag when the block count is zero (occurs when loading DSi cart games)
* implement NDMA start modes that have an old-DMA equivalent (except for GXFIFO mode)

now it boots DSi carts!
2019-10-19 16:03:59 +02:00
xperia64 6c7c037b20 Fix division edge case 2019-08-24 11:52:24 -04:00
Arisotura 4d3d8433cb * add old DS BIOSes and 04004000 BIOS-switch
fixes audio issues when running DS games
* attempt adding other fun shit like dynamic RAM size, but that mostly went nowhere for now
2019-08-05 19:52:03 +02:00
Arisotura a9f36929e0 TSC: add backwards-compatibility 2019-08-04 14:34:33 +02:00
Arisotura a6a9f74acc lay base for DSi-mode TSC 2019-08-04 11:44:36 +02:00
Arisotura 592e493a7a input: don't check modifiers for regular input 2019-07-09 18:39:50 +02:00
Arisotura 49b2f8d969 raise kMaxIterationCycles to 64 2019-06-25 02:05:48 +02:00
Arisotura 6d01677a57 add 32bit writes to some IO ports. fixes #313 2019-06-20 13:57:14 +02:00
Arisotura d943a51b96 ayyy
getting there!
2019-06-20 03:19:51 +02:00
Arisotura 000aa1f327 add LCD init flag in DISPSTAT 2019-06-20 02:31:46 +02:00
Arisotura 81dde71eba add AES, fix a bunch of bugs
we're getting an error screen! wee
2019-06-19 14:24:49 +02:00
Arisotura d6bbc6f0f1 tremble upon the NDMA implementation
that doesn't do much beyond getting stuck
2019-06-18 22:54:07 +02:00
Arisotura d4dd97638d lay base for SD shit 2019-06-16 17:01:49 +02:00
Arisotura 566a8df6cd add IE2/IF2 2019-06-16 15:05:18 +02:00
Arisotura 7aa5131ec7 run teh binary. BAHAHAHAHAHAHAHAAHHHH
it doesn't do much for now tho
2019-06-15 14:05:31 +02:00
Arisotura 83d23939db melonDSi: skeleton in place 2019-06-15 13:09:11 +02:00
Arisotura 0e421ccebd add all sorts of shit 2019-06-13 14:41:54 +02:00
Arisotura 00a5576492 fasterer IRQ check. clean up code. 2019-06-08 22:16:51 +02:00
Arisotura 75f8cbf953 draft API for OpenGL shito in libui 2019-03-31 21:15:45 +02:00
Arisotura b9703d2e8f fix CP15 control reg init during direct boot (fixes LMNTS demo regression) 2019-03-30 23:49:22 +01:00
Arisotura f08b87b41f * move melon_fopen_local() to Platform.cpp
* make it require that the file already exist (hopefully fixing config saving bug)
* finally axe melon_fopen.cpp
2019-03-27 13:34:26 +01:00
Arisotura 93d51b0cbc start work on non-direct mode. reply to DHCP discover frame. 2019-02-23 13:41:51 +01:00
Arisotura b0efde8bf7 also, update copyright name 2019-01-22 15:58:29 +01:00
StapleButter 669247e8c8 redesign main emu loop to use timestamps instead of being a trainwreck
* cleaner code
* faster in some cases
* more accurate (on-demand compensation for timers and GPU)
* less prone to desyncs
* overall betterer
2019-01-05 05:28:58 +01:00
StapleButter dd30b417b8 implement proper support for POWCNT1.
fixes #260
2018-12-18 17:04:42 +01:00
StapleButter 71bbb35bbf watch your debug code better, you derp 2018-12-18 02:00:50 +01:00
StapleButter 694d6cafa2 fix STRD_POST (dumbest copypaste bug of the year)
fixes #276
2018-12-18 01:56:21 +01:00
StapleButter cb1e6ce750 proof-of-concept code for closing/opening lid. 2018-12-14 02:36:57 +01:00
StapleButter aa8c84f040 * correct romlist.bin (Club Penguin Herbert's Revenge EUR uses 4K EEPROM, not 64K)
* support 32bit reads to POWCNT1 (and also POSTFLG)

fixes #300

(insert sparta meme)
2018-12-13 15:03:06 +01:00
StapleButter 548432c364 add code to support GBA slot reads for later 2018-12-12 19:43:29 +01:00
StapleButter 758bed93bc preliminary microphone code. requires an actual microphone. resulting audio is farty and blargy as fuck. 2018-12-12 16:33:40 +01:00
StapleButter a8f2267a18 zarg 2018-12-12 03:09:48 +01:00
StapleButter e7a4fe11ed add nocashPrint type shit 2018-12-12 02:48:37 +01:00
StapleButter 3101bd595f add missing shit to savestates. bump the version up. 2018-12-11 21:50:28 +01:00
StapleButter 40f3f91368 move config-file seeking code to its own thing.
look also into the same directory as melonDS. make it the preferred place for storing melonDS.ini.
rewrite WinMain() wrapper.
2018-12-11 21:34:05 +01:00
StapleButter 3dd8c7b152 finish the work on the main loop. finally fix all cases of desync I could find. also add #ifdef'd debug code to check for desyncs. 2018-12-11 15:56:34 +01:00
StapleButter 78d384a754 temp commit
almost done killing ARM9/ARM7 desync, f
2018-12-11 03:08:46 +01:00
StapleButter aba4610d45 fix bugs
still kinda shitty tho. like, we lost enough timer accuracy to have visible effects (aging cart tests that fail, FMVs that play too slow, etc)
2018-12-09 01:46:10 +01:00
StapleButter b569c03884 make it fasterer 2018-12-09 01:26:51 +01:00
StapleButter 29bca33bc6 take it somewhere.
still need to speed it up a tad.
2018-12-09 01:17:05 +01:00
StapleButter c6fb152d80 start devolving things.
also implement proper DMA timings.

will not build. don't try.
2018-12-08 22:33:41 +01:00
StapleButter 86dae1a25c make this other branch where we're going to actually make it usable
but it'll be a gross hack
2018-12-08 20:27:00 +01:00
StapleButter 172fb4876a begin work on general timing renovation. way shitty because it behaves as if caches were off, so everything will be slow as shit. 2018-12-04 17:54:10 +01:00