Super Mario 3D All-Stars: Difference between revisions
Created page with "This page documents the Super Mario 3D All-Stars (SM3DAS) game. The initial menu is the Stardust launcher, which has the base ProgramId 010049900F5..." |
No edit summary |
||
Line 4: | Line 4: | ||
The launcher launches each game by using [[Applet_Manager_services#ExecuteProgram|ExecuteProgram]] with ProgramIndex={above values}, with 0x10-byte [[Applet_Manager_services#UnpopToUserChannel|parameter-data]]: {+0x0 = [[Settings_services#LanguageCode|LanguageCode]] selected in the launcher for this game, +0x8/+0xC = floats loaded from a fixed-data array specific for each game, which games can use with [[Audio_services#SetAudioDeviceOutputVolumeAuto|SetAudioDeviceOutputVolume]]}. Each game returns to the launcher by using [[Applet_Manager_services#ExecuteProgram|ExecuteProgram]] with ProgramIndex=0, no [[Applet_Manager_services#UnpopToUserChannel|parameter-data]] is passed to the launcher. | The launcher launches each game by using [[Applet_Manager_services#ExecuteProgram|ExecuteProgram]] with ProgramIndex={above values}, with 0x10-byte [[Applet_Manager_services#UnpopToUserChannel|parameter-data]]: {+0x0 = [[Settings_services#LanguageCode|LanguageCode]] selected in the launcher for this game, +0x8/+0xC = floats loaded from a fixed-data array specific for each game, which games can use with [[Audio_services#SetAudioDeviceOutputVolumeAuto|SetAudioDeviceOutputVolume]]}. Each game returns to the launcher by using [[Applet_Manager_services#ExecuteProgram|ExecuteProgram]] with ProgramIndex=0, no [[Applet_Manager_services#UnpopToUserChannel|parameter-data]] is passed to the launcher. | ||
Each game uses different methods of emulation. | |||
= SuperMario64 = | = SuperMario64 = | ||
This is a Nintendo 64 emulator. This uses [[JIT_services|JIT]] for running the emulated executable. RomFs also contains an AOT [[NRO]], but it's unused. | |||
The ROMIMAGE .bin in RomFs is identical to the [https://tcrf.net/Super_Mario_64_(Nintendo_64)/Regional_and_Version_Differences#Shindou_Pak_Taiou_Version Shindou] region N64 ROM. Patches are applied at runtime with the config/lua files. | |||
The LanguageCode is loaded from the launch-parameter passed by the launcher, if not available it will fallback to the output from [[Applet_Manager_services#GetDesiredLanguage|GetDesiredLanguage]]. This is used to select the <language> to load from RomFs "/Message/", the data from there is then used for patching the ROM. Note that the .lua file runs <code>n64InitMessageData();</code> from the GameBegin() function. | |||
RomFs contains the following: | |||
* "/Pipeline.cache", "/shader_p1_frag.spv", "/shader_p1_vert.spv", "/shader_vulkan_frag.spv", "/shader_vulkan_vert.spv" | |||
* "/Message/<language>/" contains: | |||
** "Messages.bin", "UI_Font8.bin", "UI_Font16.bin", "UI_Font16_code2.bin", "UI_FontS88.bin". | |||
* "/.nrr/" contains: | |||
** "EmuAppNX64.nrr": The [[NRR]] for the [[JIT_services|JitPlugin]]. | |||
** "04_UNSMJ3.002.nrr": Unused [[NRR]] for the AOT [[NRO]]. | |||
* "/nro/" contains: | |||
** "EmuSystemJITPlugin.nro": The [[NRO]] for the [[JIT_services|JitPlugin]]. | |||
** "NROBuilder.nro": Unused AOT [[NRO]]. | |||
** "05_UNSMJ3.002.nro": Same as "NROBuilder.nro". | |||
** "/rom/": This contains the ROM sub-directory, in this case that dir-name is "Stardust_JP" which contains the following: | |||
*** "Textures/texture_pack.cpio": Standard (?) .cpio archive containing textures. | |||
*** "00_UNSMJ3.002.meta": Contains json metadata for the other files in this directory, etc. | |||
*** "01_UNSMJ3.002.bin": This is the ROMIMAGE. | |||
*** "02_UNSMJ3.002.cfg": Configuration json file, ROMCONFIG. | |||
*** "03_UNSMJ3.002.pcb": This is the "PRECMP" file referenced by the .meta. | |||
*** "04_UNSMJ3.002.nrr": Unused [[NRR]] which is the same as "/.nrr/04_UNSMJ3.002.nrr", except the [[NRR#Certification|Certification]] and ApplicationId are all-zero. | |||
*** "05_UNSMJ3.002.nro": Unused, identical to "/nro/05_UNSMJ3.002.nro". | |||
*** "06_UNSMJ3.002.lua": This is the "ROMPATCH" Lua file referenced by the .meta. | |||
*** "07_UNSMJ3.002.ppl": This is the "PIPELINE" file referenced by the .meta. | |||
= SuperMarioSunshine = | = SuperMarioSunshine = | ||
This is a Nintendo Gamecube emulator. This uses an AOT [[NRO]] for running the emulated executable. | |||
= SuperMarioGalaxy = | = SuperMarioGalaxy = |