From ee3d5602d4dac7d0d127fbe0e12a051b8332f46c Mon Sep 17 00:00:00 2001 From: MaxBrick Date: Thu, 26 Jun 2025 17:12:38 -0400 Subject: [PATCH 1/4] Stopped CPU suicide and app crashing for now --- miniwin/src/d3drm/backends/citro3d/renderer.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/miniwin/src/d3drm/backends/citro3d/renderer.cpp b/miniwin/src/d3drm/backends/citro3d/renderer.cpp index 5db989cd..6a2fb1cc 100644 --- a/miniwin/src/d3drm/backends/citro3d/renderer.cpp +++ b/miniwin/src/d3drm/backends/citro3d/renderer.cpp @@ -246,8 +246,8 @@ Uint32 Citro3DRenderer::GetTextureId(IDirect3DRMTexture* iTexture) // This, for some reason, causes the app to close // instead of crashing the cpu, useful for // debugging :) - for(i = 0; i < 10000000; i++) - printf("HI IM DAISY"); + //for(i = 0; i < 1000000; i++) + // SDL_LogError(LOG_CATEGORY_MINIWIN, "%s: HI IM DAISY", MINIWIN_PRETTY_FUNCTION); C3D_TexDelete(tex.c3dTex); @@ -255,6 +255,8 @@ Uint32 Citro3DRenderer::GetTextureId(IDirect3DRMTexture* iTexture) if (!surf) { return NO_TEXTURE_ID; } + // Apparently a crash may be caused due to large textures? Hopefully this fixes that. + surf = SDL_ScaleSurface(surf, (surf->w / 2), (surf->h / 2), SDL_SCALEMODE_LINEAR); // TODO: C3D_TexGenerateMipmap or C3D_TexInit? // glGenTextures(1, &tex.glTextureId); // FIXME: GPU_RGBA8 may be wrong From c32d11e96c2c4e43a8453235425d56958aa1ddc9 Mon Sep 17 00:00:00 2001 From: MaxBrick Date: Thu, 26 Jun 2025 17:53:34 -0400 Subject: [PATCH 2/4] put in Texture3DS function thing --- miniwin/src/d3drm/backends/citro3d/renderer.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/miniwin/src/d3drm/backends/citro3d/renderer.cpp b/miniwin/src/d3drm/backends/citro3d/renderer.cpp index 6a2fb1cc..51d9e388 100644 --- a/miniwin/src/d3drm/backends/citro3d/renderer.cpp +++ b/miniwin/src/d3drm/backends/citro3d/renderer.cpp @@ -243,12 +243,6 @@ Uint32 Citro3DRenderer::GetTextureId(IDirect3DRMTexture* iTexture) auto& tex = m_textures[i]; if (tex.texture == texture) { if (tex.version != texture->m_version) { - // This, for some reason, causes the app to close - // instead of crashing the cpu, useful for - // debugging :) - //for(i = 0; i < 1000000; i++) - // SDL_LogError(LOG_CATEGORY_MINIWIN, "%s: HI IM DAISY", MINIWIN_PRETTY_FUNCTION); - C3D_TexDelete(tex.c3dTex); SDL_Surface* surf = SDL_ConvertSurface(surface->m_surface, SDL_PIXELFORMAT_RGBA32); @@ -257,10 +251,13 @@ Uint32 Citro3DRenderer::GetTextureId(IDirect3DRMTexture* iTexture) } // Apparently a crash may be caused due to large textures? Hopefully this fixes that. surf = SDL_ScaleSurface(surf, (surf->w / 2), (surf->h / 2), SDL_SCALEMODE_LINEAR); + // TODO: C3D_TexGenerateMipmap or C3D_TexInit? // glGenTextures(1, &tex.glTextureId); // FIXME: GPU_RGBA8 may be wrong - C3D_TexInit(tex.c3dTex, surf->w, surf->h, GPU_RGBA8); + C3D_TexInitMipmap(tex.c3dTex, surf->w, surf->h, GPU_RGBA8); + Tex3DS_Texture t3x = Tex3DS_TextureImport(t3x, (size_t)(surf->w * surf->h), tex.c3dTex, NULL, false); + Tex3DS_TextureFree(t3x); C3D_TexBind(0, tex.c3dTex); C3D_TexUpload(tex.c3dTex, surf->pixels); From eb04557b5d74d5aae354af3c0ef8a17515900643 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Fri, 27 Jun 2025 02:45:11 +0200 Subject: [PATCH 3/4] Fix clear color --- miniwin/src/d3drm/backends/citro3d/renderer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/miniwin/src/d3drm/backends/citro3d/renderer.cpp b/miniwin/src/d3drm/backends/citro3d/renderer.cpp index 51d9e388..b639410b 100644 --- a/miniwin/src/d3drm/backends/citro3d/renderer.cpp +++ b/miniwin/src/d3drm/backends/citro3d/renderer.cpp @@ -395,8 +395,9 @@ void Citro3DRenderer::Resize(int width, int height, const ViewportTransform& vie void Citro3DRenderer::Clear(float r, float g, float b) { - // FIXME: check colors - C3D_RenderTargetClear(m_renderTarget, C3D_CLEAR_ALL, RGB(static_cast(r * 255), static_cast(g * 255), static_cast(b * 255)), 0); + u32 color = + (static_cast(r * 255) << 24) | (static_cast(g * 255) << 16) | (static_cast(b * 255) << 8) | 255; + C3D_RenderTargetClear(m_renderTarget, C3D_CLEAR_ALL, color, 0); } void Citro3DRenderer::Flip() From afaa64ce916a3fd51c36830b29d4e0c09cc207b6 Mon Sep 17 00:00:00 2001 From: Joshua Peisach Date: Fri, 27 Jun 2025 08:21:54 -0400 Subject: [PATCH 4/4] Set 3dsx smdh metadata --- CMakeLists.txt | 15 +++++++++------ ISLE/res/3ds/isle.png | Bin 0 -> 1813 bytes 2 files changed, 9 insertions(+), 6 deletions(-) create mode 100644 ISLE/res/3ds/isle.png diff --git a/CMakeLists.txt b/CMakeLists.txt index b522293f..35762ced 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -646,13 +646,16 @@ endif() set(CPACK_PACKAGE_DIRECTORY "dist") set(CPACK_PACKAGE_FILE_NAME "isle-${PROJECT_VERSION}-${ISLE_PACKAGE_NAME}-${CMAKE_SYSTEM_PROCESSOR}") if(NINTENDO_3DS) - set(APP_TITLE "LEGO Island") - set(APP_DESCRIPTION "LEGO Island port for 3DS") - set(APP_AUTHOR "LEGO Island Team") - set(APP_ICON "${PROJECT_SOURCE_DIR}/CONFIG/res/lego3ds.png") - set(APP_VERSION ${PROJECT_VERSION}) + ctr_generate_smdh(isle.smdh + NAME "LEGO Island" + TITLE "LEGO Island" + DESCRIPTION "LEGO Island for the Nintendo 3DS" + AUTHOR "LEGO Island Decompilation and Porting Team" + VERSION "${PROJECT_VERSION}" + ICON "isle/res/3ds/isle.png" + ) - ctr_create_3dsx(isle) + ctr_create_3dsx(isle SMDH isle.smdh) endif() if(MSVC) set(CPACK_GENERATOR ZIP) diff --git a/ISLE/res/3ds/isle.png b/ISLE/res/3ds/isle.png new file mode 100644 index 0000000000000000000000000000000000000000..161fc60e3f7b10308ecea871904b452087a64452 GIT binary patch literal 1813 zcmZ{kc{J4j8pppVL-Eu2k(f%tgc*!&^c!iBrLkrg#aPA?V{5WUW1B4b*&>Eeev-0B z82eaeQe>&DgCbj&L6*U|)4Au|bM8Iop3iwc?{i+y^E%IePuxvoJ^o{2#{dA}N8ivk zV<+Nw@o=+$YtCIFJI*=ZFf#&x5GVjVj0ONE8$Fx{fcxyhMGOF-o&tb~Z%%{hC3b_` z$v{sVSpEIlK13a56JFmNx9$PJ@jrhT2aug}iVZ<{w2=;Ifg8dncs3mB$0kRo(Aw85 z-090B4v)sIg+Xh5Ua2&wQtVarln&ceRi!Z;T+S?cz&l@7S3+8Vqmy_p{#0T|suo(j zq5AokOGEMLmxZFA^XPNoHrqHwpP26FF}UJAb#Q-n zjse?0y*kxn^O(U5+&H8J@g9r0)oq)ySI-|oQT!BTG98>lhH{&`hL`+Is6e)FfRo(% zPWLE3ogFg@$&c3z0^2e8xK&a-+xNMD>Ev|T!*yq}%JY`0<&$>dtazeSUmo>VDWH_=+h85UX9iu*CGg!XXxWy>qHyPD2~513d@<&q9nQJy$42p*R{hMwjK_;=$f=70{*7^ZQEenN^@KdN!Y&Sb6-?vbT*L9iZ!> z9t3rwS4W_K$!*BA9oU}QrI0O%1gX>qfOiVgV`^V0LJoCgKV)mE9WU+5HM6pjlphX0 z1*YFzL(`fhhvWQD9xI(|<&d>fSB^{J9V`WASPw^{UfZX$ozcZGw>L>uD@*r^XyuyweqO!<-SEvYC_ zh0?I-X;RSx^RvazlQos1y&Gr!4Av~eCZ5*NxwpSn?)P%ZicyyvvSnJL(lxBBzg-J3 z=#E<%cXg{h$lN)%m`I{=U7^lp8|?-^h!$}gc5bVk(oO&k22g2JZI}fw`ux*2mDMQ; zJK@4J8_2^4VVqZb=_K&y6R1R$_FH3qpE$>f@-`ZvE^C}!Liz060%f79kENadC=%PY zg>nC*-4!bO9w|?jOILU&2hOX{k&cawJLI6eR!+f_f7<>G;Avqn9Smj`jlcBLyYMKP0crU)~{`97WJFR zZ_rPYD0*w28Vl_eX?AZB8)ZP zQra5giT*%>jvQBFl8kk&thfjE4V3q7tdo9R=ysJmZ(7=`o%R^pG%nCxl8zoo^04zK$VuryG^ zk~h!ZUa0&+;nz z$u2oHgZ%R8JFOOin%P(0n>LBB+}F;N{Hl}BFQNL*U4WoP=