1
1
use skyline:: nn;
2
2
3
3
pub mod env {
4
- use once_cell:: sync:: Lazy ;
5
4
use semver:: Version ;
6
- use std:: str:: FromStr ;
5
+ use std:: { str:: FromStr , sync :: LazyLock } ;
7
6
8
7
use super :: * ;
9
8
@@ -13,7 +12,7 @@ pub mod env {
13
12
Emulator ,
14
13
}
15
14
16
- static PLATFORM : Lazy < RunEnvironment > = Lazy :: new ( || {
15
+ static PLATFORM : LazyLock < RunEnvironment > = LazyLock :: new ( || {
17
16
let base_addr = unsafe { skyline:: hooks:: getRegionAddress ( skyline:: hooks:: Region :: Text ) as u64 } ;
18
17
19
18
if base_addr == 0x8004000 || base_addr == 0x8504000 {
@@ -79,123 +78,3 @@ pub mod paths {
79
78
Utf8PathBuf :: from ( "sd:/ultimate/arcropolis/cache" ) . join ( get_game_version ( ) . to_string ( ) )
80
79
}
81
80
}
82
-
83
- pub mod save {
84
- use super :: * ;
85
- use smash_arc:: Region ;
86
- use std:: io:: { Read , Result , Seek , SeekFrom } ;
87
-
88
- #[ repr( u8 ) ]
89
- #[ derive( Debug ) ]
90
- pub enum SaveLanguageId {
91
- Japanese = 0 ,
92
- English ,
93
- French ,
94
- Spanish ,
95
- German ,
96
- Italian ,
97
- Dutch ,
98
- Russian ,
99
- Chinese ,
100
- Taiwanese ,
101
- Korean ,
102
- }
103
-
104
- impl From < u8 > for SaveLanguageId {
105
- fn from ( byte : u8 ) -> Self {
106
- match byte {
107
- 0 => Self :: Japanese ,
108
- 1 => Self :: English ,
109
- 2 => Self :: French ,
110
- 3 => Self :: Spanish ,
111
- 4 => Self :: German ,
112
- 5 => Self :: Italian ,
113
- 6 => Self :: Dutch ,
114
- 7 => Self :: Russian ,
115
- 8 => Self :: Chinese ,
116
- 9 => Self :: Taiwanese ,
117
- 10 => Self :: Korean ,
118
- _ => Self :: English ,
119
- }
120
- }
121
- }
122
-
123
- pub fn mount_save ( mount_path : & str ) {
124
- // TODO: Call nn::fs::CheckMountName
125
- // This provides a UserHandle and sets the User in a Open state to be used.
126
- let handle = nn:: account:: try_open_preselected_user ( ) . expect ( "OpenPreselectedUser should not return false" ) ;
127
- // Obtain the UID for this user
128
- let uid = nn:: account:: get_user_id ( & handle) . expect ( "GetUserId should return a valid Uid" ) ;
129
-
130
- unsafe { nn:: fs:: MountSaveData ( skyline:: c_str ( & format ! ( "{}\0 " , mount_path) ) , & uid) } ;
131
-
132
- // This closes the UserHandle, making it unusable, and sets the User in a Closed state.
133
- // Smash will crash if you don't do it.
134
- nn:: account:: close_user ( handle) ;
135
- }
136
-
137
- pub fn unmount_save ( mount_path : & str ) {
138
- // TODO: Call nn::fs::CheckMountName
139
- unsafe { nn:: fs:: Unmount ( skyline:: c_str ( & format ! ( "{}\0 " , mount_path) ) ) } ;
140
- }
141
-
142
- pub fn get_language_id_in_savedata ( ) -> Result < SaveLanguageId > {
143
- let mut file = std:: fs:: File :: open ( "save:/save_data/system_data.bin" ) ?;
144
- file. seek ( SeekFrom :: Start ( 0x3c6098 ) ) . unwrap ( ) ;
145
- let mut language_code = [ 0u8 ] ;
146
- file. read_exact ( & mut language_code) . unwrap ( ) ;
147
- drop ( file) ;
148
-
149
- Ok ( SaveLanguageId :: from ( language_code[ 0 ] ) )
150
- }
151
-
152
- // pub fn get_system_region_from_language_id(language: SaveLanguageId) -> Region {
153
- // let system_locale_id = unsafe { *(skyline::hooks::getRegionAddress(skyline::hooks::Region::Text) as *const u8).add(crate::offsets::system_locale_id()) };
154
-
155
- // // let system_region_map = unsafe {
156
- // // std::slice::from_raw_parts(
157
- // // (skyline::hooks::getRegionAddress(skyline::hooks::Region::Text) as *const u32).add(0x4740f90 / 4),
158
- // // 14,
159
- // // )
160
- // // };
161
-
162
- // let system_region_map: &[u32] = &[0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 4];
163
-
164
- // let system_region = system_region_map[system_locale_id as usize];
165
-
166
- // match language {
167
- // SaveLanguageId::Japanese => Region::Japanese,
168
- // SaveLanguageId::English => {
169
- // if system_region == 1 {
170
- // // US
171
- // Region::UsEnglish
172
- // } else {
173
- // Region::EuEnglish
174
- // }
175
- // },
176
- // SaveLanguageId::French => {
177
- // if system_region == 1 {
178
- // // US
179
- // Region::UsFrench
180
- // } else {
181
- // Region::EuFrench
182
- // }
183
- // },
184
- // SaveLanguageId::Spanish => {
185
- // if system_region == 1 {
186
- // // US
187
- // Region::UsSpanish
188
- // } else {
189
- // Region::EuSpanish
190
- // }
191
- // },
192
- // SaveLanguageId::German => Region::EuGerman,
193
- // SaveLanguageId::Dutch => Region::EuDutch,
194
- // SaveLanguageId::Italian => Region::EuItalian,
195
- // SaveLanguageId::Russian => Region::EuRussian,
196
- // SaveLanguageId::Chinese => Region::ChinaChinese,
197
- // SaveLanguageId::Taiwanese => Region::TaiwanChinese,
198
- // SaveLanguageId::Korean => Region::Korean,
199
- // }
200
- // }
201
- }
0 commit comments