-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathfrmRyujinxConfig.frm
executable file
·484 lines (464 loc) · 17.7 KB
/
frmRyujinxConfig.frm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
VERSION 5.00
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Begin VB.Form frmRyujinxConfig
BackColor = &H80000005&
BorderStyle = 1 'Fixed Single
Caption = "frmYuzuConfig"
ClientHeight = 4920
ClientLeft = 5625
ClientTop = 3120
ClientWidth = 6540
BeginProperty Font
Name = "微软雅黑 Light"
Size = 12
Charset = 134
Weight = 290
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Icon = "frmRyujinxConfig.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 4920
ScaleWidth = 6540
Begin VB.CommandButton btnBrowse
Caption = "浏览"
Height = 375
Left = 5400
TabIndex = 11
Top = 3240
Width = 975
End
Begin VB.TextBox txtDataFolder
BeginProperty Font
Name = "微软雅黑 Light"
Size = 10.5
Charset = 134
Weight = 290
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 435
IMEMode = 3 'DISABLE
Left = 120
TabIndex = 10
Text = "<请点击“浏览”>"
Top = 3240
Width = 5175
End
Begin VB.CheckBox Checks
BackColor = &H80000005&
Caption = "否"
Height = 420
Index = 0
Left = 2520
TabIndex = 8
Top = 2760
Width = 735
End
Begin VB.ComboBox cbFirmware
BeginProperty Font
Name = "微软雅黑 Light"
Size = 10.5
Charset = 134
Weight = 290
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 420
Left = 1560
TabIndex = 7
Text = "Combo1"
Top = 1680
Width = 2295
End
Begin VB.CommandButton btnSave
Caption = "保存"
Height = 495
Left = 3240
TabIndex = 5
Top = 4200
Width = 1455
End
Begin VB.CommandButton btnCancel
Caption = "取消"
Height = 495
Left = 4920
TabIndex = 4
Top = 4200
Width = 1455
End
Begin VB.TextBox txtVersion
BeginProperty Font
Name = "微软雅黑 Light"
Size = 10.5
Charset = 134
Weight = 290
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 435
IMEMode = 3 'DISABLE
Left = 4080
TabIndex = 3
Text = "加载中 ..."
Top = 960
Width = 1695
End
Begin MSComctlLib.ImageCombo ImageCombo1
Height = 435
Left = 1560
TabIndex = 2
Top = 960
Width = 2295
_ExtentX = 4048
_ExtentY = 767
_Version = 393216
ForeColor = -2147483640
BackColor = -2147483643
BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "微软雅黑 Light"
Size = 10.5
Charset = 134
Weight = 290
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Text = "ImageCombo1"
ImageList = "ImageList1"
End
Begin MSComctlLib.ImageList ImageList1
Left = 1200
Top = 120
_ExtentX = 1005
_ExtentY = 1005
BackColor = -2147483643
ImageWidth = 16
ImageHeight = 16
MaskColor = 12632256
_Version = 393216
BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628}
NumListImages = 2
BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmRyujinxConfig.frx":54AA
Key = ""
EndProperty
BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmRyujinxConfig.frx":A964
Key = ""
EndProperty
EndProperty
End
Begin VB.Label Labels
BackStyle = 0 'Transparent
Caption = "自定义数据文件夹:"
Height = 495
Index = 3
Left = 120
TabIndex = 9
Top = 2760
Width = 2415
End
Begin VB.Image Image1
Height = 735
Left = 5640
Stretch = -1 'True
Top = 120
Width = 735
End
Begin VB.Label Labels
BackStyle = 0 'Transparent
Caption = "固件版本:"
Height = 495
Index = 2
Left = 120
TabIndex = 6
Top = 1680
Width = 1695
End
Begin VB.Label Labels
BackStyle = 0 'Transparent
Caption = "模拟器版本:"
Height = 495
Index = 1
Left = 120
TabIndex = 1
Top = 960
Width = 1695
End
Begin VB.Label Labels
BackStyle = 0 'Transparent
Caption = "Label1"
Height = 735
Index = 0
Left = 120
TabIndex = 0
Top = 120
Width = 6255
End
End
Attribute VB_Name = "frmRyujinxConfig"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Public IsMissing As Boolean, RyujinxPreDataFolder As String
Attribute RyujinxPreDataFolder.VB_VarUserMemId = 1073938432
Private Sub btnBrowse_Click()
txtDataFolder.Text = ChooseDir("自定义数据文件夹", Me)
If txtDataFolder.Text = RyujinxInstallFolder & "\portable" Then
txtDataFolder.Text = "<请点击“浏览”>"
btnBrowse.Visible = False
txtDataFolder.Visible = False
Checks(0).Value = 0
MsgBox "自定义数据文件夹不能和默认数据文件夹一样!", vbOKOnly + vbExclamation, "错误"
End If
End Sub
Private Sub btnCancel_Click()
If IsMissing Then
Unload frmManage
frmMain.Show
Else
frmManage.Show
End If
Unload Me
End Sub
Private Sub btnSave_Click()
'保存设置
If cbFirmware.Text <> "加载中 ..." Then
Select Case ImageCombo1.SelectedItem.key
Case "Mainline"
RyujinxBranch = "主线版"
Case "LDN"
RyujinxBranch = "LDN联机版"
Case "Ava"
RyujinxBranch = "Ava版"
End Select
RyujinxVersion = txtVersion.Text
RyujinxFirmware = cbFirmware.Text
WriteIni "Ryujinx", "Version", RyujinxVersion, RyujinxInstallFolder & "\RyujinxConfig.ini"
WriteIni "Ryujinx", "Branch", RyujinxBranch, RyujinxInstallFolder & "\RyujinxConfig.ini"
WriteIni "Ryujinx", "Firmware", RyujinxFirmware, RyujinxInstallFolder & "\RyujinxConfig.ini"
If IsMissing = False Then
If Checks(0).Value = 0 Then
RyujinxCustomDataFolder = "False"
Else
If txtDataFolder.Text = "<请点击“浏览”>" Then
RyujinxCustomDataFolder = "False"
Else
RyujinxCustomDataFolder = txtDataFolder.Text
End If
End If
If RyujinxCustomDataFolder = RyujinxInstallFolder & "\portable" Then RyujinxCustomDataFolder = "False"
MoveRyujinxDataFolder
WriteIni "Ryujinx", "CustomDataFolder", RyujinxCustomDataFolder, RyujinxInstallFolder & "\RyujinxConfig.ini"
Else
RyujinxCustomDataFolder = "False"
WriteIni "Ryujinx", "CustomDataFolder", RyujinxCustomDataFolder, RyujinxInstallFolder & "\RyujinxConfig.ini"
End If
If IsMissing Then
Unload frmManage
frmMain.Show
Else
frmManage.Show
End If
'迁移数据相关
Dim fso As Object
If Dir$(Environ("AppData") & "\Ryujinx", vbDirectory) <> "" Then
'appdata存在
If Dir$(RyujinxInstallFolder & "\portable", vbDirectory) <> "" Then
Else
'user不存在
Set fso = CreateObject("Scripting.FileSystemObject") '创建FSO
Set folder = fso.GetFolder(Environ("AppData") & "\Ryujinx")
folder.Move RyujinxInstallFolder & "\portable"
Set folder = Nothing
Set fso = Nothing
MsgBox "之前的模拟器数据存放在 C 盘,已经自动迁移到模拟器文件夹。", vbOKOnly + vbInformation, "提示"
End If
End If
Unload Me
End If
End Sub
Private Sub Checks_Click(Index As Integer)
'选框
If Checks(Index).Value = 1 Then
Checks(Index).Caption = "是"
If Index = 0 Then btnBrowse.Visible = True: txtDataFolder.Visible = True
Else
Checks(Index).Caption = "否"
If Index = 0 Then btnBrowse.Visible = False: txtDataFolder.Visible = False
End If
End Sub
Private Sub Form_Activate()
'加载设置和界面
Debug.Print RyujinxCustomDataFolder
If RyujinxCustomDataFolder = RyujinxInstallFolder & "\portable" Then
RyujinxCustomDataFolder = "False"
WriteIni "Ryujinx", "CustomDataFolder", RyujinxCustomDataFolder, RyujinxInstallFolder & "\RyujinxConfig.ini"
End If
If RyujinxCustomDataFolder = "False" Then
Checks(0).Value = 0
Checks(0).Caption = "否"
btnBrowse.Visible = False
txtDataFolder.Visible = False
Else
Checks(0).Value = 1
Checks(0).Caption = "是"
btnBrowse.Visible = True
txtDataFolder.Visible = True
txtDataFolder.Text = RyujinxCustomDataFolder
End If
If Left(RyujinxBranch, 3) = "LDN" Then
Image1.Picture = frmRyujinxInstaller.ImageList2.ListImages(2).Picture
Else
Image1.Picture = frmRyujinxInstaller.ImageList2.ListImages(1).Picture
End If
'Unload frmRyujinxInstaller
RyujinxPreDataFolder = RyujinxCustomDataFolder
Me.Caption = "Ryujinx 模拟器相关设置"
If IsMissing Then
'没有RyujinxConfig.ini
Labels(0).Caption = "该模拟器不是用本工具安装的," & vbCrLf & "请先完善它的版本信息。"
Labels(3).Visible = False
Checks(0).Visible = False
txtDataFolder.Visible = False
btnBrowse.Visible = fase
btnSave.Top = 2520
btnCancel.Top = 2520
Me.Height = 3650
frmManage.Hide
frmRyujinxConfig.SetFocus
Else
Labels(0).Caption = "Ryujinx 版本信息设置" & vbCrLf & "如果你手动更新了模拟器,可以在此更改版本信息。"
btnSave.Top = 4200
btnCancel.Top = 4200
Me.Height = 5325
End If
ImageCombo1.ComboItems.Clear
ImageCombo1.ComboItems.Add 1, "Mainline", "主线版", 1
ImageCombo1.ComboItems.Add 2, "Ava", "Ava版", 1
ImageCombo1.ComboItems.Add 3, "LDN", "LDN联机版", 2
ImageCombo1.ComboItems(1).Selected = True
cbFirmware.Text = "加载中 ..."
DoEvents
WindowList = ""
Shell RyujinxInstallFolder & "\Ryujinx.exe"
Dim tmpRyujinxName As String
Do Until InStr(tmpRyujinxName, "Ryujinx Console") <> False
'遍历所有窗口句柄
Call EnumWindows(AddressOf EnumAllWindows, ByVal 0&)
tmpRyujinxName = Join(Filter(Split(WindowList, vbCrLf), "Ryujinx Console"), vbCrLf)
DoEvents
Sleep 100
Loop
Shell "cmd /c taskkill /f /im Ryujinx.exe"
tmpRyujinxName = Replace(tmpRyujinxName, "Ryujinx Console ", "")
If InStr(tmpRyujinxName, "ldn") Then
ImageCombo1.ComboItems(3).Selected = True
txtVersion.Text = tmpRyujinxName
Else
ImageCombo1.ComboItems(1).Selected = True
txtVersion.Text = tmpRyujinxName
End If
txtVersion.SetFocus
Dim FirmwareVersionArr() As String
FirmwareVersionArr = Split(Replace(Replace(Join(Filter(Split(Replace(Replace(GetData(CloudflareReverseProxyUrl & "/https://archive.org/download/nintendo-switch-global-firmwares/nintendo-switch-global-firmwares_files.xml"), Chr(34), ""), " ", ""), vbLf), ".zip"), vbCrLf), "<filename=Firmware", ""), ".zipsource=original>", ""), vbCrLf)
Dim i As Integer
For i = 0 To (UBound(FirmwareVersionArr) - LBound(FirmwareVersionArr))
cbFirmware.AddItem FirmwareVersionArr(i)
Next
If IsMissing Then
cbFirmware.Text = "选择固件版本"
Else
cbFirmware.Text = RyujinxFirmware
End If
End Sub
Private Sub Form_Initialize()
InitCommonControls
End Sub
Private Sub ImageCombo1_Click()
ImageCombo1.Enabled = False
txtVersion.Text = "加载中 ..."
If ImageCombo1.SelectedItem.Index = 3 Then
Image1.Picture = frmRyujinxInstaller.ImageList2.ListImages(2).Picture
Dim Tmp() As String
Tmp = Split(GetRyujinxVersionAli("LDN"), vbCrLf)
txtVersion.Text = Tmp(UBound(Tmp))
Else
Image1.Picture = frmRyujinxInstaller.ImageList2.ListImages(1).Picture
txtVersion.Text = GetRyujinxVersion
End If
txtVersion.SetFocus
ImageCombo1.Enabled = True
End Sub
Private Sub txtVersion_KeyPress(KeyAscii As Integer)
'只能输入数字
If KeyAscii = 8 Or KeyAscii = 46 Then Exit Sub
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
Private Sub MoveRyujinxDataFolder()
On Error GoTo MoveFailed2
Dim fso As Object, folder As Object
'迁移 Ryujinx 数据文件夹
'RyujinxPreDataFolder 前数据文件夹
If RyujinxPreDataFolder = RyujinxCustomDataFolder Then Exit Sub
If RyujinxPreDataFolder = "False" Or RyujinxPreDataFolder = "<请点击“浏览”>" Then RyujinxPreDataFolder = RyujinxInstallFolder & "\portable"
If RyujinxCustomDataFolder = "False" Or RyujinxCustomDataFolder = "<请点击“浏览”>" Then RyujinxCustomDataFolder = RyujinxInstallFolder & "\portable"
If TestEmptyFolder(RyujinxCustomDataFolder) = False Then
MsgBox "新的数据文件夹为:" & RyujinxCustomDataFolder & vbCrLf & "这个文件夹非空,迁移失败!" & vbCrLf & "请清空该文件夹之后再试。", vbOKOnly + vbCritical, "错误"
GoTo MoveFailed
End If
If RyujinxCustomDataFolder <> RyujinxInstallFolder & "\portable" Then
'新文件夹空了,继续迁移
'移动内容
Set fso = CreateObject("Scripting.FileSystemObject") '创建FSO
Set folder = fso.GetFolder(RyujinxPreDataFolder)
RmDir RyujinxCustomDataFolder
folder.Move RyujinxCustomDataFolder
Set folder = Nothing
Set fso = Nothing
'创建符号链接
Shell "cmd /c mklink /d /j " & Chr(34) & RyujinxInstallFolder & "\portable" & Chr(34) & " " & Chr(34) & RyujinxCustomDataFolder & Chr(34)
Else
'迁移回 portable 文件夹
Shell "cmd /c rmdir " & Chr(34) & RyujinxInstallFolder & "\portable" & Chr(34) ' 删除旧的符号链接
'移动内容
Set fso = CreateObject("Scripting.FileSystemObject") '创建FSO
Set folder = fso.GetFolder(RyujinxPreDataFolder)
RmDir RyujinxInstallFolder & "\portable"
folder.Move RyujinxInstallFolder & "\portable"
Set folder = Nothing
Set fso = Nothing
End If
MsgBox "数据文件夹迁移成功!" & vbCrLf & vbCrLf & "从 " & RyujinxPreDataFolder & "," & vbCrLf & "迁移到了 " & RyujinxCustomDataFolder & "。", vbOKOnly + vbInformation, "提示"
Exit Sub
MoveFailed:
If RyujinxPreDataFolder = RyujinxInstallFolder & "\portable" Then RyujinxPreDataFolder = "False"
If RyujinxCustomDataFolder = RyujinxInstallFolder & "\portable" Then RyujinxCustomDataFolder = "False"
RyujinxCustomDataFolder = RyujinxPreDataFolder
WriteIni "Ryujinx", "CustomDataFolder", RyujinxCustomDataFolder, RyujinxInstallFolder & "\RyujinxConfig.ini"
Exit Sub
MoveFailed2:
MsgBox "迁移失败,发生了未知错误。" & vbCrLf & "运行时错误 " & CStr(Err.Number) & ":" & Err.Description, vbOKOnly + vbCritical, "错误"
If RyujinxPreDataFolder = RyujinxInstallFolder & "\portable" Then RyujinxPreDataFolder = "False"
If RyujinxCustomDataFolder = RyujinxInstallFolder & "\portable" Then RyujinxCustomDataFolder = "False"
RyujinxCustomDataFolder = RyujinxPreDataFolder
WriteIni "Ryujinx", "CustomDataFolder", RyujinxCustomDataFolder, RyujinxInstallFolder & "\RyujinxConfig.ini"
Exit Sub
End Sub
Private Function TestEmptyFolder(FolderName As String) As Boolean
On Error GoTo Err
RmDir (FolderName) '删除目录,如果出错表示不为空
MkDir (FolderName) '重新建目录
TestEmptyFolder = True
Exit Function
Err:
TestEmptyFolder = False
End Function