mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2026-05-15 09:45:47 +00:00
Updated PlayReports for more titles (#93)
- Echoes of Wisdom (Warps) - Super Mario Odyssey (Kingdoms) - Super Mario Bros. Wonder (World & Course) - Pokemon Scarlet/Violet (DLC & Accademy Rooms) - Super Mario 3D All Stars (Game Selection) (Berry is working on track showcase) Co-authored-by: berrydiaboli <anthonyhoffman54444@gmail.com> Reviewed-on: https://git.ryujinx.app/projects/Ryubing/pulls/93
This commit is contained in:
@@ -59,6 +59,7 @@ namespace Ryujinx.Common
|
|||||||
|
|
||||||
//Mario Franchise
|
//Mario Franchise
|
||||||
"010021d00812a000", // Arcade Archives VS. SUPER MARIO BROS.
|
"010021d00812a000", // Arcade Archives VS. SUPER MARIO BROS.
|
||||||
|
"01007fe0221d8000", // Hello, Mario!
|
||||||
"01006d0017f7a000", // Mario & Luigi: Brothership
|
"01006d0017f7a000", // Mario & Luigi: Brothership
|
||||||
"010003000e146000", // Mario & Sonic at the Olympic Games Tokyo 2020
|
"010003000e146000", // Mario & Sonic at the Olympic Games Tokyo 2020
|
||||||
"010067300059a000", // Mario + Rabbids: Kingdom Battle
|
"010067300059a000", // Mario + Rabbids: Kingdom Battle
|
||||||
@@ -70,6 +71,9 @@ namespace Ryujinx.Common
|
|||||||
"0100bde00862a000", // Mario Tennis Aces
|
"0100bde00862a000", // Mario Tennis Aces
|
||||||
"0100b99019412000", // Mario vs. Donkey Kong
|
"0100b99019412000", // Mario vs. Donkey Kong
|
||||||
"010049900f546000", // Super Mario 3D All-Stars
|
"010049900f546000", // Super Mario 3D All-Stars
|
||||||
|
"010049900f546001", // Super Mario 3D All-Stars | Super Mario 64
|
||||||
|
"010049900f546002", // Super Mario 3D All-Stars | Super Mario Sunshine
|
||||||
|
"010049900f546003", // Super Mario 3D All-Stars | Super Mario Galaxy
|
||||||
"010028600ebda000", // Super Mario 3D World + Bowser's Fury
|
"010028600ebda000", // Super Mario 3D World + Bowser's Fury
|
||||||
"010049900F546001", // Super Mario 64
|
"010049900F546001", // Super Mario 64
|
||||||
"0100ea80032ea000", // Super Mario Bros. U Deluxe
|
"0100ea80032ea000", // Super Mario Bros. U Deluxe
|
||||||
@@ -107,6 +111,11 @@ namespace Ryujinx.Common
|
|||||||
"0100187003a36000", // Pokémon: Let's Go Eevee!
|
"0100187003a36000", // Pokémon: Let's Go Eevee!
|
||||||
"010003f003a34000", // Pokémon: Let's Go Pikachu!
|
"010003f003a34000", // Pokémon: Let's Go Pikachu!
|
||||||
"0100f43008c44000", // Pokémon Legends: Z-A
|
"0100f43008c44000", // Pokémon Legends: Z-A
|
||||||
|
"0100554023408000", // Pokémon FireRed Version (EN)
|
||||||
|
"01006fa0233f8000", // Pokémon FireRed Version (JP)
|
||||||
|
"0100fd6023430000", // Pokémon LeafGreen Version (DE)
|
||||||
|
"0100f1e0233fa000", // Pokémon LeafGreen Version (JP)
|
||||||
|
"01005b7008c52000", // Pokémon Champions
|
||||||
|
|
||||||
//Splatoon Franchise
|
//Splatoon Franchise
|
||||||
"0100f8f0000a2000", // Splatoon 2 (EU)
|
"0100f8f0000a2000", // Splatoon 2 (EU)
|
||||||
@@ -116,13 +125,14 @@ namespace Ryujinx.Common
|
|||||||
"0100ba0018500000", // Splatoon 3: Splatfest World Premiere
|
"0100ba0018500000", // Splatoon 3: Splatfest World Premiere
|
||||||
|
|
||||||
//NSO Membership games
|
//NSO Membership games
|
||||||
|
"0100d870045b6000", // NES - Nintendo Switch Online
|
||||||
|
"01008d300c50c000", // SNES - Nintendo Switch Online
|
||||||
"0100c62011050000", // GB - Nintendo Switch Online
|
"0100c62011050000", // GB - Nintendo Switch Online
|
||||||
"010012f017576000", // GBA - Nintendo Switch Online
|
"010012f017576000", // GBA - Nintendo Switch Online
|
||||||
"0100c9a00ece6000", // N64 - Nintendo Switch Online
|
"0100c9a00ece6000", // N64 - Nintendo Switch Online
|
||||||
"0100e0601c632000", // N64 - Nintendo Switch Online 18+
|
"0100e0601c632000", // N64 - Nintendo Switch Online 18+
|
||||||
"0100d870045b6000", // NES - Nintendo Switch Online
|
|
||||||
"0100b3c014bda000", // SEGA Genesis - Nintendo Switch Online
|
"0100b3c014bda000", // SEGA Genesis - Nintendo Switch Online
|
||||||
"01008d300c50c000", // SNES - Nintendo Switch Online
|
"0100bfc01d976000", // Virtual Boy - Nintendo Switch Online
|
||||||
"0100ccf019c8c000", // F-ZERO 99
|
"0100ccf019c8c000", // F-ZERO 99
|
||||||
"0100ad9012510000", // PAC-MAN 99
|
"0100ad9012510000", // PAC-MAN 99
|
||||||
"010040600c5ce000", // Tetris 99
|
"010040600c5ce000", // Tetris 99
|
||||||
@@ -141,6 +151,8 @@ namespace Ryujinx.Common
|
|||||||
"0100704000B3A000", // Snipperclips
|
"0100704000B3A000", // Snipperclips
|
||||||
"01006a800016e000", // Super Smash Bros. Ultimate
|
"01006a800016e000", // Super Smash Bros. Ultimate
|
||||||
"0100a9400c9c2000", // Tokyo Mirage Sessions #FE Encore
|
"0100a9400c9c2000", // Tokyo Mirage Sessions #FE Encore
|
||||||
|
"0100ca502552a000", // Tomodachi Life: Living the Dream - Welcome Edition
|
||||||
|
"010051f0207b2000", // Tomodachi Life: Living the Dream
|
||||||
|
|
||||||
//Bayonetta Franchise
|
//Bayonetta Franchise
|
||||||
"010076f0049a2000", // Bayonetta
|
"010076f0049a2000", // Bayonetta
|
||||||
@@ -148,6 +160,9 @@ namespace Ryujinx.Common
|
|||||||
"01004a4010fea000", // Bayonetta 3
|
"01004a4010fea000", // Bayonetta 3
|
||||||
"0100cf5010fec000", // Bayonetta Origins: Cereza and the Lost Demon
|
"0100cf5010fec000", // Bayonetta Origins: Cereza and the Lost Demon
|
||||||
|
|
||||||
|
// Famicom Detective Club Franchise
|
||||||
|
"010054601d54c000", // Emio - The Smiling Man: Famicom Detective Series (DEMO)
|
||||||
|
|
||||||
//Persona Franchise
|
//Persona Franchise
|
||||||
"0100dcd01525a000", // Persona 3 Portable
|
"0100dcd01525a000", // Persona 3 Portable
|
||||||
"010075a016a3a000", // Persona 4 Arena Ultimax
|
"010075a016a3a000", // Persona 4 Arena Ultimax
|
||||||
@@ -171,7 +186,9 @@ namespace Ryujinx.Common
|
|||||||
"0100453019aa8000", // Xenoblade Chronicles: X Definitive Edition
|
"0100453019aa8000", // Xenoblade Chronicles: X Definitive Edition
|
||||||
|
|
||||||
//Misc Games
|
//Misc Games
|
||||||
|
"01003670066de000", // 36 Fragments of Midnight
|
||||||
"010056e00853a000", // A Hat in Time
|
"010056e00853a000", // A Hat in Time
|
||||||
|
"0100c9f00aaee000", // Ascendence
|
||||||
"0100fd1014726000", // Baldurs Gate: Dark Alliance
|
"0100fd1014726000", // Baldurs Gate: Dark Alliance
|
||||||
"01008c2019598000", // Bluey: The Video Game
|
"01008c2019598000", // Bluey: The Video Game
|
||||||
"010096f00ff22000", // Borderlands 2: Game of the Year Edition
|
"010096f00ff22000", // Borderlands 2: Game of the Year Edition
|
||||||
@@ -185,8 +202,10 @@ namespace Ryujinx.Common
|
|||||||
"010027400cdc6000", // Divinity Original 2 - Definitive Edition
|
"010027400cdc6000", // Divinity Original 2 - Definitive Edition
|
||||||
"01008c8012920000", // Dying Light Platinum Edition
|
"01008c8012920000", // Dying Light Platinum Edition
|
||||||
"0100d11013e6a000", // Eschatos
|
"0100d11013e6a000", // Eschatos
|
||||||
|
"01000490067ae000", // Frederic 2: Evil Strikes Back
|
||||||
"01001cc01b2d4000", // Goat Simulator 3
|
"01001cc01b2d4000", // Goat Simulator 3
|
||||||
"01003620068ea000", // Hand of Fate 2
|
"01003620068ea000", // Hand of Fate 2
|
||||||
|
"01007ac00e012000", // HEXAGRAVITY
|
||||||
"0100f7e00c70e000", // Hogwarts Legacy
|
"0100f7e00c70e000", // Hogwarts Legacy
|
||||||
"010013c00e930000", // Hollow Knight: Silksong
|
"010013c00e930000", // Hollow Knight: Silksong
|
||||||
"010085500130a000", // Lego City: Undercover
|
"010085500130a000", // Lego City: Undercover
|
||||||
@@ -196,6 +215,7 @@ namespace Ryujinx.Common
|
|||||||
"0100853015e86000", // No Man's Sky
|
"0100853015e86000", // No Man's Sky
|
||||||
"0100f85014ed0000", // No More Heroes
|
"0100f85014ed0000", // No More Heroes
|
||||||
"0100463014ed4000", // No More Heroes 2
|
"0100463014ed4000", // No More Heroes 2
|
||||||
|
"0100f7d00a1bc000", // NO THING
|
||||||
"0100e570094e8000", // Owlboy
|
"0100e570094e8000", // Owlboy
|
||||||
"01007bb017812000", // Portal
|
"01007bb017812000", // Portal
|
||||||
"0100abd01785c000", // Portal 2
|
"0100abd01785c000", // Portal 2
|
||||||
@@ -204,11 +224,14 @@ namespace Ryujinx.Common
|
|||||||
"01008e200c5c2000", // Muse Dash
|
"01008e200c5c2000", // Muse Dash
|
||||||
"01005ff002e2a000", // Rayman Legends
|
"01005ff002e2a000", // Rayman Legends
|
||||||
"01007820196a6000", // Red Dead Redemption
|
"01007820196a6000", // Red Dead Redemption
|
||||||
|
"01007a800d520000", // REFUNCT
|
||||||
"0100e8300a67a000", // Risk
|
"0100e8300a67a000", // Risk
|
||||||
"01002f7013224000", // Rune Factory 5
|
"01002f7013224000", // Rune Factory 5
|
||||||
"01008d100d43e000", // Saints Row IV
|
"01008d100d43e000", // Saints Row IV
|
||||||
"0100de600beee000", // Saints Row: The Third - The Full Package
|
"0100de600beee000", // Saints Row: The Third - The Full Package
|
||||||
"01001180021fa000", // Shovel Knight: Specter of Torment
|
"01001180021fa000", // Shovel Knight: Specter of Torment
|
||||||
|
"010079f00671c000", // Sparkle 2: Evo
|
||||||
|
"010077b00e046000", // Spyro: Reignited Trilogy
|
||||||
"0100e1D01eb2e000", // Squeakross: Home Squeak Home
|
"0100e1D01eb2e000", // Squeakross: Home Squeak Home
|
||||||
"0100e65002bb8000", // Stardew Valley
|
"0100e65002bb8000", // Stardew Valley
|
||||||
"0100d7a01b7a2000", // Star Wars: Bounty Hunter
|
"0100d7a01b7a2000", // Star Wars: Bounty Hunter
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using Gommon;
|
using Gommon;
|
||||||
using Humanizer;
|
using Humanizer;
|
||||||
|
using MsgPack;
|
||||||
using System;
|
using System;
|
||||||
using System.Buffers.Binary;
|
using System.Buffers.Binary;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -23,24 +24,382 @@ namespace Ryujinx.Ava.Systems.PlayReport
|
|||||||
private static FormattedValue SkywardSwordHD_Rupees(SingleValue value)
|
private static FormattedValue SkywardSwordHD_Rupees(SingleValue value)
|
||||||
=> "rupee".ToQuantity(value.Matched.IntValue);
|
=> "rupee".ToQuantity(value.Matched.IntValue);
|
||||||
|
|
||||||
private static FormattedValue SuperMarioOdyssey_AssistMode(SingleValue value)
|
private static FormattedValue EchoesOfWisdom_Warp(SingleValue value)
|
||||||
=> value.Matched.BoxedValue is 1 ? "Playing in Assist Mode" : "Playing in Regular Mode";
|
{
|
||||||
|
FormattedValue locations = value.Matched.IntValue switch
|
||||||
|
{
|
||||||
|
// Hyrule Field
|
||||||
|
23 => "Hyrule Field: Kakariko Village",
|
||||||
|
43 => "Hyrule Field: West of Hyrule Ranch",
|
||||||
|
45 => "Hyrule Field: North of Hyrule Ranch",
|
||||||
|
25 => "Hyrule Field: Hyrule Ranch",
|
||||||
|
26 => "Hyrule Field: West of Hyrule Castle",
|
||||||
|
48 => "Hyrule Field: Haunted Grove",
|
||||||
|
24 => "Hyrule Field: Hyrule Castle",
|
||||||
|
27 => "Hyrule Field: Northern Sanctuary",
|
||||||
|
28 => "Eastern Hyrule Field: Eastern Temple",
|
||||||
|
41 => "Eastern Hyrule Field: Dampé Studio",
|
||||||
|
22 => "Lake Hylia: Great Fairy Shrine",
|
||||||
|
// Eternal Forest
|
||||||
|
47 => "Eternal Forest: Entrance",
|
||||||
|
46 => "Eternal Forest: Great Deku Tree",
|
||||||
|
752 => "Eternal Forest: Stilled Ancient Ruins (Halfway Point)",
|
||||||
|
753 => "Eternal Forest: Stilled Ancient Ruins (Null)",
|
||||||
|
// Suthorn
|
||||||
|
33 => "Suthorn Prairie: Lueburry's House",
|
||||||
|
20 => "Suthorn Prairie: Suthorn Village",
|
||||||
|
21 => "Suthorn Forest: Suthorn Ruins",
|
||||||
|
// Faron Wetlands
|
||||||
|
13 => "Faron Wetlands: Entrance",
|
||||||
|
15 => "Faron Wetlands: Scrubton",
|
||||||
|
18 => "Faron Wetlands: Blossu's House",
|
||||||
|
17 => "Faron Wetlands: Heart Lake",
|
||||||
|
852 => "Faron Wetlands: Stilled Faron Wetlands",
|
||||||
|
601 => "Faron Wetlands: Faron Temple 3F",
|
||||||
|
602 => "Faron Wetlands: Faron Temple 2F (Underwater Entrance)",
|
||||||
|
603 => "Faron Wetlands: Faron Temple 2F (West Entrance)",
|
||||||
|
604 => "Faron Wetlands: Faron Temple 2F (Cliff Entrance)",
|
||||||
|
605 => "Faron Wetlands: Faron Temple 1F (Diababa)",
|
||||||
|
606 => "Faron Wetlands: Faron Temple 1F (Gohma)",
|
||||||
|
// Jabul Waters
|
||||||
|
11 => "Jabul Waters: River Zora Village",
|
||||||
|
9 => "Jabul Waters: Crossflows Plaza",
|
||||||
|
8 => "Jabul Waters: Seesyde Village",
|
||||||
|
12 => "Jabul Waters: Sea Zora Village",
|
||||||
|
10 => "Jabul Waters: Lord Jabu-Jabu's Den",
|
||||||
|
201 => "Jabul Waters: Jabul Ruins 1F (Entrance)",
|
||||||
|
202 => "Jabul Waters: Jabul Ruins 1F (Vocavor)",
|
||||||
|
// Gerudo Desert
|
||||||
|
40 => "Gerudo Desert: Entrance",
|
||||||
|
29 => "Gerudo Desert: Oasis",
|
||||||
|
32 => "Gerudo Desert: Ancestor's Cave Of Rest",
|
||||||
|
30 => "Gerudo Desert: Gerudo Town",
|
||||||
|
31 => "Gerudo Desert: Gerudo Sanctum",
|
||||||
|
351 => "Gerudo Desert: Stilled Gerudo Sanctum",
|
||||||
|
303 => "Gerudo Desert: Gerudo Sanctum 1F (West Entrance)",
|
||||||
|
304 => "Gerudo Desert: Gerudo Sanctum 1F (East Entrance)",
|
||||||
|
301 => "Gerudo Desert: Gerudo Sanctum 2F (The Key)",
|
||||||
|
302 => "Gerudo Desert: Gerudo Sanctum 2F (The Elephant Room)",
|
||||||
|
305 => "Gerudo Desert: Gerudo Sanctum 2F (Mogryph)",
|
||||||
|
// Eldin Volcano
|
||||||
|
4 => "Eldin Volcano: Eldin Volcano Trail",
|
||||||
|
44 => "Eldin Volcano: Lava Lake",
|
||||||
|
3 => "Eldin Volcano: Goron City",
|
||||||
|
5 => "Eldin Volcano: Rock Roast Volcano",
|
||||||
|
49 => "Eldin Volcano: Crater Shortcut",
|
||||||
|
552 => "Eldin Volcano: Stilled Eldin Volcano",
|
||||||
|
501 => "Eldin Volcano: Eldin Temple 1F",
|
||||||
|
503 => "Eldin Volcano: Eldin Temple 2F",
|
||||||
|
502 => "Eldin Volcano: Eldin Temple 3F",
|
||||||
|
// Hebra Mountain
|
||||||
|
34 => "Hebra Mountain: Hebra Mountain Passage (1)",
|
||||||
|
35 => "Hebra Mountain: Sheltered Hot Spring",
|
||||||
|
36 => "Hebra Mountain: Condé's House",
|
||||||
|
38 => "Hebra Mountain: Hebra Mountain Passage (2)",
|
||||||
|
37 => "Hebra Mountain: Hebra Mountain Passage (3)",
|
||||||
|
39 => "Hebra Mountain: Summit",
|
||||||
|
652 => "Hebra Mountain: Stilled Holy Mount Lanayru",
|
||||||
|
801 => "Hebra Mountain: Lanayru Temple 1F",
|
||||||
|
802 => "Hebra Mountain: Lanayru Temple B2",
|
||||||
|
803 => "Hebra Mountain: Lanayru Temple B4",
|
||||||
|
_ => FormattedValue.ForceReset
|
||||||
|
};
|
||||||
|
|
||||||
private static FormattedValue SuperMarioOdysseyChina_AssistMode(SingleValue value)
|
return locations.Reset
|
||||||
=> value.Matched.BoxedValue is 1 ? "Playing in 帮助模式" : "Playing in 普通模式";
|
? FormattedValue.ForceReset
|
||||||
|
: $"Warped to {locations}";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static FormattedValue SuperMario3DAllStars(SingleValue value)
|
||||||
|
{
|
||||||
|
// TODO: Is this really necessary?
|
||||||
|
FormattedValue title = value.Matched.IntValue switch
|
||||||
|
{
|
||||||
|
1 => "Super Mario 64",
|
||||||
|
2 => "Super Mario Sunshine",
|
||||||
|
3 => "Super Mario Galaxy",
|
||||||
|
_ => FormattedValue.ForceReset
|
||||||
|
};
|
||||||
|
|
||||||
|
return title.Reset
|
||||||
|
? FormattedValue.ForceReset
|
||||||
|
: $"Playing {title}";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static FormattedValue SuperMario3DAllStars_MainMenu(MultiValue value)
|
||||||
|
{
|
||||||
|
int albumId = value.Matched[0].IntValue;
|
||||||
|
int songId = value.Matched[1].IntValue;
|
||||||
|
|
||||||
|
string album = value.Matched[0].IntValue switch
|
||||||
|
{
|
||||||
|
1 => "Super Mario 64 OST",
|
||||||
|
2 => "Super Mario Sunshine OST",
|
||||||
|
3 => "Super Mario Galaxy OST",
|
||||||
|
_ => "Listening to Super Mario 3D All-Stars"
|
||||||
|
};
|
||||||
|
|
||||||
|
string song = (albumId, songId) switch
|
||||||
|
{
|
||||||
|
// Super Mario 64
|
||||||
|
(1, 0) => "It's a Me, Mario!",
|
||||||
|
(1, 1) => "Title Theme",
|
||||||
|
(1, 2) => "Peach's Message",
|
||||||
|
(1, 3) => "Opening",
|
||||||
|
(1, 4) => "Super Mario 64 Main Theme",
|
||||||
|
(1, 5) => "Slider",
|
||||||
|
(1, 6) => "Inside the Castle Walls",
|
||||||
|
(1, 7) => "Looping Steps",
|
||||||
|
(1, 8) => "Dire, Dire Docks",
|
||||||
|
(1, 9) => "Lethal Lava Land",
|
||||||
|
(1, 10) => "Snow Mountain",
|
||||||
|
(1, 11) => "Haunted House",
|
||||||
|
(1, 12) => "Merry-Go-Round",
|
||||||
|
(1, 13) => "Cave Dungeon",
|
||||||
|
(1, 14) => "Piranha Plant's Lullaby",
|
||||||
|
(1, 15) => "Powerful Mario",
|
||||||
|
(1, 16) => "Metallic Mario",
|
||||||
|
(1, 17) => "File Select",
|
||||||
|
(1, 18) => "Correct Solution",
|
||||||
|
(1, 19) => "Toad's Message",
|
||||||
|
(1, 20) => "Power Star",
|
||||||
|
(1, 21) => "Race Fanfare",
|
||||||
|
(1, 22) => "Star Catch Fanfare",
|
||||||
|
(1, 23) => "Game Start",
|
||||||
|
(1, 24) => "Course Clear",
|
||||||
|
(1, 25) => "Game Over",
|
||||||
|
(1, 26) => "Stage Boss",
|
||||||
|
(1, 27) => "Koopa's Message",
|
||||||
|
(1, 28) => "Koopa's Road",
|
||||||
|
(1, 29) => "Koopa's Theme",
|
||||||
|
(1, 30) => "Koopa Clear",
|
||||||
|
(1, 31) => "Ultimate Koopa",
|
||||||
|
(1, 32) => "Ultimate Koopa Clear",
|
||||||
|
(1, 33) => "Ending Demo",
|
||||||
|
(1, 34) => "Staff Roll",
|
||||||
|
(1, 35) => "Piranha Plant's Lullaby - Piano",
|
||||||
|
|
||||||
|
// Super Mario Sunshine
|
||||||
|
(2, 0) => "Isle Delfino",
|
||||||
|
(2, 1) => "Delfino Airstrip",
|
||||||
|
(2, 2) => "Bianco Hills",
|
||||||
|
(2, 3) => "Ricco Harbor",
|
||||||
|
(2, 4) => "Gelato Beach",
|
||||||
|
(2, 5) => "Pinna Beach",
|
||||||
|
(2, 6) => "Pinna Park",
|
||||||
|
(2, 7) => "Sirena Beach",
|
||||||
|
(2, 8) => "Hotel Delfino",
|
||||||
|
(2, 9) => "Casino",
|
||||||
|
(2, 10) => "Noki Bay",
|
||||||
|
(2, 11) => "Noki Depths",
|
||||||
|
(2, 12) => "Pianta Village",
|
||||||
|
(2, 13) => "Pianta Hot Spring",
|
||||||
|
(2, 14) => "Pianta Rescue",
|
||||||
|
(2, 15) => "Pianta Village - Fluff Festival",
|
||||||
|
(2, 16) => "Underground",
|
||||||
|
(2, 17) => "Secret Course",
|
||||||
|
(2, 18) => "Secret Course - Sky and Sea",
|
||||||
|
(2, 19) => "Corona Mountain",
|
||||||
|
(2, 20) => "Mid-Boss",
|
||||||
|
(2, 21) => "Proto Piranha",
|
||||||
|
(2, 22) => "Phantamanta",
|
||||||
|
(2, 23) => "Boss Battle",
|
||||||
|
(2, 24) => "Gooper Blooper Intro",
|
||||||
|
(2, 25) => "Wiggler Intro",
|
||||||
|
(2, 26) => "Mecha-Bowser",
|
||||||
|
(2, 27) => "Bowser",
|
||||||
|
(2, 28) => "Shadow Mario",
|
||||||
|
(2, 29) => "Racing Il Piantissimo",
|
||||||
|
(2, 30) => "Event",
|
||||||
|
(2, 31) => "Timed Event",
|
||||||
|
(2, 32) => "Yoshi-Go-Round",
|
||||||
|
(2, 33) => "Title Screen",
|
||||||
|
(2, 34) => "Opening Demo",
|
||||||
|
(2, 35) => "Select Data",
|
||||||
|
(2, 36) => "Select Scenario",
|
||||||
|
(2, 37) => "Course Intro",
|
||||||
|
(2, 38) => "Course Intro - Shadow Mario",
|
||||||
|
(2, 39) => "A Shine Sprite Appears",
|
||||||
|
(2, 40) => "Shine!",
|
||||||
|
(2, 41) => "Race Fanfare",
|
||||||
|
(2, 42) => "Casino Fanfare",
|
||||||
|
(2, 43) => "Too Bad!",
|
||||||
|
(2, 44) => "Game Over",
|
||||||
|
(2, 45) => "Welcome to Isle Delfino (Movie)",
|
||||||
|
(2, 46) => "Icky Goop (Movie)",
|
||||||
|
(2, 47) => "Mario on Trial (Movie)",
|
||||||
|
(2, 48) => "How to Use FLUDD (Movie)",
|
||||||
|
(2, 49) => "Shadow Mario Appears (Movie)",
|
||||||
|
(2, 50) => "The Kidnapping of Princess Peach (Movie)",
|
||||||
|
(2, 51) => "Mecha-Bowser Rises (Movie)",
|
||||||
|
(2, 52) => "Meet Bowser Jr. (Movie)",
|
||||||
|
(2, 53) => "FLUDD Theft (Movie)",
|
||||||
|
(2, 54) => "Hot Tub Intrusion (Movie)",
|
||||||
|
(2, 55) => "Epilogue (Movie)",
|
||||||
|
(2, 56) => "Staff Credits",
|
||||||
|
(2, 57) => "Have a Relaxing Vacation!",
|
||||||
|
|
||||||
|
// Super Mario Galaxy
|
||||||
|
(3, 0) => "Overture",
|
||||||
|
(3, 1) => "The Star Festival",
|
||||||
|
(3, 2) => "Attack of the Airships",
|
||||||
|
(3, 3) => "Catastrophe",
|
||||||
|
(3, 4) => "Peach's Castle Stolen",
|
||||||
|
(3, 5) => "Enter the Galaxy",
|
||||||
|
(3, 6) => "Egg Planet",
|
||||||
|
(3, 7) => "Rosaline in the Observatory 1",
|
||||||
|
(3, 8) => "The Honeyhive",
|
||||||
|
(3, 9) => "Space Junk Road",
|
||||||
|
(3, 10) => "Battlerock Galaxy",
|
||||||
|
(3, 11) => "Beach Bowl Galaxy",
|
||||||
|
(3, 12) => "Rosalina in the Observatory 2",
|
||||||
|
(3, 13) => "Enter Bowser Jr.!",
|
||||||
|
(3, 14) => "Waltz of the Boos",
|
||||||
|
(3, 15) => "Buoy Base Galaxy",
|
||||||
|
(3, 16) => "Gusty Garden Galaxy",
|
||||||
|
(3, 17) => "Rosaline in the Observatory 3",
|
||||||
|
(3, 18) => "King Bowser",
|
||||||
|
(3, 19) => "Melty Molten Galaxy",
|
||||||
|
(3, 20) => "The Galaxy Reactor",
|
||||||
|
(3, 21) => "Final Battle with Bowser",
|
||||||
|
(3, 22) => "A New Dawn",
|
||||||
|
(3, 23) => "Birth",
|
||||||
|
(3, 24) => "Super Mario Galaxy",
|
||||||
|
(3, 25) => "Purple Comet",
|
||||||
|
(3, 26) => "Blue Sky Athletic",
|
||||||
|
(3, 27) => "Super Mario 2007",
|
||||||
|
(3, 28) => "File Select",
|
||||||
|
(3, 29) => "Luma",
|
||||||
|
(3, 30) => "Gateway Galaxy",
|
||||||
|
(3, 31) => "Stolen Grand Star",
|
||||||
|
(3, 32) => "To the Observatory Grounds 1",
|
||||||
|
(3, 33) => "Observation Dome",
|
||||||
|
(3, 34) => "Course Select",
|
||||||
|
(3, 35) => "Dino Piranha",
|
||||||
|
(3, 36) => "A Chance to Grab a Star!",
|
||||||
|
(3, 37) => "A Tense Moment",
|
||||||
|
(3, 38) => "Big Bad Bugaboom",
|
||||||
|
(3, 39) => "King Kaliente",
|
||||||
|
(3, 40) => "The Toad Brigade",
|
||||||
|
(3, 41) => "Airship Armada",
|
||||||
|
(3, 42) => "Aquatic Race",
|
||||||
|
(3, 43) => "Space Fantasy",
|
||||||
|
(3, 44) => "Megaleg",
|
||||||
|
(3, 45) => "To The Observatory Grounds 2",
|
||||||
|
(3, 46) => "Space Athletic",
|
||||||
|
(3, 47) => "Speedy Comet",
|
||||||
|
(3, 48) => "Beach Bowl Galaxy - Undersea",
|
||||||
|
(3, 49) => "Interlude",
|
||||||
|
(3, 50) => "Bowser's Stronghold Appears",
|
||||||
|
(3, 51) => "The Fiery Stronghold",
|
||||||
|
(3, 52) => "The Big Staircase",
|
||||||
|
(3, 53) => "Bowser Appears",
|
||||||
|
(3, 54) => "Star Ball",
|
||||||
|
(3, 55) => "The Library",
|
||||||
|
(3, 56) => "Buoy Base Galaxy - Undersea",
|
||||||
|
(3, 57) => "Rainbow Mario",
|
||||||
|
(3, 58) => "Chase the Bunnies",
|
||||||
|
(3, 59) => "Help!",
|
||||||
|
(3, 60) => "Major Burrows",
|
||||||
|
(3, 61) => "Pipe Interior",
|
||||||
|
(3, 62) => "Cosmic Comet",
|
||||||
|
(3, 63) => "Drip Drop Galaxy",
|
||||||
|
(3, 64) => "Kingfin",
|
||||||
|
(3, 65) => "Boo Race",
|
||||||
|
(3, 66) => "Ice Mountain",
|
||||||
|
(3, 67) => "Ice Mario",
|
||||||
|
(3, 68) => "Lava Path",
|
||||||
|
(3, 69) => "Fire Mario",
|
||||||
|
(3, 70) => "Dusty Dune Galaxy",
|
||||||
|
(3, 71) => "Heavy Metal Mecha-Bowser",
|
||||||
|
(3, 72) => "A-wa-wa-wa!",
|
||||||
|
(3, 73) => "Deep Dark Galaxy",
|
||||||
|
(3, 74) => "Kamella",
|
||||||
|
(3, 75) => "Star Ball 2",
|
||||||
|
(3, 76) => "Sad Girl",
|
||||||
|
(3, 77) => "Flying Mario",
|
||||||
|
(3, 78) => "Star Child",
|
||||||
|
(3, 79) => "A Wish",
|
||||||
|
(3, 80) => "Family",
|
||||||
|
_ => ""
|
||||||
|
};
|
||||||
|
|
||||||
|
return string.IsNullOrEmpty(song) ? FormattedValue.ForceReset : $"{album} - {song}";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static FormattedValue SuperMarioOdyssey(SingleValue value)
|
||||||
|
=> value.Matched.LongValue switch
|
||||||
|
{
|
||||||
|
// TODO: Needs updated for sub-areas.
|
||||||
|
2973331007 => "Cap Kingdom: Bonneton",
|
||||||
|
2661781375 => "Cascade Kingdom: Fossil Falls",
|
||||||
|
512560049 => "Sand Kingdom: Tostarena",
|
||||||
|
3079659402 => "Wooded Kingdom: Steam Gardens",
|
||||||
|
1941286268 => "Lake Kingdom: Lake Lamode",
|
||||||
|
3098209122 => "Cloud Kingdom: Nimbus Arena",
|
||||||
|
4088050842 => "Lost Kingdom: Forgotten Isle",
|
||||||
|
53003352 => "Metro Kingdom: New Donk City",
|
||||||
|
4265839612 => "Seaside Kingdom: Bubblaine",
|
||||||
|
3288863344 => "Snow Kingdom: Shiveria",
|
||||||
|
3180104973 => "Luncheon Kingdom: Mount Volbono",
|
||||||
|
2284558980 => "Ruined Kingdom: Crumbleden",
|
||||||
|
3024139598 => "Bowser's Kingdom: Bowser's Castle",
|
||||||
|
1351608174 => "Moon Kingdom: Honeylune Ridge",
|
||||||
|
1698750149 => "Dark Side: Rabbit Ridge",
|
||||||
|
3206301958 => "Darker Side: Culmina Crater",
|
||||||
|
3963002526 => "Mushroom Kingdom: Peach's Castle",
|
||||||
|
_ => FormattedValue.ForceReset
|
||||||
|
};
|
||||||
|
|
||||||
private static FormattedValue SuperMario3DWorldOrBowsersFury(SingleValue value)
|
private static FormattedValue SuperMario3DWorldOrBowsersFury(SingleValue value)
|
||||||
=> value.Matched.BoxedValue is 0 ? "Playing Super Mario 3D World" : "Playing Bowser's Fury";
|
=> value.Matched.BoxedValue is 0 ? "Playing Super Mario 3D World" : "Playing Bowser's Fury";
|
||||||
|
|
||||||
|
private static FormattedValue SuperMarioWonder(SingleValue value)
|
||||||
|
{
|
||||||
|
// TODO: Needs updated for course names.
|
||||||
|
MessagePackObject messagePackObject = value.Matched.PackedValue;
|
||||||
|
MessagePackObjectDictionary messagePackObjectDictionary = messagePackObject.AsDictionary();
|
||||||
|
|
||||||
|
int worldNumber = messagePackObjectDictionary["world_no"].AsInt32();
|
||||||
|
int courseNumber = 0;
|
||||||
|
|
||||||
|
if (messagePackObjectDictionary.TryGetValue("course_no", out MessagePackObject courseNumberVariable))
|
||||||
|
{
|
||||||
|
courseNumber = courseNumberVariable.AsInt32();
|
||||||
|
}
|
||||||
|
|
||||||
|
FormattedValue world = worldNumber switch
|
||||||
|
{
|
||||||
|
1 => "Pipe-Rock Plateau",
|
||||||
|
2 => "Petal Isles",
|
||||||
|
3 => "Fluff-Puff Peaks",
|
||||||
|
4 => "Shining Falls",
|
||||||
|
5 => "Sunbaked Desert",
|
||||||
|
6 => "Fungi Mines",
|
||||||
|
7 => "Deep Magma Bog",
|
||||||
|
9 => "Special World",
|
||||||
|
_ => FormattedValue.ForceReset
|
||||||
|
};
|
||||||
|
|
||||||
|
if (courseNumber == 0)
|
||||||
|
{
|
||||||
|
return FormattedValue.ForceReset;
|
||||||
|
}
|
||||||
|
|
||||||
|
return world.Reset
|
||||||
|
? FormattedValue.ForceReset
|
||||||
|
: $"{world}: {worldNumber}-{courseNumber}";
|
||||||
|
}
|
||||||
|
|
||||||
private static FormattedValue MarioKart8Deluxe_Mode(SingleValue value)
|
private static FormattedValue MarioKart8Deluxe_Mode(SingleValue value)
|
||||||
=> value.Matched.StringValue switch
|
=> value.Matched.StringValue switch
|
||||||
{
|
{
|
||||||
// Single Player
|
// Single Player
|
||||||
"Single" => "Single Player",
|
"Single" => "Single Player",
|
||||||
// Multiplayer
|
// Multiplayer
|
||||||
"Multi-2players" => "Multiplayer 2 Players",
|
"Multi-2players" => "Multiplayer: 2 Players",
|
||||||
"Multi-3players" => "Multiplayer 3 Players",
|
"Multi-3players" => "Multiplayer: 3 Players",
|
||||||
"Multi-4players" => "Multiplayer 4 Players",
|
"Multi-4players" => "Multiplayer: 4 Players",
|
||||||
// Wireless/LAN Play
|
// Wireless/LAN Play
|
||||||
"Local-Single" => "Wireless/LAN Play",
|
"Local-Single" => "Wireless/LAN Play",
|
||||||
"Local-2players" => "Wireless/LAN Play 2 Players",
|
"Local-2players" => "Wireless/LAN Play 2 Players",
|
||||||
@@ -62,8 +421,9 @@ namespace Ryujinx.Ava.Systems.PlayReport
|
|||||||
|
|
||||||
private static FormattedValue PokemonSV(MultiValue values)
|
private static FormattedValue PokemonSV(MultiValue values)
|
||||||
{
|
{
|
||||||
|
string region = PokemonSV_Region(values.Matched[1].ToString());
|
||||||
string playStatus = values.Matched[0].BoxedValue is 0 ? "Playing Alone" : "Playing in a group";
|
string union = values.Matched[0].BoxedValue is 0 ? "" : " with friends";
|
||||||
|
string academyName = PokemonSV_AcademyName(values.Application.Title);
|
||||||
|
|
||||||
FormattedValue locations = values.Matched[1].ToString() switch
|
FormattedValue locations = values.Matched[1].ToString() switch
|
||||||
{
|
{
|
||||||
@@ -89,18 +449,86 @@ namespace Ryujinx.Ava.Systems.PlayReport
|
|||||||
"a_w20" => "North Area Three",
|
"a_w20" => "North Area Three",
|
||||||
"a_w21" => "North Area One",
|
"a_w21" => "North Area One",
|
||||||
"a_w22" => "North Area Two",
|
"a_w22" => "North Area Two",
|
||||||
"a_w23" => "The Great Crater of Paldea",
|
"a_w23" => "Area Zero: The Great Crater of Paldea",
|
||||||
"a_w24" => "South Paldean Sea",
|
"a_w24" => "South Paldean Sea",
|
||||||
"a_w25" => "West Paldean Sea",
|
"a_w25" => "West Paldean Sea",
|
||||||
"a_w26" => "East Paldean Sea",
|
"a_w26" => "East Paldean Sea",
|
||||||
"a_w27" => "North Paldean Sea",
|
"a_w27" => "North Paldean Sea",
|
||||||
//TODO DLC Locations
|
// Naranja / Uva Academy
|
||||||
|
"a_sch_entrance01" => $"{academyName} Academy: Entrance",
|
||||||
|
"a_sch_cafe01" => $"{academyName} Academy: Cafeteria",
|
||||||
|
"a_sch_shop01" => $"{academyName} Academy: School Store",
|
||||||
|
"a_sch_room01" => $"{academyName} Academy: Home Ec Room",
|
||||||
|
"a_sch_room02" => $"{academyName} Academy: Art Room",
|
||||||
|
"a_sch_room03" => $"{academyName} Academy: Biology Lab",
|
||||||
|
"a_sch_room04" => $"{academyName} Academy: Staff Room",
|
||||||
|
"a_sch_office01" => $"{academyName} Academy: Director's Office",
|
||||||
|
"a_sch_office03" => $"{academyName} Academy: Nurse's Office",
|
||||||
|
"a_sch_ground01" => $"{academyName} Academy: School Yard",
|
||||||
|
"a_sch_class1a" => $"{academyName} Academy: Classroom 1-A",
|
||||||
|
"a_sch_class1d" => $"{academyName} Academy: Classroom 1-D",
|
||||||
|
"a_sch_class2g" => $"{academyName} Academy: Classroom 2-G",
|
||||||
|
"a_sch_dorm01" => $"{academyName} Academy: Dorm Room (Trainer)",
|
||||||
|
"a_sch_dorm02" => $"{academyName} Academy: Dorm Room (Nemona)",
|
||||||
|
"a_sch_dorm03" => $"{academyName} Academy: Dorm Room (Arven)",
|
||||||
|
"a_sch_dorm04" => $"{academyName} Academy: Dorm Room (Penny)",
|
||||||
|
// DLC
|
||||||
|
// Kitakami
|
||||||
|
"a_su0101" => "Mossui Town",
|
||||||
|
"a_su0102" => "Loyalty Plaza",
|
||||||
|
"a_su0103" => "Kitakami Hall",
|
||||||
|
"a_su0104" => "Oni Mountain",
|
||||||
|
"a_su0105" => "Infernal Pass",
|
||||||
|
"a_su0106" => "Crystal Pool",
|
||||||
|
"a_su0107" => "Wistful Fields",
|
||||||
|
"a_su0108" => "Mossfell Confluence",
|
||||||
|
"a_su0109" => "Fellhorn Gorge",
|
||||||
|
"a_su0110" => "Paradise Barrens",
|
||||||
|
"a_su0111" => "Timeless Woods",
|
||||||
|
// Blueberry Academy: School
|
||||||
|
"a_sch_2_entrance0" => "Blueberry Academy: Entrance",
|
||||||
|
"a_sch_2_clubroom" => "Blueberry Academy: League Clubroom",
|
||||||
|
"a_sch_2_class1" => "Blueberry Academy: Classroom 1-4",
|
||||||
|
"a_sch_2_class2" => "Blueberry Academy: Classroom 3-2",
|
||||||
|
"a_sch_2_shop01" => "Blueberry Academy: School Store",
|
||||||
|
"a_sch_2_cafe01" => "Blueberry Academy: Cafeteria",
|
||||||
|
"a_sch_2_dorm01" => "Blueberry Academy: Dorm Room (Trainer)",
|
||||||
|
"a_sch_2_dorm02" => "Blueberry Academy: Dorm Room (Carmine)",
|
||||||
|
// Blueberry Academy: Terrarium
|
||||||
|
"a_su0201" => "Savanna Biome",
|
||||||
|
"a_su0202" => "Coastal Biome",
|
||||||
|
"a_su0203" => "Canyon Biome",
|
||||||
|
"a_su0204" => "Polar Biome",
|
||||||
_ => FormattedValue.ForceReset
|
_ => FormattedValue.ForceReset
|
||||||
};
|
};
|
||||||
|
|
||||||
return locations.Reset
|
return locations.Reset
|
||||||
? FormattedValue.ForceReset
|
? FormattedValue.ForceReset
|
||||||
: $"{playStatus} in {locations}";
|
: $"Exploring {region}{union} | {locations}";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string PokemonSV_Region(string location)
|
||||||
|
{
|
||||||
|
if (location.Contains("a_su02") || location.Contains("a_sch_2")) return "Unova";
|
||||||
|
if (location.Contains("a_su01")) return "Kitakami";
|
||||||
|
return "Paldea";
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string PokemonSV_AcademyName(string title)
|
||||||
|
{
|
||||||
|
// TODO: Is this even necessary?
|
||||||
|
if (
|
||||||
|
title.Contains("Scarlet")
|
||||||
|
|| title.Contains("Escarlata")
|
||||||
|
|| title.Contains("Écarlate")
|
||||||
|
|| title.Contains("Karmesin")
|
||||||
|
|| title.Contains("Scarlatto")
|
||||||
|
|| title.Contains("スカーレット")
|
||||||
|
|| title.Contains("스칼렛")
|
||||||
|
|| title.Contains("朱")
|
||||||
|
|
||||||
|
) { return "Naranja"; }
|
||||||
|
return "Uva";
|
||||||
}
|
}
|
||||||
|
|
||||||
private static FormattedValue SuperSmashBrosUltimate_Mode(SparseMultiValue values)
|
private static FormattedValue SuperSmashBrosUltimate_Mode(SparseMultiValue values)
|
||||||
@@ -641,5 +1069,7 @@ namespace Ryujinx.Ava.Systems.PlayReport
|
|||||||
|
|
||||||
_ => FormattedValue.ForceReset
|
_ => FormattedValue.ForceReset
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace Ryujinx.Ava.Systems.PlayReport
|
|||||||
|
|
||||||
private static readonly Lazy<Analyzer> _analyzerLazy = new(() => new Analyzer()
|
private static readonly Lazy<Analyzer> _analyzerLazy = new(() => new Analyzer()
|
||||||
.AddSpec(
|
.AddSpec(
|
||||||
"01007ef00011e000",
|
"01007ef00011e000", // Breath of the Wild
|
||||||
spec => spec
|
spec => spec
|
||||||
.WithDescription("based on being in Master Mode.")
|
.WithDescription("based on being in Master Mode.")
|
||||||
.AddValueFormatter("IsHardMode", BreathOfTheWild_MasterMode)
|
.AddValueFormatter("IsHardMode", BreathOfTheWild_MasterMode)
|
||||||
@@ -22,48 +22,74 @@ namespace Ryujinx.Ava.Systems.PlayReport
|
|||||||
.AddValueFormatter("AoCVer", FormattedValue.SingleAlwaysResets)
|
.AddValueFormatter("AoCVer", FormattedValue.SingleAlwaysResets)
|
||||||
)
|
)
|
||||||
.AddSpec(
|
.AddSpec(
|
||||||
"0100f2c0115b6000",
|
"0100f2c0115b6000", // Tears of the Kingdom
|
||||||
spec => spec
|
spec => spec
|
||||||
.WithDescription("based on where you are in Hyrule (Depths, Surface, Sky).")
|
.WithDescription("based on where you are in Hyrule (Depths, Surface, Sky).")
|
||||||
.AddValueFormatter("PlayerPosY", TearsOfTheKingdom_CurrentField))
|
.AddValueFormatter("PlayerPosY", TearsOfTheKingdom_CurrentField))
|
||||||
.AddSpec(
|
.AddSpec(
|
||||||
"01002da013484000",
|
"01002da013484000", // Skyward Sword
|
||||||
spec => spec
|
spec => spec
|
||||||
.WithDescription("based on how many Rupees you have.")
|
.WithDescription("based on how many Rupees you have.")
|
||||||
.AddValueFormatter("rupees", SkywardSwordHD_Rupees))
|
.AddValueFormatter("rupees", SkywardSwordHD_Rupees))
|
||||||
|
|
||||||
.AddSpec(
|
.AddSpec(
|
||||||
"0100000000010000",
|
"01008cf01baac000", // Echoes of Wisdom
|
||||||
spec => spec
|
spec => spec
|
||||||
.WithDescription("based on if you're playing with Assist Mode.")
|
.WithDescription("based on where you've warped.")
|
||||||
.AddValueFormatter("is_kids_mode", SuperMarioOdyssey_AssistMode)
|
.AddValueFormatter("dest_index", EchoesOfWisdom_Warp)
|
||||||
|
)
|
||||||
|
|
||||||
|
.AddSpec(
|
||||||
|
"010049900f546000", // Super Mario 3D All Stars
|
||||||
|
spec => spec
|
||||||
|
.WithDescription("based on what album and track you're listening to.")
|
||||||
|
.AddMultiValueFormatter(["app_id","song_id"], SuperMario3DAllStars_MainMenu)
|
||||||
)
|
)
|
||||||
.AddSpec(
|
.AddSpec(
|
||||||
"010075000ecbe000",
|
["010049900f546001", "010049900f546002", "010049900F546003"], // Super Mario 3D All Stars
|
||||||
spec => spec
|
spec => spec
|
||||||
.WithDescription("based on if you're playing with Assist Mode.")
|
.WithDescription("based on which game you've selected to play in the collection.")
|
||||||
.AddValueFormatter("is_kids_mode", SuperMarioOdysseyChina_AssistMode)
|
.AddValueFormatter("program_id", SuperMario3DAllStars)
|
||||||
)
|
)
|
||||||
.AddSpec(
|
.AddSpec(
|
||||||
"010028600ebda000",
|
"0100000000010000", // Super Mario Odyssey
|
||||||
|
spec => spec
|
||||||
|
.WithDescription("based on what kingdom you're in.")
|
||||||
|
.AddValueFormatter("stage_name", SuperMarioOdyssey)
|
||||||
|
)
|
||||||
|
.AddSpec(
|
||||||
|
"010028600ebda000", // Super Mario 3D World + Bowser's Fury
|
||||||
spec => spec
|
spec => spec
|
||||||
.WithDescription("based on being in either Super Mario 3D World or Bowser's Fury.")
|
.WithDescription("based on being in either Super Mario 3D World or Bowser's Fury.")
|
||||||
.AddValueFormatter("mode", SuperMario3DWorldOrBowsersFury)
|
.AddValueFormatter("mode", SuperMario3DWorldOrBowsersFury)
|
||||||
)
|
)
|
||||||
|
.AddSpec(
|
||||||
|
["010049900f546000", "010049900f546001", "010049900f546002", "010049900F546003"],
|
||||||
|
spec => spec
|
||||||
|
.WithDescription("based on which game you've selected to play in the collection.")
|
||||||
|
.AddValueFormatter("program_id", SuperMario3DAllStars)
|
||||||
|
)
|
||||||
|
.AddSpec(
|
||||||
|
"010015100b514000", // Super Mario Bros. Wonder
|
||||||
|
spec => spec
|
||||||
|
.WithDescription("based on what world and course you're in.")
|
||||||
|
.AddValueFormatter("stage_info", SuperMarioWonder)
|
||||||
|
)
|
||||||
.AddSpec( // Global & China IDs
|
.AddSpec( // Global & China IDs
|
||||||
["0100152000022000", "010075100e8ec000"],
|
["0100152000022000", "010075100e8ec000"], // Mario Kart 8 Deluxe
|
||||||
spec => spec
|
spec => spec
|
||||||
.WithDescription(
|
.WithDescription(
|
||||||
"based on what modes you're selecting in the menu & whether or not you're in a race.")
|
"based on what modes you're selecting in the menu & whether or not you're in a race.")
|
||||||
.AddValueFormatter("To", MarioKart8Deluxe_Mode)
|
.AddValueFormatter("To", MarioKart8Deluxe_Mode)
|
||||||
)
|
)
|
||||||
.AddSpec(
|
.AddSpec(
|
||||||
["0100a3d008c5c000", "01008f6008c5e000"],
|
["0100a3d008c5c000", "01008f6008c5e000"], // Pokemon Scarlet/Violet
|
||||||
spec => spec
|
spec => spec
|
||||||
.WithDescription("based on if you're playing alone or in a group and what area of Paldea you're exploring.")
|
.WithDescription("based on if you're playing alone or in a group and what area of Paldea you're exploring.")
|
||||||
.AddMultiValueFormatter(["team_circle", "area_no"], PokemonSV)
|
.AddMultiValueFormatter(["team_circle", "area_no"], PokemonSV)
|
||||||
)
|
)
|
||||||
.AddSpec(
|
.AddSpec(
|
||||||
"01006a800016e000",
|
"01006a800016e000", // Super Smash Bros. Ultimate
|
||||||
spec => spec
|
spec => spec
|
||||||
.WithDescription("based on what mode you're playing, who won, and what characters were present.")
|
.WithDescription("based on what mode you're playing, who won, and what characters were present.")
|
||||||
.AddSparseMultiValueFormatter(
|
.AddSparseMultiValueFormatter(
|
||||||
@@ -83,8 +109,10 @@ namespace Ryujinx.Ava.Systems.PlayReport
|
|||||||
)
|
)
|
||||||
.AddSpec(
|
.AddSpec(
|
||||||
[
|
[
|
||||||
"0100c9a00ece6000", "01008d300c50c000", "0100d870045b6000",
|
"0100B4E00444C000", "0100d870045b6000", "01008d300c50c000", "0100c62011050000", "010012f017576000",
|
||||||
"010012f017576000", "0100c62011050000", "0100b3c014bda000"
|
/*Famicom*/ /*NES*/ /*SNES*/ /*GBC*/ /*GBA*/
|
||||||
|
"0100b3c014bda000", "0100c9a00ece6000", "0100e0601c632000", "0100bfc01d976000"
|
||||||
|
/*SEGA Genesis*/ /*N64*/ /*N64 MATURE*/ /*Virtual Boy*/
|
||||||
],
|
],
|
||||||
spec => spec
|
spec => spec
|
||||||
.WithDescription(
|
.WithDescription(
|
||||||
|
|||||||
Reference in New Issue
Block a user