August 2020 donation progress: $0.00/$250 (0%). Click to learn more...
close
Hello! Thank you for using yiff.party!

We hope you enjoy using it. yiff.party operates on a non-profit basis, and as such, all the server expenses are paid by our users. We don't want to run ads or infect you with crypto miners. We depend on users like you to keep the site running, and to preserve years and terabytes of amazing content—some of which is no longer available from its original creators!

Because of the nature of the site, many users are reluctant to donate. That's OK! yiff.party was created so everyone can enjoy the content we host without any restrictions or paywalls. But if you value the service we provide, and are able to, we—and our users—would be tremendously grateful if you considered making a donation.

Donation progress for August 2020

So far, approximately $0.00 has been raised out of our target of $250.00. We're about 0% of the way there! Please note: this tracker is updated manually—don't worry if your donation doesn't show up immediately!

yiff.party's server costs are due on the last day of each month. So, we need to meet this goal before 31 August!

How to donate?

At this time, yiff.party can only accept donations in numerous cryptocurrencies. Please select a currency below to display the relevant donation address.

Bitcoin (BTC)
Bitcoin Cash (BCH)
Ethereum (ETH)
Ethereum Classic (ETC)
Litecoin (LTC)
Why can't I donate through other means (eg. PayPal)?

Due to the nature of sites like yiff.party, it is very difficult to find payment processors who will accept clients like us. If we were to accept donations via PayPal, it wouldn't take more than a day for someone to submit an abuse report and get our account frozen. Until a viable way of accepting monetary donations becomes available, cryptocurrency will remain the only option.

There are many resources available on how to purchase crypto. For Bitcoin, check out bitcoin.org's page on buying Bitcoin for a list of methods. For beginner Bitcoin users, yiff.party recommends using an escrow service such as LocalBitcoins.

close
Enjoying mikage's content?

Creators like mikage work hard to produce the content you are viewing on yiff.party for free. If you like what you see, consider supporting mikage on Patreon to encourage them to create more great content!

Mikage alpha release: April 2020
Mikage alpha release: April 2020more_vert
2020-04-23T12:24:43+00:00
Post file flag
Mikage alpha release: April 2020 2020-04-23T12:24:43+00:00close

You can now play Super Mario 3D Land on Android! I added lots of updates this month specifically for this game (most of which luckily will benefit other titles, too), as you'll have seen in the gameplay video earlier this month. As usual, the new alpha release is available for patrons in the $10 tier and above at the internal download area.

The list of changes includes these items over the March release:

  • Important bugs that affected lots of games have been fixed, notably in the ETC decoder and in the vertex loader.
  • Some more pixel pipeline configurations (e.g. the DOT3 combiner operation) are now implemented
  • Support for stencil testing has been added

Besides enabling Super Mario 3D Land to work, these changes also fix graphical glitches in other games, such as The Legend of Zelda: Ocarina of Time 3D, Cubic Ninja, Steel Diver, and more.

I'm also pleased to announce there will be another major performance boost next month - the code is almost complete, but didn't quite make it in time for this release. I'll keep you updated about further progress in May ;)


Media (1)


Screenshot_20200410_164014.png (51.0KiB)

Mikage gameplay video: Super Mario 3D Land
Mikage gameplay video: Super Mario 3D Landmore_vert
2020-04-18T16:23:01+00:00
Post file flag
Mikage gameplay video: Super Mario 3D Land 2020-04-18T16:23:01+00:00close

Yes! You're reading that right: Super Mario 3D Land is now (functionally) playable on Android via Mikage :)

I'll publish a write-up of this exciting development progress next week, and I'll also push the next alpha release soon so you can try the game out for yourself.

Until then, stay safe!


Embed data

Provider
YouTube

Provider URL
YouTube

Subject
Super Mario 3D Land on Android! Mikage Emulation Progress

Description
Thanks to lots of work in the past weeks, Mikage now supports Super Mario 3D Land! Mikage is a new 3DS emulator for Android phones and tablets. Support us on Patreon :) ►Twitter: https://twitter.com/MikageEmu ►Patreon: https://www.patreon.com/mikage

URL
https://www.youtube.com/watch?v=w7fls3C1ZiE

HTMLplay_arrow

<iframe
    src="https://www.youtube.com/embed/w7fls3C1ZiE"
    class="embedly-embed"
    width="854"
    height="480"
    frameborder="0"
    scrolling="no"
    allowfullscreen
>
</iframe>
Mikage Progress Report: January + February 2020
Mikage Progress Report: January + February 2020more_vert
2020-03-26T12:46:45+00:00
Post file flag
Mikage Progress Report: January + February 2020 2020-03-26T12:46:45+00:00close

We have another update in store, this time with major optimization work going on and of course the obligatory compatibility improvements. Let's dive right in!


Embed data

Provider
Mikage: A 3DS emulator for Android

Provider URL
Mikage: A 3DS emulator for Android

Subject
Mikage Progress Report: January + February 2020

Description
We have another update in store, this time with major optimization work going on and of course the obligatory compatibility improvements. Let's dive right in! As usual, if you like where Mikage's development is headed and want to support my ongoing work, consider supporting me on Patreon. AArch64 JIT for

URL
https://mikage.app/progress-report-january-february-2020/

HTMLplay_arrow

https://mikage.app/content/images/2020/03/2020_01_07_titlescreen_sd_subwars_top-1.png
Mikage alpha release: March 2020
Mikage alpha release: March 2020more_vert
2020-03-15T11:03:59+00:00
Post file flag
Mikage alpha release: March 2020 2020-03-15T11:03:59+00:00close

The big update is finally done - readily available from the download area for patrons!

You can read the full list of changes here. Notably this includes an early prototype of the new CPU JIT, but furthermore:

  • The memory subsystem has been optimized for improved performance
  • The texture cache has been rewritten for better accuracy and performance, rendering the "Eager Texture Cache" option obsolete
  • A circular input overlay was added for proper circle pad input
  • The 3DS system font API is supported now (font title from 3DS must be user-provided currently)

These changes lay the ground for fullspeed emulation: Some games already see a huge frame rate improvement (notably Retro City Rampage DX and yeti3DS). With further work in the future (especially on the CPU JIT), more games will start running at playable speed!

There are also some hugely exciting compatibility updates in the pipeline for the next release - suffice to say there's a big title you'll see covered a lot soon ;)



Media (1)


2020_01_26_system_font.png (16.8KiB)

Comments (2)
user avatar
User #22647987 - 15 Mar 20 12:49
it looks like you are not downloading the latest version
user avatar
User #7751393 - 15 Mar 20 11:17
Good to hear. Might be able to afford it next month. Good work!
Progress Report: August - December 2019
Progress Report: August - December 2019more_vert
2020-02-01T15:50:12+00:00
Post file flag
Progress Report: August - December 2019 2020-02-01T15:50:12+00:00close

Took a while, but the second Progress Report is out now!

Note that if you've been following the Development Updates closely, most of it won't be new to you. But if you were looking for a more condensed and high-level overview of what has happened since August, that's it.

As usual, thanks for your support, and let's make 2020 a good one :)


Embed data

Provider
Mikage: A 3DS emulator for Android

Provider URL
Mikage: A 3DS emulator for Android

Subject
Mikage Progress Report: August - December 2019

Description
Hello again, it's been a while! I'm sure many of you wondered what we've been up to since there's been somewhat of a radio silence around Mikage. Suffice to say the project is alive and kicking, with hundreds of hours spent on development since last progress report, and clearly too few on marketing :) So what have we been up to?

URL
https://mikage.app/progress-report-august-december-2019/

HTMLplay_arrow

https://mikage.app/content/images/2020/01/2020_01_30_report2-1.png
Mikage gameplay video: Cave Story 3D
Mikage gameplay video: Cave Story 3Dmore_vert
2020-01-03T17:04:45+00:00
Post file flag
Mikage gameplay video: Cave Story 3D 2020-01-03T17:04:45+00:00close

Hey folks!

First of all - happy new year! Mikage has kicked off 2020 with some really cool progress, but more on that later this month ;)

As for today, I figured it's time for another video, and I already teased Cave Story 3D back in Development Update 7 so why not? Here you can see me playing the game (well, trying to) to show off what's now possible with December's emulation fixes.

There'll be more things to come in January - notably a new alpha release and, of course, another Development Update. Until then!


Embed data

Provider
YouTube

Provider URL
YouTube

Subject
Another 3DS title emulated! | Cave Story 3D running on Android

Description
Mikage is a new 3DS emulator for Android phones and tablets. Support us at https://www.patreon.com/mikage :) The app is currently in development, and provided to supporters on Patreon. Learn more at http://mikage.app ! Video recorded on a Snapdragon 835 based phone. Performance improvements up to 60 FPS are expected in the future.

URL
https://www.youtube.com/watch?v=Rq-nUhonntU

HTMLplay_arrow

<iframe
    src="https://www.youtube.com/embed/Rq-nUhonntU"
    class="embedly-embed"
    width="854"
    height="480"
    frameborder="0"
    scrolling="no"
    allowfullscreen
>
</iframe>
An early Christmas present: Public development Updates! 2019-12-15T14:44:42+00:00

Hi folks!

I've got an announcement to make - Development Updates will be public from now on, telling you about all the latest progress and advances we make on 3DS emulation!

What's a Development Update? It's sort of a small Progress Report - not focusing on the big picture, but instead giving brief updates on what happened over the last couple of weeks: New games that started running, interesting bugs that were fixed, and other tasks involved with emulator development.

I've always wanted to give people on the edge of supporting Mikage a better idea of the development pace and challenges faced, but, alas, I frankly don't have enough time to write monthly Progress Reports. So instead, I decided to make the material that's already there accessible to a wider community. That does not mean patrons go away empty-handed: They'll be the first to read new Development Updates and Progress Reports!

The first two posts have been published today - the others will be opened up over the next couple of days, so keep an eye on this page!

Happy Holidays!


flag
Comments (3)
user avatar
User #25027173 - 1 Jan 20 18:42
Hi Neobrain ! My question is that how many months or years will take to release this emulator on PlayStore?
user avatar
mikage - 1 Jan 20 20:06
Hi, hopefully it won't take too long! The support I get on Patreon determines how much time I can spend on Mikage. Unfortunately pledges have gone down a fair bit since our initial announcement, so I'm hoping to see new patrons after the holidays so we can get a well-polished PlayStore release out as soon as possible!
user avatar
User #22647987 - 15 Dec 19 17:00
I bought a new phone and hope it runs this emulator, runs some games on the citra MMJ at 40.50 fps (SNAP 660)
Development Update 7: Fixing all the things!
Development Update 7: Fixing all the things!more_vert
2019-12-11T19:45:08+00:00
Post file flag
Development Update 7: Fixing all the things! 2019-12-11T19:45:08+00:00close

Another month, another update - let's see what December had in it for us :)

New Games!

The big news comes first: Mikage runs another game, Cave Story 3D! Turns out after a couple of small additions and the fixes mentioned later, this game pretty much just worked out of the box. And for what it's worth, both the original Cave Story and Cave Story 3D are supported ;)

I've also given an old homebrew release a shot, smea's portal3DS. A couple of GPU features are missing to make it playable, but the menu screen is rendering mostly fine so far!


Fixing all the things: Onto Perfect Graphics!

It's not always about getting new games to boot - often, fixing smaller bugs in games that already work uncovers subtle issues that would've been harder to debug in a game that outright refuses to render anything at all.

Cubic Ninja is a good example of this: It was one of the first games supported in Mikage, but its opening screen would instantly pop up rather than smoothly fading in. I decided to look into the issue, and found this:

Turns out I mixed up the GPU register definition for some of the alpha blend modes! Having fixed that issue, Cubic Ninja's intro now plays just fine:

A similarly subtle, but ultimately really simple issue to fix was the intro logo rendering in Nano Assault EX: I had misplaced some parentheses in the shader generated when rendering this effect, leading the computation of the AddThenMultiply texture combiner operation to return the wrong result. Voila, we finally know who created the game!

Meanwhile, remember the flame effect on the title screen of The Legend of Zelda OoT 3D that was working just fine in the software renderer? The Nano Assault fix made this flame effect work in Vulkan too! A great example of how fixing a bug in one game can resolve seemingly unrelated issues in other games in one go.


Happy Holidays!

That's it, folks - plenty of good progress! I'm planning on having the next alpha release in January, but I'll upload another gameplay video soon to make the waiting a bit easier on you. Until then, enjoy your holidays and have a great start into the new year! :)


This post was originally posted on 11 December 2019 for patrons, and released publicly on 16 January 2020. Support us to get early access to Development Updates and more!


Media (2)


cave_story_3d.png (210.1KiB)
portal3ds.png (82.4KiB)

Mikage alpha release: November 2019
Mikage alpha release: November 2019more_vert
2019-11-22T16:58:09+00:00
Post file flag
Mikage alpha release: November 2019 2019-11-22T16:58:09+00:00close

Hey folks,

It's time for another alpha release! Notably, we've got a new title (Nano Assault EX) running and playing its first few levels, as well as some progress in Bravely Default, which now gets past the opening screens but still fails to render 3D graphics.

You can grab the build over at our internal download area. Here's what changed since the last build:

  • There is a new option, "Disable D-pad", required to play Nano Assault EX for now
  • There is another new option, "Eager texture cache", which may be required for some titles in the short-term future
  • More keys are displayed in the onscreen overlay now, and their layout has been rearranged for better ergonomics during gameplay. In addition to those, the volume keys have been mapped to the 3DS's L/R keys.
  • The action button for launching games has been polished: It now fades out nicely during the transition into the game
  • After closing a game, a second attempt to launch it would always instantly return you to the launch screen, whereas the third attempt would work fine again. This odd behavior has been fixed

On the technical side we have:

  • FSFile::OpenLinkFile has been implemented (used by Nano Assault, Bravely Default, and many others)
  • The RenderTargetCache revamp has been completed, fixing a number of bugs and preparing the emulator for better performance
  • Mikage's testing infrastructure has been massively improved
  • The software renderer has been revived for debugging purposes
  • Various pixel processing features have been implemented - most notably the texture environment's combiner buffer - making Nano Assault look as nice as it does
  • Various service commands have been stub-implemented: Friend::GetMyScreenName, FS::SetPriority, and Config block 0xa0000


Important note: To try out Nano Assault EX, the "Disable D-pad" option must be checked! Mikage maps the D-pad and the Circle Pad to the same four buttons, which will have irritating effects in this game. Also note the game may fail to start on the very first launch; this is known, and a simple workaround is to just start it again. If you follow these instructions you should be able to play the game at glorious 3 FPS, but be warned you won't be able to save :)


As a pre-announcement, due to the upcoming holidays and the 36c3 conference in December, there probably won't be enough exciting changes for another alpha release before January. I will keep you posted in another Development Update though!

Hope you enjoy the new release. Until next time!

Mikage gameplay video: Nano Assault EX
Mikage gameplay video: Nano Assault EXmore_vert
2019-11-20T21:12:19+00:00
Post file flag
Mikage gameplay video: Nano Assault EX 2019-11-20T21:12:19+00:00close

As a followup to yesterday's Development Update, I recorded some gameplay footage to show off in more detail how great Nano Assault already runs in Mikage.

Like I mentioned before, I'm super happy to have a game with such complex graphics work in the emulator already. Hope you enjoy :)



Embed data

Provider
YouTube

Provider URL
YouTube

Subject
Mikage is back! Nano Assault EX emulated on Android

Description
Mikage is an early-stage 3DS emulator for Android phones and tablets. Learn more at http://mikage.app and support us at https://www.patreon.com/mikage !

URL
https://www.youtube.com/watch?v=8C7fIyWifaA

HTMLplay_arrow

<iframe
    src="https://www.youtube.com/embed/8C7fIyWifaA"
    class="embedly-embed"
    width="854"
    height="480"
    frameborder="0"
    scrolling="no"
    allowfullscreen
>
</iframe>
Development Update 6: Renderer improvements and more games!
Development Update 6: Renderer improvements and more games!more_vert
2019-11-19T15:51:21+00:00
Post file flag
Development Update 6: Renderer improvements and more games! 2019-11-19T15:51:21+00:00close

After the long-winded build up over the last months, we're finally seeing some work on the emulator core itself again. Lo and behold, there's progress on support for more games, and a new alpha release on the horizon!

New titles going in-game: Nano Assault and Bravely Default!

I already teased Bravely Default back in July when it started booting. With the upcoming alpha release, it will get past the intro screens and let you create a new save game and even play the game! There’s a small catch: None of the 3D graphics get rendered right now… Granted, maybe calling that “playable” is a stretch even for emulation ;)


There’s another title that’s fairing better though, which I haven’t mentioned so far even though it’s been doing “something” for a while now: Nano Assault!

Nano Assault works remarkably well already: Not only can you create save files and watch the game’s intro cutscene, but you can actually play the first two levels too! I'm very happy with this result, especially since it's one of the graphically more complex games. Not all effects are rendering perfectly due to missing features, so that's a good hint as to what to implement next.


With the news out of the way, let’s see what work was involved to get Mikage up to the task.

RenderTargetCache revamp

By far the biggest work item was the RenderTargetCache: This is the part in Mikage that matches raw framebuffer data in emulated memory with fast render targets used on the phone GPU. This sort of cache is critical for getting any performance benefits out of hardware (Vulkan) rendering over software, and getting it right is essential to bug-free emulation without rendering glitches. In fact, Citra still struggles with this today, so it was important to me to address this early on.

Thanks to the work I put into the testing framework, it wasn’t too stressful to come up with a reliable rewrite of this component. As a result, not only is the RenderTargetCache itself much more readable, but I was also able to resolve various compatibility issues: Nano Assault picked up an old render target previously, causing it to crash shortly after due to an invalid viewport setup. The both_screens homebrew example now renders the bottom screen as you’d expect.

Finally, the RenderTargetCache revamp removes the need for many annoying workarounds that harmed performance. Of course, the bottleneck is still largely CPU emulation, so don't expect this to do miracles to your frame rate yet. But at least the GPU won’t hold us back anymore now either.

OpenLinkFile implementation and SelfNCCH archive tests

Link files are used to open a second "view" onto an already opened file, which is a feature that many games - notably Bravely Default and Nano Assault - use internally. Implementing this feature posed a bit of a challenge: I didn’t know what things games were allowed to do with them specifically, and so supporting link files could’ve required either a minor adjustment or a costly rewrite.

Once again, the testing framework came to the rescue though. Link files are only supported in the SelfNCCH archive, so writing tests for them was straightforward. In the process, I also ported the existing FS tests to the SelfNCCH archive (previously having only covered the save file archives).

Long story short: Having tested link files on actual hardware, I can now confidently say that a simple tweak is enough to support them properly. Basing this on a scientific research process feels much better than taking a leap of faith and crossing fingers nothing will break because of it!

Change default key bindings

Did you know you can use Mikage with USB keyboards? In fact, this feature had been present since the initial release. The four 3DS keys A, B, X, and Y are mapped to the keyboard keys A, S, Z, and X, respectively. This is a bit awkward though: If you look at the physical button layout used by the 3DS, you'll notice for example the keyboard's "S" is on the top row, whereas in the physical layout on the 3DS it's at the very bottom!

This was particularly noticeable in Nano Assault, where you fire bullets by pressing any of the four buttons, and each button will shoot in a different direction. Suffice to say it was rather confusing if you pressed a top key on your keyboard, yet you would fire bullets backwards!

One thing the old button layout got right is the button order in clockwise direction: On the 3DS this is ABYX, and on the keyboard it's ASXZ. If you hold the 3DS in your hands, the X and Y buttons require your fingers to reach out ever so slightly more though - hence so should their keyboard mappings! As a result, I chose Mikage's new default mapping to be ABYX->XZAS.

This may sound a little abstract - so just give it a try! You'll notice it feels much more natural than before.

A new Alpha Release

It's been a while! But with the fruits of the hard work starting to show, it's finally time for a new alpha build. I hope to publish this on the weekend, but certainly before the end of November. Stay tuned :)

Development Update 5
Development Update 5more_vert
2019-10-31T08:38:52+00:00
Post file flag
Development Update 5 2019-10-31T08:38:52+00:00close

Reunited with an old friend: Software rendering is back!

Back when we started development on Citra, all graphics emulation was done using a software renderer: All rendering was done purely on the host CPU and hence is incredibly slow, since it doesn't even attempt to use graphics acceleration. The reason for that was simple: Debugging rendering code on the GPU is notoriously difficult, so back when the 3DS hardware wasn't understood well, the software renderer was ideal for quick analysis and was a flexible code base that could easily be adapted for new findings as they popped up.

Mikage actually had initially reused Citra's software renderer to get graphics showing up before I wrote the Vulkan renderer earlier this year. But these days, the benefits of a software renderer aren't quite as clear-cut: The PICA200 GPU is researched well including even the 3DS-unique features, but, alas, the problem of debugging graphics issues persists. Sometimes you don't even know whether a graphical issue is truly a bug in the rendering code or just a CPU emulation bug manifesting on the user's screen.

That is why I decided to revive the old software rendering code and adapted it for Mikage's new display logic. Along the way, I fixed a big performance issue in the clipping code, and implemented a couple of previously missing features. With this work, I could finally confirm that the missing flame effect as well as the "radioactive water" in Kokiri Forest in TLoZ OoT3D are indeed graphics emulation bugs, since they are magically fixed in the software renderer.

What's left is actually fixing these issues in the Vulkan renderer now ;)

Unit Tests for the graphics core

If you've followed my emulation work, you'll know I'm a strong believer in testing as a means for ensuring long-term success of an emulator project. Having tests that confirm your understanding of hardware not only is good to factually verify how the hardware works, but also ensures that any emulation fixes you make at a later point won't break already tested behavior.

I've seen this problem in Dolphin plenty of times: Fixing one bug would cause other bugs to appear, seemingly out of nowhere. You would run into circles chasing bug fix after bug fix, yet it appeared as if you weren't making any actual progress since new bugs would pop up. Sometimes we were just working sloppily and introduced bugs when writing new code, but other times we in fact uncovered bugs that were already there and just hidden by other code that never worked in the first place. Hardware testing is a good tool of ensuring thanks to hardware testing

Unfortunately, I haven't always been successful at convincing others that putting effort into testing is worthwhile: Citra in particular has always taken a rather lax approach here; some features of the 3DS GPU have had utility homebrew programs written to selectively confirm understanding about their behavior, whereas for other features this was deemed too difficult. This approach is better than nothing, but it's not useful in the long run: None of the tests are automated, and some won't even compile anymore with today's tools. And then most nontrivial features aren't backed by tests, so Citra doesn't actually verify the things they most likely got wrong. Being a bit tongue-in-cheek, I like to say Citra doesn't *really* have tests, for these reasons.

Long story short, Mikage's mission being to do things right, I've naturally invested heavily in testing. The CPU and OS HLE implementations already have a testing framework in place, and in the past weeks I've been setting up something similar for the graphics side of things. I've already uncovered a few small bugs even though only few actual tests have been written so far.

You might now ask yourself: What's in it for you? Well, making the rendering code faster has a high chance of breaking things; in fact, the Vulkan renderer already has a couple of bugs not present with the software renderer as mentioned above. Optimizing the rendering code to be faster has a high chance of introducing even more bugs. Having tests in place enables me to implement these optimizations while making sure the rendered picture is as flawless as seen when playing the game on your actual console at home.

Packaging the 3DS homebrew ecosystem

Once written, we want our tests to be in a state of perpetuity: They verify the behavior of an emulator at one point in time, and to reliably verify this behavior for (possibly years into) the future they mustn't change. After all, if we find the emulator starts failing a test at some point, who would we blame otherwise? Did we introduce a bug in the emulator, or did the test change in a subtle way and now doesn't actually describe the hardware behavior anymore?

And here comes the catch with writing testing code for the 3DS: Tests must be written as 3DS homebrew programs, which are usually compiled using a set of tools collectively called devkitARM, plus a few other bits. These tools are written by people in the 3DS reverse-engineering community and, naturally, are changed very often. Often times you can notice this easily since your code won't compile anymore, but other times things just silently change under the hood. In fact, if you compile any 3DS homebrew title released, say, 2 years ago, you'll find it won't compile anymore.

You may already see how this poses a major threat to reliable long-term testability of an emulator: Of the handful of tests Citra has, most of them don't work anymore! I personally was hit by this once, when the library ctrulib decided to silently swap the order of width and height parameters in various places, hence breaking various tests of mine and wasting a couple of hours debugging until I found out about the library change.

On top of that, devkitARM and libraries such as ctrulib or citro3d can be quite a hassle to set up in an automated environment; it begins with devkitARM using a rather heavy custom package manager (that is only supported on newer versions), and ends with versioning problems (ever tried using an old version of ctrulib? Good luck figuring out which devkitARM version goes with that!).

And finally, ctrulib and citro3d make very specific assumptions about how they're going to be used. Some things frankly cannot be tested with the layers of abstractions they impose on the programmer. In particular, this has made writing custom system modules a rather headache-inducing task for me in the past.

Don't get me wrong though, these tools are certainly good options for homebrew game development. But they do severely lack as a base for emulator development. That's why I've been working towards building an alternative toolchain for the 3DS, based on modern tools such as the package manager Conan and the build system CMake. Earlier this month, I've reached a first mile stone of being able to compile one of the 3ds-examples from scratch - literally: My setup bootstrapped everything starting from the compiler, ctrulib, various 3ds-specific tools, and of course the program source code itself!

Mikage's serialization code at CppCon

I've been at CppCon, one of the biggest C++ conferences in the US, and presented blobify, Mikage's serialization framework! I wrote a post about this earlier this month, so if you missed it check it out now.


I'm on TV!
I'm on TV!more_vert
2019-10-16T17:54:38+00:00
Post file flag
I'm on TV! 2019-10-16T17:54:38+00:00close

... or well, on YouTube, but who still watches TV anyway :)

I went to the CppCon conference in Denver last month to give a public talk on blobify, one of Mikage's building blocks. Blobify solves the central emulation problem of data deserialization: Whenever a running game "talks" to the emulated hardware, what Mikage sees is a sequence of raw bytes (i.e. lots of 0s and 1s). This happens for example when decoding GPU command buffers, when reading files, or when emulating system calls. To make sense of the raw data we get, Mikage needs to convert it to C++ data structures, and that can sometimes be rather nontrivial. That's why blobify exists - to make repetitive and error-prone tasks as easy as they ought to be.

As I mentioned in Development Update 4, a lot of time went into developing this library (which is actually open-source and on GitHub, by the way). My talk goes into all the technical details, so if you're keen on programming you'll find some nice C++17 gems in there. Either way, considering the importance to Mikage and the time I spent on this, I figured it's worth a shout-out on this platform.

Meanwhile, there's of course more progress to share on Mikage. Some of the items I've been working on will be summed up in the next Development Update, to be released later this month. Until then, enjoy the video :)


Embed data

Provider
YouTube

Provider URL
YouTube

Subject
CppCon 2019: Tony Wasserka “Reading Binary Data with Style: A Serialization Framework for C++17”

Description
http://CppCon.org — Discussion & Comments: https://www.reddit.com/r/cpp/ — Presentation Slides, PDFs, Source Code and other presenter materials are available at: https://github.com/CppCon/CppCon2019 — Reading structured data from a file or network stream remains cumbersome and error-prone in C++, especially when data validation is required. Existing approaches require too much boilerplate, aren't always portable, and may be restricted to specific data sources. Despite these limitations, there have been few alternatives in the past. This talk introduces blobify, an experimental serialization framework for C++17 designed to convert user-defined structs to binary data blobs and vice-versa. Contrary to similar frameworks, blobify largely automates the process, and it includes an embedded domain specific language to handle data validation. I will describe blobify's API design and usage, explain how it works under the hood, and provide an outlook at what the Reflection TS has in store for future improvements. Link to the library on GitHub: https://github.com/neobrain/blobify — Tony Wasserka Consultant Berlin, Germany Low-level anything: Tony is a consultant and long-term C++ enthusiast who has worked on the console emulator projects Dolphin (GameCube/Wii), PPSSPP (PSP), and Mikage (3DS) since 2010. More recently, he has worked on Vulkan graphics drivers for PowerVR graphics processors. His main interest is exploring C++'s zero-cost abstraction capabilities and applying them to create better software for resource-constrained environments. — Videos Filmed & Edited by Bash Films: http://www.BashFilms.com

URL
https://www.youtube.com/watch?v=o3j6hfXDCVc

HTMLplay_arrow

<iframe
    src="https://www.youtube.com/embed/o3j6hfXDCVc"
    class="embedly-embed"
    width="854"
    height="480"
    frameborder="0"
    scrolling="no"
    allowfullscreen
>
</iframe>
Pausa. 2019-08-31T09:56:47+00:00

tl;dr: Patrons won't be charged in September. Mikage development continues, but no alpha build will be released next month.

Since Mikage's announcement on 1 July, a lot of progress has been made. About 70 source code changes resulted in many games starting to draw graphics, and those that didn't got much closer to it. As Alex (the author of the PS4 emulator Orbital) put it: "damn i wish i could commit that much time into getting stuff fixed"

Alas, despite the strong and steady progress being made, many patrons expressed it hasn't been as visible as they'd hoped. That's the unfortunate reality of emulation: You spend hundreds of hours fixing things, and then it's that one-line change that gets everything working - but only once the groundwork has been taken care of!

That said, I do want to give people a better feeling of progress, and that's hard to do without user-visible improvements. Also, I don't want to rely on the understanding generosity of patrons who keep pledging month after month either. Hence, I decided to pause the campaign for the time being.

This does not mean Mikage development itself is paused - far from it! Active progress is still made on an almost daily basis, as the Development Update released today shows. See you again in October for more updates and, as always, thanks for your support!

flag
Comments (4)
user avatar
User #4883048 - 31 Aug 19 11:09
+1 to what Bryan says
user avatar
User #3026373 - 31 Aug 19 17:35
From my side no need to pause, because we want to support you for hard work that's it.
user avatar
User #4359595 - 31 Aug 19 10:39
I'd rather you didn't pause it honestly. People should have a preliminary understanding of how the development process works before they back a software project. They can always pause their commitment on their own. MOST of the work in a software development isn't going to be obvious to users.
user avatar
mikage - 7 Sep 19 10:56
Thanks, that's useful feedback! Let's consider it an experiment for this month - things will resume as normal in October anyway :)
Mikage alpha release: August 2019 2019-08-11T21:58:41+00:00

Hey folks,

As promised, here's a new alpha build featuring the updates announced in the July Progress report: Many save game fixes, and lots of polish to the Android user interface. On top of that, the games "Super Mario 3D Land" and "Bravely Default" now boot.

Thanks to a small fix to the GPU core, Super Mario 3D Land looks much better than in the progress report, too:


As usual, the build is available on the internal download area, where you'll need to log into Patreon. The changes in a nutshell:

  • Games can now be loaded from any storage location, including the Downloads folder and including SD cards
  • The game list can now show icons of CCI files
  • All game folders are properly restored on startup now. Previously, only the first game folder would be loaded
  • The button layout now scales with your display size
  • Support for extdata has been implemented
  • Proper save data formatting has been implemented
  • Save game support has been extensively tested and many bugs have been fixed
  • Various service functionality has been stubbed

Note that to run the newly booting games, you'll need to install the Mii Components title in emulated NAND at the location "/mikage/0004009b/00010202/content/00000000.cxi" on internal storage or otherwise a "Failed to open NCCH" error will pop up. Since even with this title the games don't get particularly far (yet even ingame), I won't be providing detailed instructions on this yet, but rest assured if this keeps being a requirement in the future a proper guide will be written.

Once again, thanks for your support in the past weeks and in the future!

flag

Embed data

Provider
Mikage

Provider URL
Mikage

Subject
Mikage Patron Download Area

Description
None

URL
https://mikage.app/patreon-private/

HTMLplay_arrow

None
Comments (5)
user avatar
User #10458037 - 13 Aug 19 12:54
Ok man. I Will think about it
user avatar
User #10458037 - 12 Aug 19 13:52
Hello mate. Are you going to release another build this month?
user avatar
User #10458037 - 12 Aug 19 13:54
Don't take this the wrong way but, there is no much Change since the last build. I'm not shure if i Will keep support you.
user avatar
mikage - 13 Aug 19 11:59
Note that the July Progress report listed things added in the *August* release - booting Super Mario 3D Land, for instance, was not possible in the July alpha release at all. Do consider pledging every two months instead if you need a stronger sense of progress. Each release eats up half a day of my time, so more releases would achieve exactly the opposite of faster progress. This month's improvements are the result of more than 200 hours of work. You may not see it yet but these changes benefit >90% of the game library. My thorough approach will pay off ~6 months from now, when the number of games working will sharply increase. Right now is where your support will help most, otherwise it may be 6 years rather than 6 months. Continued funding is a hard requirement for getting past this seemingly slow development stage.
user avatar
User #5008562 - 4 Sep 19 20:37
You won't see much change, because as the emu is pretty much an infant, it won't do much for now, and it takes a good while for any emu to run good. Now they just need the emu to even launch games. Then focus on better performance, Making an emulator takes time, it's not perfectly playable in just a few months :P Look at dolphin emu. 16 years so far, and there's still improvements coming to it. And ps3 emu took like what.. 3 or 4 years to be playable? So a 3ds emu will take months if not years to be playable. BUT all depends how fast they are able to figure out what will work or not.
Development Update 4 2019-08-31T09:12:26+00:00

It's time for a quick update on development progress again! But first, let me announce I'll be moving away from a weekly update cycle from now on. I became clear that a weekly schedule pushes development too much towards short-term progress that don't pay off well in the long run and hence keeps me from doing the more fundamental work that's required for the larger picture. From now on, Development Updates will be released on an irregular schedule, i.e. whenever meaningful progress happens as part of bigger ongoing development efforts.

With that said, let's take a look at what happened since the last update!

Progress on Super Mario 3D Land

After getting this game to boot last month, I implemented a number of features used by SM3DL later during the title screen:

  • The config blocks for parental controls and EULA version
  • Reading ExeFS data (such as the game icon) via filesystem module's SelfNCCH archive
  • A few configurations of the GPU's pixel pipeline
  • The "Previous Buffer" source for the texture environment

Of these, the ExeFS change required a lot of refactoring in the FS module code, but the other changes were fairly minor. With the fixes, the title screen goes a fair bit further now - note in particular the 3D graphics in the background!

Unfortunately, as soon as you try to start the game, Mikage will freeze up due to the lack of the Mii selector applet (and applet support in general). Implementing this will require a lot of testing effort, but the prospect of getting SM3DL in-game is promising!

Open-Sourcing Blobify

The other big item on this month's list is blobify, Mikage's internal serialization framework. Serialization is the task of turning blocks of binary data into meaningful objects such as C++ structures, and vice-versa. This comes up when reading 3DS-specific file formats (such as CXI or CIA), when decoding parameters for high-level emulation of services, when interpreting command buffers for GPU emulation, and generally whenever the emulator core needs to access data structures contained in the emulated 3DS's memory.

Considering how common this task is, I grew tired of reinventing the wheel for every component it came up in. To automate all of this redundant work, I created blobify as part of Mikage. blobify uses some very advanced C++ techniques to automate serialization tasks as much as possible, and it has proven to be a very effective tool at that. To allow others to benefit from this, I decided to spend a couple of weeks on extracting blobify from Mikage's source code and turning it into a proper library that can be used in other projects, too.

I released the fruits of this work earlier today on GitHub. This reiterates my dedication to open-source development, and is a first (if small) step towards open-sourcing Mikage as a whole.

Upcoming development items

Despite the progress, my todo list keeps growing! It's a good thing though - I'm getting a more accurate picture of what's required to get more games running, and hence it helps prioritizing development accordingly. Here are next "big items":

  • Shared font support, blocking many games from booting
  • Render target management fixes for the GPU core, currently causing many graphical glitches in various games (think of the radioactive water in Zelda OoT3D)
  • Applet support, blocking many games from getting past the title screen
  • Performance improvements to the CPU core


flag
Mikage for the Switch... close enough!
Mikage for the Switch... close enough!more_vert
2019-08-02T14:39:25+00:00
Post file flag
Mikage for the Switch... close enough! 2019-08-02T14:39:25+00:00close

You might have come across an interesting piece of news earlier this week: An (unofficial) Android image for the Nintendo Switch has been released by the switchroot folks! All basic functionality works, and the graphics driver even supports Vulkan. So of course, I couldn't resist giving it a try and checking how Mikage fares on this exotic setup.

Lo and behold, it works without any modifications! Unsurprisingly performance isn't great - it's actually slower than my phone - but super cool regardless ;)


Media (1)


2019_08_02_switch.JPG (2.9MiB)

Comments (10)
user avatar
User #3374786 - 2 Aug 19 14:44
Thans for your work. I wait for august new release. I will test in my note 9 sd 845. 😊
user avatar
User #22267734 - 3 Aug 19 19:31
I have note 9 too.What version is yours?
user avatar
User #3374786 - 3 Aug 19 19:45
snapdragon 845.
user avatar
User #22647987 - 2 Aug 19 14:43
will the emulator work on OpenGl 3 phones?
user avatar
mikage - 2 Aug 19 14:49
Only if a significant group of patrons decide they want OpenGL 3 support - seems unlikely for now!
user avatar
User #3374786 - 2 Aug 19 14:43
Switch can run now a android port. And you can to use . Your normal android mikage apk. https://youtu.be/blSYMymq4uE
user avatar
User #22911154 - 4 Aug 19 12:11
Can u make a test version cuz I don't wanna buy it then it Dosent work on my phone
user avatar
mikage - 4 Aug 19 12:46
Of more than 40 patrons who tested Mikage, none have reported issues with Mikage's latest version. If your phone supports Vulkan, it will work!
user avatar
User #5472552 - 5 Aug 19 01:46
Galaxy S10 Plus has an error reading games from the micro sd card/external storage. On the switch performance is very slow but runs. Think we need joycon support cant remember right this minute.
user avatar
mikage - 5 Aug 19 07:40
Luckily, the storage reading issue will be resolved in the upcoming August alpha release ;) I agree the joycons would be cool to use! Not sure the Android port supports them at all right now. Any idea if other applications than Mikage detect them?
Progress Report: July 2019
Progress Report: July 2019more_vert
2019-07-28T14:58:30+00:00
Post file flag
Progress Report: July 2019 2019-07-28T14:58:30+00:00close

The first Progress Report is out! As usual, thanks for your support :)



Embed data

Provider
Mikage: A 3DS emulator for Android

Provider URL
Mikage: A 3DS emulator for Android

Subject
Mikage Progress Report: July 2019

Description
Save file fixes, more games booting, and a better Android frontend! What a month! Thank you all so much for the heartwarming words and support. Mikage's website had around 20k unique visits, there have been lots of videos and blog articles on the project (including one on wololo [http://wololo.net/2019/07/02/emulation-news-neobrain-unveils-mikage-a-nintendo-3ds-emulator-for-android-showing-significant-promise-with-a-few-commercial-games-already-running-vulkan-renderer-and-jit-coming-in-the-nea

URL
https://mikage.app/progress-report-july-2019/

HTMLplay_arrow

https://images.unsplash.com/photo-1488903809927-48c9b4e43700?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ
Comments (6)
user avatar
User #402300 - 28 Jul 19 15:32
Hello I just joined the 10 tier but am not seeing the download link for the app
user avatar
mikage - 28 Jul 19 15:44
Hey Trevor, scroll down a little - there are a couple of "alpha release" posts that will lead you to the download area. Thanks for your support!
user avatar
User #5472552 - 30 Jul 19 09:36
I will for sure 😉
user avatar
User #5472552 - 29 Jul 19 20:04
I'll be testing this on the Android Port for the Nintendo Switch
user avatar
mikage - 30 Jul 19 08:37
Cool, let me know how it fares on there!
user avatar
User #22647987 - 4 Aug 19 14:59
(very good design) I had another idea, you can put a custom background, change these controls (because it's very generic) and custom cheats in the app
Development Week 3
Development Week 3more_vert
2019-07-24T12:19:11+00:00
Post file flag
Development Week 3 2019-07-24T12:19:11+00:00close

Another game made it to the title screen: Super Mario 3D Land! As usual, achieving this was "just" a matter of fixing the right things. In this case, a corner case in DMAs wasn't implemented (transfer sizes not aligned to 4 bytes). Implementing this case and stubbing the MIC module was sufficient to get the title screen appear :)

I've also taken a day to improve the Android frontend UX. With the upcoming August alpha release, you'll finally be able to load games from any storage location rather than having to move your images to specific folders on your internal storage. Furthermore, Mikage will now properly display icons for games in CCI format.


Development Week 2
Development Week 2more_vert
2019-07-17T12:49:38+00:00
Development Week 2 2019-07-17T12:49:38+00:00close

Another week, another update - making steady progress, and I've got some new pictures to show!

  • Extdata (used by a lot of games) is fully supported now: As it turned out, implementing this was straightforward based on the existing save data code.
  • Games that create a lot of threads would run out of "Thread-Local Storage" memory. Mikage allocated about 8 times as memory as it really should have, and furthermore due to an oversight this memory wouldn't even be freed when a thread terminated. By implementing a smarter memory allocation scheme, both of these issues have been addressed.
  • The ARM64 JIT is progressing nicely, albeit there's still a long way to go

With these new changes, I've got Bravely Default booting! It crashes after creating it's save file due to more unimplemented functionality, but progress is progress :)

Comments (2)
user avatar
User #22267734 - 17 Jul 19 21:20
When will download be available?
user avatar
mikage - 18 Jul 19 07:21
New builds are uploaded at the beginning of every month
Development Week 1 2019-07-09T16:48:43+00:00

As you imagine, it's been a busy week - besides closely watching and replying to the announcement thread on reddit and getting my hands dirty in video editing, I actually managed to spend some time on development too:

  • Luigi's Mansion 2: After fixing a corner case in my GPU memory fill implementation and stubbing the DownloadPlay service, the current blocker seems to be the shared font implementation. That one is needed by a lot of other games too, but since it'll require a large chunk of work I briefly put it on hold for now.
  • Steel Diver: Sub Wars, Nano Assault: Both are currently blocked on accessing "extdata", which is a variant of game save data. I'm in the process of implementing this, since it's required by a lot of other games too.
  • Bugfix: Mali GPUs had gone completely untested until Mikage's announcement, since I didn't have access to hardware to test on. Luckily, there have been some helpful supporters on Discord who lent me a hand in testing, thanks to which I quickly figured out the underlying issue. As you've seen, this fix clearly was important enough to warrant a new alpha build release, too.

I don't have any new screenshots to show quite yet, but overall I have a better understanding what's blocking some titles from reaching the title screens - so hopefully it won't be too long until we see them run properly!

flag
Comments (6)
user avatar
User #4359595 - 10 Jul 19 15:59
Question - don't most (if not all) ARM64 CPUs featured in phones have an AARCH32 backwards compatibility mode that is compatible with the binary code for the ARMv6 CPU used in the 3DS? Following that chain of thought, would it not be possible to run 3DS binaries directly and natively on an ARM64 device's CPU? I'm thinking of a simulator, similar to Nintendont on the Wii/Wii U, for example. Nintendont allowed GCN games to run in a simulator (i.e. the CPU instructions were directly executed on the host CPU but things like syscalls were trapped and emulated) that allowed the GCN code to run natively on the Wii CPU. Of course other elements like the 3DS GPU, sound processing, syscalls, etc would still need to be emulated, but how feasible is this method compared to an ARM64 JIT? In theory it seems like the most performant way to get 100% full speed ""emulation"" of the CPU. IIRC, this method was even used by Nintendo themselves for the GBA games offered as a part of the 3DS Ambassador program.
user avatar
mikage - 13 Jul 19 08:00
Hey Bryan, this is an interesting question! The approach you're suggesting would indeed provide for excellent performance, and in theory could be very easy to implement. However, it also comes with a number of drawbacks. Most importantly, while ARM CPUs generally work the same, they may have differing behavior in certain corner cases. To run 3DS binaries on a phone, you would need to detect and handle tiny differences like this, which already requires some sort of binary translation. (I ran into that again just the other day, when I found a 3DS game rely on the existence of an undocumented instruction bit pattern.) Similarly, the 3DS expects certain memory regions to reside at specific addresses. Running binaries directly on the phone implies we'd need to somehow set up the phone's memory space such that it matches this expected layout. This might not be impossible, but it would certainly require some research. There's also the issue of how to implement enhancing features such as state saves or rewinding. These require tight control over the emulated CPU, which I think direct execution cannot provide. So overall, I think an emulator with this approach could be constructed, but there are a lot of things you'd need to be careful about, and even then I'm not sure how practical it would be to get it running /well/. Hence Mikage for now opts for the more traditional approach of dynamically recompiling the ARM32 code to ARM64.
user avatar
User #4359595 - 13 Jul 19 12:09
I see! Yeah, I think dynamic recomp is probably the best method for something that has to run on a wide variety of devices. To be honest, I was looking into methods of CPU emulation that would allow a fork of Citra to run with decent performance on Switch Homebrew (especially since Citra's ARM64 dynarec isn't very mature yet). Some of the drawbacks/difficulties of a simulator would be eliminated in that environment since I only have to account for the peculiarities of a single CPU, and I could even set up things like virtual memory since there's no rules preventing you from getting kernel-level access for a Homebrew app. In your opinion though, is the Switch's half-speed TX1 beefy enough to go with a dynarec instead? And if yes, will Mikage be open-sourced at some point in the future? I'd absolutely love to take a crack at porting it to Switch.
user avatar
User #4359595 - 13 Jul 19 15:32
https://i.imgur.com/1lkLSAx.jpg 👀
user avatar
User #4359595 - 13 Jul 19 15:33
Performance of Citra on the Switch is actually way better than I expected; runs at about half speed (at least on the OoT intro). Maybe dynarec for Switch Homebrew is more feasible than I thought :o
user avatar
mikage - 17 Jul 19 13:12
Looks like you're already all-set, but for reference about open-sourcing: https://mikage.app/faq/#willmikagebeopensource ;)
Time-lapse gameplay of TLoZ: Ocarina of Time 3D
Time-lapse gameplay of TLoZ: Ocarina of Time 3Dmore_vert
2019-07-06T09:41:31+00:00
Post file flag
Time-lapse gameplay of TLoZ: Ocarina of Time 3D 2019-07-06T09:41:31+00:00close

People have been asking to see more of Mikage in action, so I've recorded a gameplay session of my favorite testing title yesterday :)



Embed data

Provider
YouTube

Provider URL
YouTube

Subject
Mikage: "The Legend of Zelda: OoT 3D" gameplay

Description
Mikage is an early-stage 3DS emulator for Android phones and tables. Learn more at http://mikage.app and support us at https://www.patreon.com/mikage !

URL
https://www.youtube.com/watch?v=wRLvHFdH90c

HTMLplay_arrow

<iframe
    src="https://www.youtube.com/embed/wRLvHFdH90c"
    class="embedly-embed"
    width="854"
    height="480"
    frameborder="0"
    scrolling="no"
    allowfullscreen
>
</iframe>
Comments (6)
user avatar
User #22110583 - 12 Jul 19 00:47
Hi when do supporters be available to get access?
user avatar
mikage - 12 Jul 19 06:56
Hi Trebor, Alpha builds are currently provided to members in the $10 tier and above. It will take at least another year of continued development until a public release on the Play Store. Thanks for your support!
user avatar
User #3374786 - 6 Jul 19 22:22
I tried latest alfa version and super mario land 3ds decrypted ,it is not working , And this game ,yes it is working in citra f80f06 but very slow. I waited that mikage will runs more fast this game. But says error unrecognized filetype QtAudioEngine Galaxy note 9 snapdragon 845
user avatar
mikage - 7 Jul 19 10:32
Hi samipower, Super Mario Land does not work yet. Do try one of the supported titles though, as well as the provided homebrew examples. Cheers!
user avatar
User #22083795 - 11 Jul 19 05:27
Hi bro how I download this Emulator please ☺
user avatar
mikage - 11 Jul 19 07:16
Hey, currently access to alpha builds is provided to supporters in the $10 tier and above, only.
Mikage alpha release: July 2019, #2 2019-07-06T09:20:22+00:00

Hey folks,

I just uploaded a new alpha build with a bugfix for Mali GPUs. If Mikage would crash for you on startup even with the textured_cube.3dsx homebrew app, this issue should now be resolved!

Shoutouts to the members on Discord who helped me diagnose this issue, and as usual thanks for all your support!


flag

Embed data

Provider
Mikage

Provider URL
Mikage

Subject
Mikage Patron Download Area

Description
None

URL
https://mikage.app/patreon-private/

HTMLplay_arrow

None
Comments (2)
user avatar
User #22267734 - 16 Jul 19 21:27
Hi so I got 07/06 version but either I try normal and decrypted .3ds and homebrew app that is given to download below alpha releases and when I select any one of them it says not yet supported. Device: SM-N960F/DS
user avatar
mikage - 17 Jul 19 10:02
Hi Karolis, have you tried asking about your problem on Discord? I'm sure people will be able to help you there. Thanks for your support!
Mikage alpha release: July 2019 2019-07-04T07:39:17+00:00

Hey folks,

First of all, thanks for your patience in the past couple of days - as you'll have noticed, I've been quite swamped on social media with all the attention Mikage got. Now that things have calmed down, I'm pleased to say the APK is finally ready!

As previously mentioned, this is a very early version with limited compatibility and slow performance. Some content to try out are the homebrew 3ds-examples (textured-cube in particular should run great). If those work, currently 3 retail games are known to work: Ocarina of Time 3D, Cubic Ninja, and Retro City Rampage. Prepare for visual artifacts and frame-rates around 2-3 FPS though. You have been warned :)

The easiest method of installation is to download the APK through your browser. You'll be prompted to authenticate using your Patreon account, after which the download should start. You'll need to allow your browser to "Install unknown apps" in your phone settings to install the APK. Using the search bar in the settings app is the easiest way to find this option.

Obviously, these builds are internal to Patreons only, but you're free to show them off in blogs or videos or the like. If you publish any of these, make sure to link to the website and to the Patreon page so people will know where to support Mikage.

Once again, thank you so much for your support!

flag

Embed data

Provider
Mikage

Provider URL
Mikage

Subject
Mikage Patron Download Area

Description
None

URL
https://mikage.app/patreon-private/

HTMLplay_arrow

None
Comments (5)
user avatar
User #22037086 - 9 Jul 19 21:56
Puede ser que tu dispositivo no sea compatible con el apk
user avatar
User #21847509 - 4 Jul 19 11:36
No luck, tried using different browsers to download the APK but just won't install 🤔
user avatar
mikage - 4 Jul 19 09:45
Some people are having trouble getting games recognized. If that's the case, do the following: * Make sure the game is decrypted and uses one of the extensions .cci or .cxi. If your game uses .3ds currently, try .cci, but note it won't work if it's encrypted! * Try moving the games to internal storage, ideally to a root-level folder * If your games keep not being recognized, try uninstalling and reinstalling the app
user avatar
User #21847509 - 4 Jul 19 10:11
Thanks for the advice and taking the time to reply. Last question I had deleted the app and tried reinstalling thinking that might of fix the issue but clearly I'm wrong and now I can't reinstall the app again. Am I doing something wrong? Thanks again
user avatar
mikage - 4 Jul 19 11:03
Hard to tell what's going on there. I'm happy to answer clear and detailed questions, but please be mindful that time I'd spend on understanding less clearly described problems is time I cannot work on the emulator. Good luck!
Hello Mikage
Hello Mikagemore_vert
2019-07-03T09:12:42+00:00
Post file flag
Hello Mikage 2019-07-03T09:12:42+00:00close

You've probably already seen it, but just in case you haven't - here's our recent announcement!


Embed data

Provider
Mikage: A 3DS emulator for Android

Provider URL
Mikage: A 3DS emulator for Android

Subject
Hello Mikage

Description
I'm thrilled to announce Mikage: An upcoming emulator for Android that brings the 3DS experience to your phone or tablet! You can try out and support Mikage via Patreon [https://www.patreon.com/mikage] - the app will be released on Google Play at a later point. What an amazing run the 3DS had!

URL
https://mikage.app/hello-mikage/

HTMLplay_arrow

https://mikage.app/content/images/2019/07/2019_07_01_applist_small.png
Comments (3)
user avatar
User #21847509 - 3 Jul 19 23:23
When will the alpha version be available for members?
user avatar
mikage - 4 Jul 19 08:05
It's out now :)
user avatar
User #22059167 - 10 Jul 19 14:00
I want 3ds emulator I come from Thailand
Upload
mikage-2019_11_22.apk 1575048413

Here's what changed since the last build:
There is a new option, "Disable D-pad", required to play Nano Assault EX for now
There is another new option, "Eager texture cache", which may be required for some titles in the short-term future
More keys are displayed in the onscreen overlay now, and their layout has been rearranged for better ergonomics during gameplay. In addition to those, the volume keys have been mapped to the 3DS's L/R keys.
The action button for launching games has been polished: It now fades out nicely during the transition into the game
After closing a game, a second attempt to launch it would always instantly return you to the launch screen, whereas the third attempt would work fine again. This odd behavior has been fixed

7.4MiB