Skip to content

Releases: saiitanaa/ReSharp3DS

ReSharp3DS Builder

Choose a tag to compare

@saiitanaa saiitanaa released this 18 Aug 10:55
c15af3c
image

v2.2.4-release

Choose a tag to compare

@saiitanaa saiitanaa released this 22 Jun 11:40
097ff83
image

Fast CIA Installation

ReSharp3DS-QR_CODE

Discord server

ReSharp3DS Runtime Update

Added

  • Added manifest.json support in the launcher.

  • Added support for manifest-based .pe display names.

    • Example: app.pe can now appear as TestApp.
  • Added manifest metadata support:

    • name
    • author
    • version
    • entry
    • description
  • Added selected app metadata display in the launcher:

    • Author: ...
    • Version: ...
  • Added touchscreen support in the launcher.

  • Added better launcher file browser behavior.

  • Added app/folder sorting in the launcher.

  • Added runtime_net.cpp and runtime_net.h.

  • Added runtime network/file helper functions:

    • FileExists
    • DirectoryExists
    • EnsureDirectory
    • DownloadFile
  • Added basic crash log infrastructure.

  • Added basic crash screen infrastructure.

  • Added future log paths:

    • sdmc:/ReSharp3DS/logs/crash.txt
    • sdmc:/ReSharp3DS/logs/clr-panic.txt
    • sdmc:/ReSharp3DS/logs/<AppName>.log
  • Added centralized input snapshot logic.

  • Added cached runtime state for:

    • held buttons
    • pressed-once buttons
    • touch position
    • circle pad position
  • Added graphics target support for top/bottom screen rendering.

  • Added transparent sprite drawing support.

Changed

  • Reworked launcher app naming.
  • The launcher now uses manifest.json to rename the selected .pe entry instead of only renaming the app folder.
  • The launcher now reads the manifest entry field to know which .pe file should receive the display name.
  • Replaced the old update-oriented code with a smaller runtime network helper.
  • Improved input handling by avoiding multiple hidScanInput() calls per frame.
  • Improved app browser organization and metadata rendering.

Removed

  • Removed old updater-style API usage from the launcher.
  • Removed old UpdateInfo / CheckForUpdate style update flow.
  • Removed runtime auto-update behavior from this part of the project.

Fixed

  • Fixed duplicated copy_json_string_value(...) definition in gui.cpp.

  • Fixed generated C++ string literals where \n had been converted into real line breaks.

  • Fixed broken printf(...) statements in:

    • gui.cpp
    • main.cpp
    • runtime_net.cpp
  • Fixed invalid '\0' generation where real null characters were inserted into source code.

  • Fixed launcher metadata display being inserted into the wrong function.

  • Fixed author/version metadata rendering placement.

  • Fixed manifest behavior so metadata can target a .pe file through the entry field.


ReSharp3DS API Update

Added

  • Added native runtime binding for returning to the launcher:

    • RuntimeReturnToLauncher
  • Added native debug log binding:

    • DebugLogFile
  • Added native graphics target binding:

    • GraphicsSetTarget
  • Added native transparent sprite binding:

    • GraphicsDrawSpriteTransparent
  • Added support for native top/bottom screen drawing target selection.

  • Added native transparent sprite rendering.

  • Added native debug file logging path support.

  • Added native system info improvements:

    • battery level
    • free memory
    • New 3DS detection
  • Added improved input native behavior using cached frame input data.

Changed

  • Native input calls now read from a cached input snapshot instead of scanning input repeatedly.
  • Native graphics code can now target different screens.
  • Native debug logging is prepared to write logs into the ReSharp3DS logs folder.
  • Native runtime behavior is prepared for cleaner launcher return handling.

Fixed

  • Fixed pressed-once input stability by preparing frame-based input state.
  • Fixed broken native C++ string literals generated during integration.
  • Fixed crash/debug helper code generation issues.

ReSharp3DS SDK Update

Added

  • Added C# helper enum:

    • Button
  • Added C# screen target enum:

    • ScreenTarget
  • Added C# helper structs:

    • Vector2
    • Rect
  • Added C# utility class:

    • Timer
  • Added C# app base class:

    • GameApp
  • Added input helpers:

    • Input.IsHeld(Button button)
    • Input.IsPressed(Button button)
    • Input.CirclePad()
  • Added touch helper:

    • Touch.Position()
  • Added runtime helper:

    • Runtime.ReturnToLauncher()
  • Added debug helpers:

    • Debug.Log(...)
    • Debug.Warn(...)
    • Debug.Error(...)
    • Debug.LogInt(...)
  • Added graphics helpers:

    • Graphics.SetTarget(ScreenTarget.Top)
    • Graphics.SetTarget(ScreenTarget.Bottom)
    • Graphics.DrawSpriteTransparent(...)
  • Added save helpers:

    • Save.Exists(...)
    • Save.Delete(...)
    • Save.SetBool(...)
    • Save.GetBool(...)

Changed

  • Improved SDK usability for C# app developers.
  • Made input code cleaner by allowing button enums instead of many direct method calls.
  • Made touch handling cleaner by exposing a Vector2 position helper.
  • Made save data easier to use with boolean helpers.
  • Made graphics code more flexible with screen target support.

Fixed

  • Fixed UI.DrawProgressBar(...) so it avoids invalid/negative fill sizes.

  • Fixed duplicate SDK compile issue explanation:

    • apps must not compile two copies of ReSharp3DS.cs.

Example manifest

{
  "name": "App de test",
  "author": "Saysaa",
  "version": "0.1.0",
  "entry": "app.pe",
  "description": "Application de test pour ReSharp3DS"
}

Expected SD structure:

sdmc:/ReSharp3DS/apps/TestApp/
  manifest.json
  app.pe

Notes

  • This is an integration update.
  • Some features are implemented but still need full real hardware validation.
  • Crash screen and crash log functions exist, but should still be fully wired into every runtime failure path.
  • Some non-blocking snprintf path-length warnings may remain.

v2.1.4-beta.11

Choose a tag to compare

@saiitanaa saiitanaa released this 21 Jun 21:12
ef308d3
image

Fast CIA Installation

ReSharp3DS-QR_CODE

ReSharp3DS Runtime Update

  • Remove update system ( Only for 3DS )
  • Adding touch functionality to the graphical user interfaced
  • Bugs fixes

v2.1.3-beta.10

Choose a tag to compare

@saiitanaa saiitanaa released this 12 Jun 21:01
c59813a
image

Fast CIA Installation

ReSharp3DS-QR_CODE

ReSharp3DS SDK Update

  • Input.IsAPressedOnce / IsBPressedOnce / etc.
  • Graphics.DrawLine
  • Graphics.DrawCircle
  • Graphics.FillCircle
  • Graphics.DrawSprite
  • Graphics.DrawSprite(path, x, y, width, height)
  • Math3DS.Clamp / Abs / Lerp
  • Color.RGB + couleurs constantes
  • Debug.Log / LogInt
  • File.GetSize
  • Directory.ListFiles
  • Directory.ListFolders
  • Runtime.Exit
  • Runtime.Restart
  • Runtime.GetVersion
  • Runtime.GetFps
  • App.Exists
  • App.ReadText
  • App.WriteText
  • Audio.PauseMusic
  • Audio.ResumeMusic
  • Audio.SetMusicLoop
  • Audio.PlaySfx
  • UI.MessageBox
  • UI.DrawButton
  • UI.DrawProgressBar

Exemple

namespace ReSharp3DS
{
    public class Program
    {
        static bool initialized = false;
        static int x = 150;
        static int y = 110;
        static int lastSaveTime = 0;

        public static void Main()
        {
            if (!initialized)
            {
                initialized = true;

                Console.Clear();
                Debug.Log("ReSharp3DS full API demo");
                Debug.Log(Runtime.GetVersion());

                Audio.Init();
                Audio.SetSfxVolume(80);
                Audio.SetMusicVolume(60);

                x = Save.GetInt("last_x", x);
                y = Save.GetInt("last_y", y);
            }

            x += Input.CirclePadX() / 25;
            y -= Input.CirclePadY() / 25;

            x = Math3DS.Clamp(x, 0, Screen.BottomWidth - 12);
            y = Math3DS.Clamp(y, 0, Screen.BottomHeight - 12);

            if (Touch.IsPressed())
            {
                x = Touch.X();
                y = Touch.Y();
            }

            if (Input.IsAPressedOnce())
            {
                Audio.Beep(Notes.C5, 100);
            }

            if (Input.IsBPressedOnce())
            {
                Save.SetInt("last_x", x);
                Save.SetInt("last_y", y);
                lastSaveTime = Time.Milliseconds();
            }

            if (Input.IsStartPressedOnce())
            {
                Runtime.Exit();
            }

            Graphics.Clear(Color.Black);
            Graphics.DrawText(8, 8, App.GetName(), Color.White);
            Graphics.DrawText(8, 24, "FPS:", Color.Gray);
            Graphics.DrawText(56, 24, Runtime.GetFps().ToString(), Color.Green);

            Graphics.DrawLine(0, 220, 319, 220, Color.Blue);
            Graphics.DrawCircle(x + 6, y + 6, 12, Color.Yellow);
            Graphics.FillRect(x, y, 12, 12, Color.Green);

            if (Time.Milliseconds() - lastSaveTime < 1500)
            {
                UI.DrawProgressBar(8, 200, 120, 10, 100, 100);
                Graphics.DrawText(8, 184, "Saved", Color.White);
            }

            Graphics.Present();
            Runtime.Yield();
        }
    }
}

v2.0.3-beta.9

Choose a tag to compare

@saiitanaa saiitanaa released this 10 Jun 01:00
324a719
image

Fast CIA Installation

ReSharp3DS-QR_CODE

ReSharp3DS Runtime Update

ReSharp3DS SDK Update

  • Time API
  • Random API
  • Touch API
  • CirclePad API
  • Screen constants
  • App API
  • SystemInfo API
  • Save API
  • Graphics.DrawBitmap BMP
  • Audio.SetSfxVolume
  • Audio.SetMusicVolume
  • Audio.IsPlaying
  • Audio.IsMusicPlaying

v1.9.3-beta.8

Choose a tag to compare

@saiitanaa saiitanaa released this 07 Jun 20:01
8f925e4
image

Fast CIA Installation

ReSharp3DS-QR_CODE

ReSharp3DS Runtime Update

  • Add updater system It's ready but not yet deployed because I still need to buy hosting servers :(
  • Auto restore/download mscorlib.pe, latest.txt It's ready but not yet deployed because I still need to buy hosting servers :(
  • Move important files to a bin subfolder

Place bin folder here : :sdmc/ReSharp3DS/bin

v1.8.3-beta.7

Choose a tag to compare

@saiitanaa saiitanaa released this 07 Jun 11:25
16a77ac
image

Fast CIA Installation

ReSharp3DS-QR_CODE

ReSharp3DS Runtime Update

  • Update the directory to display subfolders
  • Improve UI
  • Added a 3D banner to the home menu

ReSharp3DS SDK Update

  • Added file management (creating folders and files, writing, reading)

v1.7.3-beta.6

Choose a tag to compare

@saiitanaa saiitanaa released this 06 Jun 07:32
d3e97f4
image

Fast CIA Installation

ReSharp3DS-QR_CODE

ReSharp3DS Runtime Update

  • Add app file explorer
  • New Makefile
  • Dynamic Native Method Mapping

ReSharp3DS SDK Update

  • Add Audio Support

Available methods:

Audio.Init();
Audio.Beep(int frequency, int durationMs);
Audio.PlayWav(string path);
Audio.SetVolume(int volume);
Audio.Loop(string path);
Audio.StopMusic();
Audio.Stop();
Beep / frequency audio
Audio.Beep(440, 200);
Audio.Beep(880, 150);
Custom WAV playback
Audio.PlayWav("audio.wav");
Audio.PlayWav("sfx/jump.wav");

Paths can be relative to the launched .pe file or absolute:

Audio.PlayWav("sdmc:/MyGame/sounds/select.wav");

Recommended WAV format:

PCM 16-bit
Mono or stereo
44100 Hz or 22050 Hz
Music looping
Audio.SetVolume(80);
Audio.Loop("music.wav");
Audio.StopMusic();

Exemple

namespace ReSharp3DS
{
    public class Program
    {
        static bool initialized = false;
        static bool oldA = false;
        static bool oldX = false;
        static bool oldY = false;

        public static void Main()
        {
            if (!initialized)
            {
                initialized = true;

                Console.Clear();
                Console.WriteLine("Audio test");

                Audio.Init();
                Audio.SetVolume(80);
                Audio.Loop("music.wav");
            }

            bool a = Input.IsAPressed();
            bool x = Input.IsXPressed();
            bool y = Input.IsYPressed();

            if (a && !oldA)
            {
                Audio.PlayWav("audio.wav");
            }

            if (x && !oldX)
            {
                Audio.SetVolume(40);
            }

            if (y && !oldY)
            {
                Audio.StopMusic();
            }

            oldA = a;
            oldX = x;
            oldY = y;

            Runtime.Yield();
        }
    }
}

v1.6.3-beta.5

Choose a tag to compare

@saiitanaa saiitanaa released this 05 Jun 17:21
36a3fe2
Capture d'écran 2026-06-05 163832

Fast CIA Installation

ReSharp3DS-QR_CODE

ReSharp3DS Runtime Update

  • Added basic bitmap text rendering for graphics mode.
  • Added support for drawing on the lower screen from C#.
  • Added an automatic console mode when the application does not use the Graphics API.
  • Added gui_can_launch() and gui_shutdown() to preserve the launcher's GUI while allowing the runtime to take over.

ReSharp3DS API Update

  • Ability to create graphical applications!
  • Added Graphics.Clear(int color).
  • Added Graphics.DrawPixel(int x, int y, int color).
  • Added Graphics.FillRect(int x, int y, int width, int height, int color).
  • Added Graphics.DrawRect(int x, int y, int width, int height, int color).
  • Added Graphics.DrawText(int x, int y, string text, int color).
  • Added Graphics.Present().
  • Added basic Color constants to the SDK.

Exemple

namespace ReSharp3DS
{
    public class Program
    {
        static int x = 0;

        public static void Main()
        {
            Graphics.Clear(Color.Black);

            Graphics.DrawText(20, 20, "HELLO GRAPHICS", Color.White);
            Graphics.FillRect(x, 80, 40, 30, Color.Red);

            Graphics.Present();

            x++;

            if (x > 280)
            {
                x = 0;
            }

            Runtime.Yield();
        }
    }
}

v1.5.3-beta.4

Choose a tag to compare

@saiitanaa saiitanaa released this 05 Jun 10:02
61f93f8
image

Fast CIA Installation

ReSharp3DS-QR_CODE

ReSharp3DS Runtime Update

  • Change the banner, sound, and icon for the .cia file
  • Converting gui.c to gui.cpp
  • Added a graphical user interface to gui.cpp (finally!)
  • Change in version number: Before: v1.3.2, After: v1.3.2-beta.X (This is an example)
  • Bugs Fixes
  • Available on Universal-Updater!