LOADING

加载过慢请开启缓存 浏览器默认开启

文章目录

某游戏从APP到运行

TODO

  • 添加非 unsegaREBORN 解包方式

事前准备

  • 一台功能完好的 Windows 电脑
  • 健全的大脑用于详细阅读教程
  • 解包工具 unsegaREBORN
  • ~250G 磁盘空间
  • 神秘app文件
  • git

app分类

app按名字对应了不同版本的游戏

  • SDEZ: maimai でらっくす (日服)
  • SDGB: 舞萌 DX (国服)
  • SDGA: maimai DX (国际服)

一些更新 app 需要依赖本体 app 才能获取内容,所以在开始前请确保 app 文件齐全。

出于法律角度考量,本站不会提供连接官服方法,只提供连接私服的方式。

看完了? 那就…
要开始了哟!

.APP 解包

vhd提取

[ ]作用

[ ]内的部分表示可选项,如果没有直接忽略即可。

首先创建一个文件夹用作解包和运行的文件夹(下文称为 /workdir ),将 .APP 文件以及 unsegaREBORN.exe 复制到其中。

在该目录下打开cmd/powershell,输入下面的命令后看见 Internal VHD extraction completed successfullyChild internal VHD identified, finalizing process. 即为解包完成。

unsegaREBORN.exe <appname0>.app [<appname1>.app]

现在你的文件目录应该是这样的:

workdir/
├──<appname0>/
│ ├── contents
│ └── internal_0.vhd
├── [<appname1>]/
│ └── [internal_1.vhd]
├── <appname0>.app
├── <appname0>.ntfs
├── [<appname1>.app]
├── [<appname1>.ntfs]
└── unsegaREBORN.exe

文件提取

首先在 /workdir下或其他地方新建一个文件夹(下称 /game)用于存放游戏文件。

  • 单 vhd
    <appname0>/contents下所有内容移动到 /game
没有 /contents ?

如果没有 /contents 文件夹出现,说明 .APP 并非本体app而是升级app,需自行寻找本体。

  • 多 vhd

    需要将子盘(internal_1.vhd)连接到父盘(internal_0.vhd)才能获取完整内容。

    1. 安装 Hyper-V

      1. 按 Win + R 输入:optionalfeatures 后回车。
      2. 在弹出的 Windows 功能 窗口里,找到 Hyper-V,确保下面两项都勾选:
        • Hyper-V 平台
        • Hyper-V 管理工具
      3. 安装完成后重启电脑。
    2. 链接vhd

      1. 按 Win + R 输入:virtmgmt.msc 后回车。
      2. 在右侧的 操作(Actions) 面板中,点击 编辑磁盘(Edit Disk…)
        编辑磁盘...
      3. 在弹出的向导中,选择 internal_1.vhd (注意是子盘)。
      4. 选择重新连接父盘 internal_0.vhd
    3. 提取内容

      双击打开 internal_1.vhd 会出现一个新磁盘,将其中的文件全部拷贝到 /game 下。

运行游戏

Segatools

显然我们并没有官机硬件,因此需要 Segatools 来提供硬件模拟和游戏加载器。请自行下载 segatools.zip 并解压,只需保留 mai2.zip,将 mai2.zip 解压并移动所得文件到 /game/Package 下。

amdaemon 脱壳

大部分 SEGA 系游戏启动时必须经过 amdaemon.exe,但 amdaemon.exe 带有的壳会阻止 Segatools 调用它,所以必须先把 amdaemon.exe 脱壳。

  1. /workdir 打开 cmd/powershell, 输入
git clone https://gitdab.com/SEGA/sega.git
  1. 复制 /game/amdaemon.exe/workdir/sega/tools/Crackproof/DecryptCrackproofExe64 下。
  2. 接着输入
cd ./sega/tools/Crackproof/DecryptCrackproofExe64
DecryptCrackproofExe64.exe amdaemon.exe

出现 Write to .\amdaemon.unpack.exe 即为脱壳成功 4. 脱壳后的程序为 /workdir/sega/tools/Crackproof/DecryptCrackproofExe64/amdaemon.unpack.exe,复制其到 /game/Package,删除原 amdaemon.exe,将复制过去的 amdaemon.unpack.exe 重命名为 amdaemon.exe

odd.sys

目前还有一些文件有壳,但是不需要脱出,可以使用 odd.sys 作辅助解密的内核模块。脱壳其他文件非常麻烦且没有必要,带壳运行显然更为高效。

解压得到 odd.sys 后,放入 /game/Package 下即可。稍后的启动脚本里会包含 odd.sys 的安装与卸载。

MelonLoader & AquaMai

原生的游戏程序需要打 Mod 才能实现在普通电脑上运行以及连接私服等操作,而 MelonLoader 正是 Unity 游戏的 Mod 加载器。

AquaMai 是开源 Mod,它不仅实现了游戏启动所需要的修补还提供了很多有用的功能。

以前的方式是手动安装这两项,但是我们有最新最热的 MaiChartManager 可以一键安装上述这两项。只需打开 Microsoft Store 搜索即可安装。

安装后打开,启动界面如图所示

MCM 启动

按如下操作安装 MelonLoader 和 Aquamai:

  1. 点击 选择游戏目录,选择 /game/Package 后点击启动,会弹出提示(见图)。
    未安装 MelonLoader & Aquamai
  2. 关掉提示,点击 Mod 管理,直接点击安装 MelonLoader 和 Aquamai 即可。
  3. 关闭窗口重启 MaiChartManager,观察到 A000 加载出曲目即为成功安装。
  4. (可选) 点击 资源目录管理 --> 导入,选择解压出的更新包文件夹添加更新包

启动脚本

/game/Package 文件夹下新建 start.bat,右键修改,将下方启动脚本填入并保存:

start.bat
@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
chcp 936 > nul
setlocal EnableDelayedExpansion
cd /d "%~dp0"

echo [INFO] 正在启动。

sc query odd > nul
if !errorlevel! == 1060 (
    echo [INFO] odd.sys 未安装,正在进行安装...
    copy "%~dp0\odd.sys" "%SystemRoot%\System32\drivers\odd.sys" > nul
    sc create odd binPath=System32\drivers\odd.sys type=kernel > nul
    if !errorlevel! == 0 (
        echo [INFO] odd.sys 安装成功。
    ) else (
        echo [ERROR] odd.sys 安装失败,请检查权限或手动安装。
        echo [ERROR] 游戏将无法正常运行。
        pause
        exit /b 1
    )
)

echo [INFO] odd.sys 已安装,正在尝试启动。
sc start odd > nul
set result=!errorlevel!
if !result! == 1056 (
    echo [INFO] odd.sys 服务已经启动。
) else (
    if !result! == 0 (
        echo [INFO] odd.sys 服务启动成功。
    ) else (
        echo [ERROR] odd.sys 服务启动失败,请检查权限或手动启动。
        echo [ERROR] 游戏将无法正常运行。
        pause
        exit /b 1
    )
)

echo [INFO] 正在启动 amdaemon.exe。
start /min inject -d -k mai2hook.dll amdaemon.exe -f -c config_common.json config_server.json config_client.json

echo [INFO] 游戏进程已启动。
Sinmai.exe -silent-crashes

echo [INFO] 正在关闭 amdaemon.exe。
taskkill /f /im amdaemon.exe > nul

echo [INFO] 正在关闭 odd.sys 服务。
sc stop odd > nul
sc delete odd > nul
del "%SystemRoot%\System32\drivers\odd.sys" > nul
set result=!errorlevel!
if !result! == 0 (
    echo [INFO] odd.sys 服务已停止。
) else (
    echo [ERROR] odd.sys 服务停止失败,请手动停止服务。
)

echo [INFO] 进程已结束。
pause
exit /b 0

双击 start.bat ,若看见 Sinmai 的窗口弹出,则已完成。
黑屏?

运行配置

ICF

游戏需要一个 ICF 文件用于查找每次更新包的信息。通常完整的理科里会含有一个 icf 文件,只需稍作修改便可以正常使用:

  1. 下载 icf-reader

  2. /game/Package 下创建文件夹 /amfs/option/appdata,将 .icf 文件重命名为 ICF1 (没有后缀)后,和 icf-reader 一起复制到 /game/Package/amfs

  3. /game/Package/amfs 下打开 cmd/powershell,输入:

icf-reader.exe decode ICF1 ICF.json

得到 json 格式的 ICF 数据。

  1. 打开 ICF.json 编辑,按照获取的更新包依次填入:
    1. "type": "Option",
      通常是Option,无需修改。
    2. option_id: K114,
      按照获取的更新包名称填入,更新包名称格式为首项为大写字符,后三位为数字。
    3. datetime: 2114-05-14T19:19:10,
      更新包时间。
    4. is_prerelease: false
      一般为 false

完成后保存

  1. 生成新的 ICF1:
icf-reader.exe encode ICF.json ICF1

segatools.ini

SEGATOOLS 详细配置

本站只提供运行必须的参数和解释, 如果需要更多参数以及详细解释请参考此处

[aime]
enable=1
AimeGen=1

;如果使用MuNet私服
[DNS]
default=play.mumur.net
aimedb=aime.mumur.net

[KeyChip]
; 请一定要填写这个
; 获取方式 https://portal.mumur.net
Enable=1
ID=AXXX-XXXXXXXXXXX
; 请按获取的app填写
GameID=SXXX

; 以下配置一般不需要手动修改
[vfs]
amfs=amfs
option=option
appdata=appdata

[netenv]
enable=1

[io4]
enable=1
test=0x38
service=0x39
coin=0x30

[button]
enable=1

[gpio]
dipsw1=1

mai2.ini

这是用于指定 segatools 模拟硬件的配置文件。在 /game/Package 下新建该文件,复制下方填入保存即可。

[AM]
Target = 0
DummyLED = 1
DummyChime = 1
DummyTouchPanel = 1
IgnoreError = 1
DummyCodeCamera=1
DummyPhotoCamera=1

QrCameraId=0

[Sound]
Sound8Ch=0

[Debug]
Debug=1
AllOpen=0
AllChara=0
AllCollection=0
MaxTrack=0
SinglePlayerType=1

Aquamai.toml

这是用于控制 Aquamai 的配置文件,原本需要自行修改,但是现在可以通过 MaiChartManager 操作。

如果上方操作无误,那么此时点击 Mod 管理 即可看见所有的可选项。

常见问题

引用了不可读内存

舞萌对输出音频格式最高支持到 32bit, 192kHz,高于这个解析度的输出设置会导致游戏直接崩溃。