数据上传失败?!MaiMai DX 的进阶配置

3994 字
20 分钟
数据上传失败?!MaiMai DX 的进阶配置

写在前面的#

仅作学习使用。

本教程将详细讲解各个关于配置及服务器连接相关的参数,再阅读本文前,请务必现先阅读《SDGB?!要开始了呦!》

如有任何问题请通过 QQ 联系作者。

segatools.ini 配置项详解#

此处各项配置均来自笔者阅读源码后整理所得,不保证完全正确,如有疑问请自行 clone segatools 官方仓库查阅源码。

写法与生效规则#

[配置节]
参数名=参数值
; 分号开头是注释
  • 开关写 0 / 1;键盘绑定写 Windows Virtual-Key Code。
  • 普通 INI 路径使用单个反斜杠,如 DEVICE\aime.txt。
  • 修改已有配置节和键,不要为每次修改重复添加同名节。
  • 默认读取工作目录的 segatools.ini;设置 SEGATOOLS_CONFIG_PATH 后以该文件为准。
  • 修改后退出游戏及相关 amdaemon,再通过启动脚本重启。
  • 下文“模板值”是随附 INI 的显式值;“缺省值”是省略键时的源码回退值,两者可能不同。
  • [aimeio] / [mai2io] 选择外部 DLL 后,内置卡号、键盘映射参数是否仍生效取决于该 DLL。

[vfs]:游戏数据路径#

参数模板值含义和写法
amfs空AMFS 元数据目录,通常含 ICF1 / ICF2。
option空更新内容根目录,下面应是 Axxx 子目录。
appdata空SEGA 的可写数据目录,可从空目录开始。

VFS 默认启用,amfs 和 appdata 不允许为空。

option= 留空在 Hook 中只产生警告;游戏版本本身仍可能依赖更新数据。

此处绝对路径相对路径皆可。

[aime]:读卡器模拟和虚拟卡#

参数模板值含义和写法
enable1启用 Aime 读卡器模拟;普通 PC 保持1。接入可直接供游戏使用的真实读卡器时才考虑 0
aimePathDEVICE\aime.txt内置 IO 从此文件读取 Aime 卡号,也可填绝对路径
scan0x0D刷卡键,默认 Enter;游戏要求刷卡时持续按住。

内置实现省略 aimeGen 时为 1,有效卡文件不存在时可在刷卡时生成 20 位数字卡号;DEVICE 应存在且可写。已有卡号文件应备份。

可选补充:

[aime]
aimeGen=1
felicaPath=DEVICE\felica.txt
felicaGen=0

这是添加到已有 [aime] 节的字段。FeliCa 文件为 16 个十六进制字符;其自动生成默认关闭。读取顺序为已有 Aime → 已有 FeliCa → 按开关生成卡号。

如果你采用的版本是 SDGB ,那么 aime 配置 enable 设置为 0 即可,别问我为什么,你要是能通过 aime 卡登录上 SDGB 请速速联系我,我 v 你个舞神(

[vfd]:机台文字显示屏#

enable=1 模拟 VFD GP1232A02A FUTABA 设备;0 关闭。它是机台文字显示设备,不是游戏主显示器。maimai 的 Hook 默认把 VFD 放在 COM2。

[dns]:网络服务目标#

default=127.0.0.1 是模板值,不能直接视作可用配置。

写服务端的实际主机名或 IP,例如 default=192.168.1.100;服务端在本机时也应使用可访问的局域网地址。该项只重定向网络服务目标,不会启动或实现服务端。

如果你要使用 WAHLAP PowerOn(华立开机认证),请将 default 设置为 ai.sys-allnet.cn 。

[netenv] 与 [keychip]:网络模拟和机台身份#

配置模板值含义和写法
[netenv] enable1向游戏提供模拟局域网环境;单机先保持模板值。关闭后要满足游戏对真实网络的要求
[netenv] addrSuffix11游戏所见虚拟机台 IP 的最后一段。例:addrSuffix=12
[keychip] idA69E-01A88888888模拟 keychip 序列号,按服务端分配填写;不是刷卡卡号
[keychip] region源码缺省1模拟 keychip 的区域标记,例如region=1 表示日本
[keychip] subnet192.168.172.0游戏预期机台网段,填点分 IPv4 网络地址,不加/24

模板说明:禁用 netenv 后,subnet 应匹配真实局域网,并使用游戏要求的 192.168.* 网段。

省略 [netenv] enable 时源码为 0;省略 [keychip] subnet 时为 192.168.100.0。因此不要随意删除模板字段。

keychip.id 是模拟加密狗的序列号,用来向游戏提供机台身份。 俗称狗号,如果你要连接官服,此字段是必须的,由于机台身份码为商业机密,此处我不能给出可以使用的具体值,如有需求请自行寻找。

keychip.region#

region 覆盖模拟 keychip 向游戏提供的区域代码。配置读取函数缺省取 1,随后通过模拟注册表的 region 值返回给游戏;具体如何检查或使用该区域由游戏及系统软件决定。

值仓库文档中的地区含义
1 / 0x01JPN,日本;源码缺省值
2 / 0x02USA,美国;文档标注未使用
4 / 0x04EXP,出口/海外亚洲市场
8 / 0x08CHS,中国

在已有 [keychip] 节加入一行即可,例如需要中国区域标记时:

[keychip]
id=A69E-01A88888888
region=8

应使区域与实际游戏版本、系统和服务端要求一致;语言、内容版本和联网资格仍取决于对应程序及服务端。

源码将此字段描述为可能表示 keychip 可授权主板区域的位掩码。 我理解的是,当前 Hook 只是读取并返回数值,不能据此保证组合值具有“全区可用”的效果。 此解释仅为我理解的内容,不保证准确。

[pcbid]:主板 MAIN ID#

serialNo=ACAE01A99999999 是游戏所见的主板编号。要求 15 个字符,错误长度会使初始化失败;按模板格式不带连字符。

此配置在非必要情况下建议不启用。

[system]:ALLS 系统配置#

参数模板值含义和写法
enable1启用系统设置写入;省略时源码缺省为0
freeplay01 免费游玩,0 正常信用点模式。模板提示 Free Play 会关闭投币功能并影响部分游玩模式
dipsw11店内分发角色:1 Server,0 Client。同一分发组恰好一台为 Server

这些设置作用于 AMFS 下已有的 sysfile.dat。首启尚未生成文件时可能不生效,需要正常生成有效文件后重启;源码要求其大小为 0x6000。启用后会在启动时重新应用 INI 设置。

dipsw1 的 Server 是店内游戏分发角色,外部认证/存档服务仍需另行提供。

[led15070]:机台灯板#

enable=1 模拟 837-15070-04 灯板,控制机台及按钮灯的协议交互;0 关闭。maimai 默认使用 COM21 / COM23 两块灯板。

启用模拟不代表键盘 RGB 或外接灯带会自动亮。真实灯光输出需要合适的 IO DLL 或硬件适配。

如果你的手台带灯光,请咨询你的供应商。

[unity]:Unity / Mono 集成#

参数模板值含义和写法
enable1启用 Unity Hook
targetAssembly空要预先加载的托管 DLL 路径;普通启动留空,有兼容加载器时填写其入口 DLL

例如 targetAssembly=\Mods\Loader.dll(仅做示例),该文件必须实际存在并兼容此加载方式。当前源码描述是先查找 Doorstop.Entrypoint:Start,再回退 *:Main。

注意:targetAssembly 如果没有确定的配置项,将此字段留空,不要填写右值。

[aimeio] / [mai2io]:外部 IO 驱动#

两节均只有 path=:

配置对应驱动例子
[aimeio] path外部读卡器 IOpath=C:\Users\Rouming\Controllers\aimeio.dll
[mai2io] pathmaimai 按键、触摸及灯光 IOpath=C:\Users\Rouming\Controllers\mai2io.dll

应使用匹配的 x64 DLL 和受支持的游戏 IO API。

路径选择顺序:

  1. 对应 INI 的非空 path。
  2. SEGATOOLS_AIMEIO_PATH 或 SEGATOOLS_MAI2IO_PATH。
  3. SEGATOOLS_IO_ROOT 下的 aimeio.dll 或 mai2io.dll。
  4. 内置实现。

因此 path= 不一定等于内置 IO,还要检查环境变量。根目录推导的文件不存在会回退内置 IO;显式填写错误路径则会尝试加载并可能失败。

这些 IO 路径支持 Windows 环境变量展开,例如 path=%SEGATOOLS_IO_ROOT%\mai2io.dll。不要据此推断所有 INI 路径字段都支持环境变量展开。

同样需要注意的是:这两条配置项在你没有对应内容时,建议置空。

[io4]:维护与投币键#

参数模板值含义
test0x70F1,测试/维护菜单按钮
service0x71F2,服务按钮,具体行为由游戏界面决定
coin0x72F3,投币计数输入

还支持:

[io4]
enable=1
foreground=1

此处代码块内容在官方模板上未列出,由我阅读源码发现支持的字段,不保证绝对可用性,但由我测试未得出负面影响。

enable 控制 IO4 板模拟;foreground=1 仅在识别到游戏窗口处于前台时轮询 IO4 输入,源码缺省也是 1。这些是加入已有节的字段。

游戏窗口未获得焦点时,优先检查焦点;foreground=0 才允许后台轮询。此项不等于对所有独立输入线程统一限制。

[button]:外围按钮与选择键#

enable=1 启用内置 IO 的两组环键和选择键;0 跳过这部分轮询。测试、服务和投币在该判断前处理,不会被此开关一并关闭;触摸也是单独的通道。

有独立的游戏 DebugInput 或其他输入来源时,可按实际接法关闭,避免同一按键重复进入游戏;该开关本身不会开启游戏 DebugInput。

参数范围为 p1Btn1..p1Btn9、p2Btn1..p2Btn9。1–8 为环键,按模板顺时针顺序排列;9 为选择键。省略的键使用下表默认值:

序号1P 按键1P VK2P 数字小键盘2P VK
1W0x5780x68
2E0x4590x69
3D0x4460x66
4C0x4330x63
5X0x5820x62
6Z0x5A10x61
7A0x4140x64
8Q0x5170x67
9,选择主键盘 30x33*0x6A

[touch]:触摸板模拟和触摸区域键位#

参数模板 / 缺省含义
p1Enable模板1启用 1P 触摸板串口模拟,默认 COM3
p2Enable模板1启用 2P 触摸板串口模拟,默认 COM4
p1DebugInput模板中被注释,源码缺省01 开启 1P 键盘到触摸区域的映射
p2DebugInput模板中被注释,源码缺省01 开启 2P 键盘到触摸区域的映射
p1Touch<区域>示例被注释指定 1P 某触摸区域对应的 VK
p2Touch<区域>源码支持指定 2P 某触摸区域对应的 VK

区域名只能使用当前 sensor_map 中的 A1–A8、B1–B8、C1–C2、D1–D8、E1–E8,每位玩家共 34 个区域。

写法例如:

[touch]
p1Enable=1
p2Enable=1
p1DebugInput=1
p2DebugInput=0
p1TouchA1=0x54
p1TouchC1=0x47
p1TouchC2=0x47

此例启用两块触摸板模拟,但只把 1P 键盘映射为触摸;T 对应 A1,G 同时对应两个中心触点,其他未写的映射仍用源码默认值。

默认触摸键位如下,只有该侧 DebugInput 开启时才采集:

区域1P 从 1 到 82P 从 1 到 8
A1–A8T Y H N B V F RI O L . , M J U
B1–B8T Y H N B V F RI O L . , M J U
D1–D8T Y H N B V F RI O L . , M J U
E1–E8T Y H N B V F RI O L . , M J U
C1、C2都是 G都是 K

这意味着默认按 T 会同时触发 1P 的 A1/B1/D1/E1,而不是只触发 A1。要独立控制区域,须逐项覆盖相关绑定。

注意:此处的配置不建议更改模板内容,如果你采用的是手台方案,会通过 COM 口进行读取,而不应当更改此处内容。

segatools.ini 示例#

这是一份直接运行在 Windows 系统上未连接手台的 segatools.ini 配置文件示例,如需使用,请修改 keychip 部分的参数:

[vfs]
amfs=amfs
option=option
appdata=appdata
[aime]
enable=0
aimePath=DEVICE\aime.txt
[dns]
enable=1
default=at.sys-allnet.cn
[netenv]
enable=1
addrSuffix=11
[keychip]
id=XXXX-XXXXXXXXXXX
gameId=SDGB
region=8
subnet=192.168.172.0
[system]
enable=1
[unity]
enable=1
targetAssembly=
[io4]
test=0x37
service=0x38
coin=0x39
[button]
enable=1
[touch]
p1Enable=1
p2Enable=1

mai.ini 配置详解#

轮椅配置#

在绝大多数情况下,mai2.ini​ 中配置的内容都是游戏本体自带的。我们现在在这里需要配置的是让游戏忽略错误并且以开发模式运行。同时这里还可以开启歌曲全解和自定义一 PC 的歌曲数量。

[AM]
Target = 0
DummyLED = 1
DummyChime = 1
DummyTouchPanel = 1
IgnoreError = 1
DummyCodeCamera=1
DummyPhotoCamera=1
QrCameraId=0
[Sound]
Sound8Ch=0
[Debug]
AllOpen=0
AllMap=0
AllCollection=0
AllChara=0
MaxTrack=3
Debug=1
[DebugVersion]
DebugMajorVersion=1
DebugMinorVersion=45
DebugReleaseVersion=00

其中 Target 是游戏是否以生产环境运行的开关。它控制比如说开了之后游戏会把 ErrorLog 之类的文件夹放在 Y: 盘里,但是关了之后这些文件就会被放在当前目录下。

Dummy 开头的那些就是假如你没有对应的硬件就开启,会加载虚拟的。

AllOpen 是开启歌曲全解。

DebugVersion 可以设置游戏认为自己是的版本号。

以上是经过他人验证的可稳定使用的配置。
如果你不满足于这种轮椅般的稳定配置,那么接下来的内容————要开始加速了哦!

超速配置#

阅前提示:此段内容除去与上方轮椅配置相同的部分,剩余部分为我阅读 MaiMai DX 源码后得出的可能能够使用的配置。
由于内容太过繁多,我无法一一进行测试,故我也不保证可用性,使用时请自行测试。
毕竟是“超速”配置,所以出点意外也是很正常的对吧(
只因为可能出错就不配置超速配置?这是弱者的思维!所以如果你使用某项配置发现能够正常使用,请联系我进行更新以上内容。

吐槽:艹拟冯,傻福日本人写的什么构式代码?建议所有人去品鉴一下源码(

配置要开始加速了哦

已推定配置#

候选键对应属性类型按命名推断的用途
DebugDispbool调试信息显示
AutoPlaybool自动演奏
MovieCheckbool,对应 IsMovieSupervision影片/BGA 检查模式
FumenCheckbool谱面检查模式
EventOverridebool覆盖事件判断;不能直接等同全部活动解锁
ForceNowTimelong强制使用指定的当前时间;时间格式、单位和纪元未确认
ForceRateint强制 Rate 数值;与显示 Rating 的对应关系未确认
ForceDxScoreT、ForceDxScoreY、ForceDxScoreU、ForceDxScoreIint四项 DX 分数覆盖值,后缀 T/Y/U/I 的含义未确认
ForceAchieveT、ForceAchieveY、ForceAchieveU、ForceAchieveIint四项达成率覆盖值;与属性 ForceAchiveT/Y/U/I 对应关系按命名推定,不能直接按百分数填写
MapMeterint地图推进距离或进度覆盖值
AllMapCompletebool将地图标为全部完成的调试开关;是否落盘未确认
TotalAwakeningOfCharaint角色总觉醒量覆盖值;单位、范围未确认
GhostAchiveintGhost/影子对手达成率值;拼写就是 Achive
GhostClassValueintGhost/影子对手等级或段位相关数值
ForceNaviCharaint指定导航角色,可能使用内部角色 ID,编号范围未确认
OutputProfilerbool性能分析输出开关
FumenEditor、FunenEditor可见 bool FunenEditor 属性谱面编辑相关;两种字符串拼写均存在,实际读取、优先级和别名关系未确认
NotesSpeedint普通音符速度相关值,未必等于设置界面显示的速度
TouchSpeedintTOUCH 音符速度相关值
NotesDesignint普通音符设计/样式选择值,枚举映射未确认
HoldDesignintHOLD 音符设计/样式选择值
SlideDesignintSLIDE 音符设计/样式选择值

其他推定配置节#

推定配置节候选键属性类型按命名推断的用途
AMDummyChimeId1、DummyChimeId2uint两个 Chime Dummy 身份 ID;与 DummyChime 关联,但编号是否对应 1P/2P、何时使用均未验证
NetworkUseNetworkbool游戏网络功能开关;不等同 Segatools DNS 或 netenv 配置
DebugVersionDebugMajorVersionint调试主版本号
DebugVersionDebugMinorVersionint调试次版本号
DebugVersionDebugReleaseVersionint调试发布版本号

其中已推定配置为确认源码名称存在且启用,不确认当前构建一定读取该键。

其他推定配置节为未确认具体用途的配置节,源码名称存在但不确认启用,不确认当前构建一定读取该键。

AquaMai.toml#

如果你要连接官服,请在 MaiChartManager 中将移除加密设置为关。

其他设置请根据描述自行设置。

如果你使用的是 AquaMai-for-SDGB ,其中成绩上传功能为实验性内容,可能不稳定或存在未知问题,非必要不要打开开关。

此处成绩上传特指名称为“成绩上传”的配置项。

最后#

本教程仅为学习交流之用,不保证其准确性和完整性。如有侵权请联系我删除。

数据上传失败?!MaiMai DX 的进阶配置
https://blog.rouming-fei.top/posts/official-server-link/
作者
废江流
发布于
2026-10-04
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
废江流
提灯寻影,灯到影灭。
分类
标签
站点统计
文章
19
分类
3
标签
16
总字数
62,531
运行时长
0 天
最后活动
0 天前

文章目录