Melonds, A Nintendo Ds Emulator, Is Now Out On Beta For Android

Home | Downloads | Screenshots |Forums |Source code |RSS |Donate
Register |Log in
* aims at providing fast and accurate Nintendo DS emulation. While it is still a work in progress, it has a pretty solid set of features:• Nearly complete core (CPU, video, audio, …)• JIT recompiler for fast emulation• OpenGL renderer, 3D upscaling• RTC, microphone, lid close/open• Joystick support• Savestates• Various display position/sizing/rotation modes• (WIP) Wifi: local multiplayer, online connectivity• (WIP) DSi emulation• DLDI• (WIP) GBA slot add-ons• and more are planned!Download rev-conf.orgIf you”re running into trouble: Howto/FAQ

Change to the save file handlingApr 15th 2021, by Arisotura
I continued the work on the cart_refactor branch, and the structure itself is nearly done (I”ll still need to take care of savestates). And, in a typical burst of ADHD-coding, I went and implemented support for NAND save memory, as used by WarioWare DIY and Jam with the Band.This is when I realized that the current way handles save files was going to be problematic. Basically, if a save file already exists, will determine the save memory type from that file”s size, instead of using its built-in game list. This was designed in the old days, where we had some wonky heuristics instead of the game list — the basic idea was that if failed to determine the correct save memory type, you could provide a known good save file and it would work, bypassing the problem.Obviously, this is also a double-edged sword. If you happen to have a save file that isn”t the correct size, will pick the wrong save memory type, potentially breaking things. In the end, this strategy now seems to cause more problems than it solves, especially since we have the game list.The NAND thing was the final nail in the coffin of this strategy. It had been assumed, from some source I don”t recall, that the save memory size for NAND was 32MB, and this was nice, because each possible save memory size had only one associated type, no confusion. However, the hardware tests I did showed that the NAND save memory is actually 8MB, and this conflicts with one of the possible FLASH sizes.So I ripped the old thing out, and instead made it always rely on the game list to determine the save memory type, regardless of the save file”s size. As a bonus, save files that are too big will work too, will just ignore the extra contents. Which means that, for example, DeSmuME”s .dsv files could be used as-is, by just changing the extension to .sav.If you believe this is going to be a major disadvantage, or see any issue with this, I encourage you to reply to this post.

Đang xem: Melonds, a nintendo ds emulator, is now out on beta for android

2 comments (last by NICOEMU) | Post a comment
Redesigning the cart interfaceApr 13th 2021, by Arisotura
The kind of change that doesn”t immediately mean a lot for end users, but means a lot for us coders (and ultimately means something for end users, too).Anyway, this tends to show why it”s good to think forward when designing your code. That being said, I need to find a balance with this. I tend to either think forward too much and end up paralyzed by questions that don”t mean much, or just write code as it comes to my mind.The cart interface in was originally built without much consideration for future. If you”re wondering, the cart interface is the part of the emulator that lets emulated software access the emulated cartridge, because on the DS the cart isn”t just directly mapped to CPU address space like on older consoles. Instead, there are a bunch of commands you can send to the cart to retrieve various parts of the contents, and different encryption protocols securing it up.As became capable enough to run commercial software, emulating the cart interface was a must. So NDSCart.cpp was born. The main component is the NDSCart namespace, which originally emulated the cart interface hardware (basically the DS side) and command responses for a generic cart. There is also NDSCart_SRAM, which emulates the on-cart SPI save memory. A tad hacky, but for most games, it did the job.But, that”s the thing, not all DS carts are the same!There were already some exceptions for homebrew ROMs, which might want to use the cart interface and, depending how old they are, need a more lax implementation of the generic cart protocol. Namely, retail carts don”t let you read addresses lower than 0x8000 via the generic data read command (0xB7), because that region contains the ROM header (read via a different command), the Key1 encryption data and the secure area. However, old homebrew ROMs don”t have any of that (save for the oldstyle DS header), and have their ARM9 binary start at 0x200. Newer homebrew ROMs are closer to the layout of a retail cart, mostly due to the added DSi support (the DSi header is 0x1000 bytes instead of 0x200), but, since not everybody is here to rebuild their ROMs, we still need to support the older ROMs.Homebrew aside, there are also different types of retail carts.A prime example is Pokémon games. The carts are fitted with a IR transceiver, which is accessed via the save-memory SPI bus. In practice, the first byte of a SPI transfer is a command for the IR transceiver. For now, we know that command 0x08 is some ping command that should reply 0xAA, and command 0x00 is the pass-through command, where any further bytes are forwarded to the save memory. Emulating this is required for Pokémon games to be playable at all. In, these commands were added to the generic save-memory code. A bit of a hack, since this means these would be “functional” in any game instead of just Pokémon games, but it did the trick.But there”s more. Games like WarioWare DIY, or Jam with the Band, don”t even use the save-memory SPI bus. They have save memory, but it”s a NAND memory that is accessed via the same bus as the ROM itself, through a set of specific commands…. read more
3 comments (last by that guys n64) | Post a comment
Release 0.9.2 coming out soonApr 10th 2021, by Arisotura
As title says. Right now, the only thing holding us back is that we need to setup Azure CI for proper Mac builds. I have contacted the Azure service to get a CI grant, but they haven”t gotten back to me yet.We have some cool ideas, too, but these will be for further releases.Also, in somewhat related news, I”m starting to work on another idea. It”s not related to, but it”s related to the DS. For now, this is going to be a surprise, but those who have seen my Twitter lately might figure out what I”m up to. I will make a post once I”ve got a working prototype.

Xem thêm: Pokémon Crystal Review (3Ds Eshop / Gbc), Pokémon Crystal Review

9 comments (last by Arisotura) | Post a comment
Status updatezorz!Mar 26th 2021, by Arisotura
This is the first time I write a blog post in a while, so I will try to keep this short.First, what”s new on my side? I finished my hearing for the gender marker change thing. You know, so I can get a big fat F on my ID card. You prolly don”t care a lot about my trans shenanigans but this means it”s one thing out of my way, and we can now proceed to full-speed rev-conf.orging (and hopefully not from a squat, but we”re doing our best).What else is there to say?I can”t keep my focus on one thing aaaaaaI wanna maaaaaybe try to emulate some new fun shit in like the pokémon keyboard thingy.Wait, no, we need to make DSi emulation better. We can prolly add a file explorer thing, so you can put your DSiware into the thing easily, and idk what other cool features there were. Just suggest them below this post, pretty sure we can get this done together! will soar through union and friendship!
41 comments (last by WaluigiWare64) | Post a comment
Announcing ARM64 Mac (aka Apple Silicon Mac) support!Mar 23rd 2021, by WaluigiWare64
First of all I”d like to thank StLouisCPhT for testing all the changes I made to try and get to work on ARM64 Macs. Without them, this wouldn”t be possible as I don”t have an ARM64 Mac (I don”t have any Mac at all, however x86-64 macOS can be run in VMs). I would also like to thank Generic (aka RSDuck) for helping me out with JIT issues.This started when a user named “Joel” (now StLouisCPhT) commented on my earlier post about compiling for ARM64 Macs. We took this to Private Messages on the forum board, and we were making progress slowly, but surely.Here”s a quick overview of the things that were needed for to run on ARM64 Macs (if you want to download the beta, scroll to the bottom of this post).

Xem thêm: New Super Mario Bros – The Official Home Of Super Mario™

– The JIT compilerThe first issue was adding a way to get the Program Counter on ARM64 Macs. This was easy, all it needed was an ifdef to use “uc_mcontext->__ss.__pc”.The second issue was that Apple introduced W^X for JIT memory. This meant that we can only have Read-Write and Read-Execute permissions at one time, and this could be toggled by setting “pthread_jit_write_protect_np” to either true or false. This command had to be added to some location, otherwise the JIT would crash when trying to run something.There was also another strange issue when some lines would cause the JIT to crash.

Leave a comment

Your email address will not be published. Required fields are marked *