PSO 协议命令参考
本文档描述 PSO 客户端与 newserv 服务器之间使用的网络协议命令(操作码)。
概述
命令由 1 字节操作码(0x00–0xFF)标识。不同游戏版本的命令处理方式不同。服务器支持 14 个游戏版本:
| 列号 | 版本 |
|---|
| 1 | PC_PATCH |
| 2 | BB_PATCH |
| 3 | DC_NTE |
| 4 | DC_112000 |
| 5 | DCV1 |
| 6 | DCV2 |
| 7 | PC_NTE |
| 8 | PC |
| 9 | GCNTE |
| 10 | GC |
| 11 | EP3TE |
| 12 | EP3 |
| 13 | XB |
| 14 | BB |
命令头格式
- DC/GC/XB(PSOCommandHeaderDCV3): 4 字节 — command(1)、flag(1)、size(2)
- PC(PSOCommandHeaderPC): 4 字节 — size(2)、command(1)、flag(1)
- BB(PSOCommandHeaderBB): 8 字节 — size(2)、command(2)、flag(4)
源码命名规范
C_ 前缀:客户端→服务器(客户端发送)S_ 前缀:服务器→客户端(服务器发送)SC_ 前缀:双向(两端均可发送)
补丁服务器命令(仅 PC_PATCH / BB_PATCH)
| 操作码 | 方向 | 名称 | 说明 |
|---|
| 0x02 | S→C | ServerInit_Patch | 补丁连接的服务器初始化 |
| 0x02 | C→S | (响应) | 客户端确认补丁服务器初始化 |
| 0x04 | S→C | (请求登录) | 服务器请求用户登录信息 |
| 0x04 | C→S | Login_Patch | 客户端发送用户名、密码、邮箱 |
| 0x06 | S→C | OpenFile_Patch | 打开文件进行补丁 |
| 0x07 | S→C | WriteFileHeader_Patch | 写入补丁文件头 |
| 0x08 | S→C | CloseCurrentFile_Patch | 关闭当前补丁文件 |
| 0x09 | S→C | EnterDirectory_Patch | 进入补丁目录 |
| 0x0C | S→C | FileChecksumRequest_Patch | 向客户端请求文件校验和 |
| 0x0F | C→S | FileInformation_Patch | 客户端回复文件校验和/大小 |
| 0x10 | C→S | (所有校验和完成) | 客户端完成所有校验和响应 |
| 0x11 | S→C | StartFileDownloads_Patch | 开始文件下载 |
登录与认证命令
| 操作码 | 方向 | 处理函数 | 版本 | 说明 |
|---|
| 0x02/0x17 | S→C | — | DC/PC/V3 | 服务器初始化(加密设置) |
| 0x03 | S→C | — | BB | BB 服务器初始化 |
| 0x05 | C→S | on_05_XB | XB | Xbox 断开连接(退出游戏) |
| 0x05 | C→S | on_ignored | 其他版本 | 忽略(加密确认) |
| 0x88 | C→S | on_88_DCNTE | DC_NTE | DC NTE 登录 |
| 0x8B | C→S | on_8B_DCNTE | DC_NTE | DC NTE 扩展登录 |
| 0x90 | C→S | on_90_DC | DC | DC V1 登录 |
| 0x91 | S→C | — | DC/PC/V3 | 服务器初始化(备用) |
| 0x92 | C→S | on_92_DC | DC | DC V1 注册 |
| 0x93 | C→S | on_93_DC | DC | DC V1 含硬件信息的登录 |
| 0x93 | C→S | on_93_BB | BB | BB 登录(多种子格式) |
| 0x9A | C→S | on_9A | DC/PC/V3 | 使用 V1 序列号 + V2 序列号登录 |
| 0x9B | S→C | — | 全部 | 服务器初始化(备用) |
| 0x9C | C→S | on_9C | DC/PC/V3/BB | 注册 |
| 0x9D | C→S | on_9D_9E | DC/PC/GC | 登录(DC/PC/GC 格式) |
| 0x9E | C→S | on_9D_9E | PC/GC | 登录(扩展格式) |
| 0x9E | C→S | on_9E_XB | XB | Xbox 登录 |
| 0xDB | C→S | on_DB_V3 | V3 | 账号验证(V3) |
导航与菜单命令
| 操作码 | 方向 | 处理函数 | 说明 |
|---|
| 0x07 | S→C | — | 菜单项列表 |
| 0x08 | C→S | on_08_E6 | 请求游戏列表 |
| 0x09 | C→S | on_09 | 请求菜单项信息(任务/游戏/大厅详情) |
| 0x0E | S→C | — | 旧版加入游戏 |
| 0x10 | C→S | on_10 | 菜单选择(主菜单、游戏列表、任务列表等) |
| 0x1F | C→S | on_1F | 请求信息菜单 |
| 0x84 | C→S | on_84 | 大厅选择 |
| 0xA0 | C→S | on_A0 | 切换飞船(返回飞船选择) |
| 0xA1 | C→S | on_A1 | 切换区块(同切换飞船处理) |
| 0xD6 | C→S | on_D6_V3 | 请求信息板 / 欢迎消息(V3) |
| 0xE6 | C→S | on_08_E6 | 请求观战队伍列表(BB) |
大厅与玩家管理
| 操作码 | 方向 | 处理函数 | 说明 |
|---|
| 0x61 | C→S | on_61_98 | 发送玩家数据(角色数据) |
| 0x64 | S→C | — | 加入游戏通知 |
| 0x65/0x67/0x68 | S→C | — | 加入大厅通知 |
| 0x66/0x69 | S→C | — | 离开大厅通知 |
| 0x83 | S→C | — | 大厅列表 |
| 0x88 | S→C | — | 箭头更新(大厅箭头) |
| 0x95 | S→C | — | 设置公会卡号 |
| 0x96 | C→S | on_96 | 角色存档信息 |
| 0x98 | C→S | on_61_98 | 离开游戏(发送玩家数据) |
| 0xC1 | S→C | — | 创建游戏 |
游戏命令与子命令
| 操作码 | 方向 | 处理函数 | 说明 |
|---|
| 0x60 | C→S/S→C | on_6x_C9_CB | 游戏子命令(广播给房间所有人) |
| 0x62 | C→S/S→C | on_6x_C9_CB | 游戏子命令(发给指定玩家) |
| 0x6C | C→S/S→C | on_6x_C9_CB | 扩展游戏子命令(广播) |
| 0x6D | C→S/S→C | on_6x_C9_CB | 扩展游戏子命令(发给指定玩家) |
| 0xC9 | C→S | on_6x_C9_CB / on_C9_XB | 游戏子命令(EP3/XB 变体) |
| 0xCB | C→S | on_6x_C9_CB | 游戏子命令(EP3 变体) |
| 0x30 | C→S | on_30 | 创建游戏 |
聊天与通信
| 操作码 | 方向 | 处理函数 | 说明 |
|---|
| 0x01 | S→C | — | 向客户端发送文本消息 |
| 0x06 | C→S | on_06 | 聊天消息 / 聊天命令 |
| 0x11 | S→C | — | 系统消息(BB 中滚动显示) |
| 0x1A | S→C | — | 消息框 |
| 0x40 | C→S/S→C | — | 公会卡搜索 |
| 0xB0 | S→C | — | 文本消息(滚动) |
| 0xC0 | C→S | on_C0 | 广播符号聊天 |
| 0xC1 | C→S | on_C1_PC / on_C1_BB | 创建游戏(PC/BB) |
| 0xC2 | C→S | on_C2 | 符号聊天 |
| 0xD8 | S→C/C→S | on_D8 | 信息板 |
任务系统
| 操作码 | 方向 | 处理函数 | 说明 |
|---|
| 0xA2 | C→S | on_A2 | 请求任务列表 |
| 0xA2/0xA4 | S→C | — | 任务菜单条目 |
| 0x44/0xA6 | S→C | — | 打开任务文件 |
| 0x13/0xA7 | C→S | on_13_A7_V3_V4 | 任务文件写入确认 |
| 0xA9 | C→S | on_A9 | 取消任务选择 |
| 0xAA | C→S | on_AA | 更新任务统计信息 |
| 0xAB | S→C | — | 调用任务标签 |
| 0xAC | C→S | on_AC_V3_BB | 任务文件已加载 / 可加入任务就绪 |
| 0xB2 | S→C | — | 执行代码(向客户端发送函数) |
| 0xB3 | C→S | on_B3 | 执行代码结果(函数调用响应) |
服务器系统命令
| 操作码 | 方向 | 处理函数 | 说明 |
|---|
| 0x04 | S→C | — | 更新客户端配置 |
| 0x19 | S→C | — | 重连(重定向到另一台服务器) |
| 0x1D | C→S | on_1D | Ping 响应 |
| 0xB1 | C→S | on_B1 | 请求服务器时间 |
| 0xB1 | S→C | — | 服务器时间响应 |
| 0xDE | S→C | — | 稀有怪物列表(BB) |
| 0xEF | S→C | — | 设置关机命令(BB) |
BB 专属命令
| 操作码 | 方向 | 处理函数 | 说明 |
|---|
| 0xDC | C→S | on_DC_BB | 请求公会卡数据 |
| 0xDC (01) | S→C | — | 公会卡文件头 |
| 0xDC (02) | S→C | — | 公会卡文件分块 |
| 0xDF | C→S | on_DF_BB | 挑战模式设置 |
| 0xE0 | C→S | on_E0_BB | 请求系统文件 |
| 0xE1 | S→C | — | 系统文件已创建通知 |
| 0xE2 | C→S | on_E2_BB | 同步系统文件 |
| 0xE3 | C→S | on_E3_BB | 玩家预览请求 / 选择角色 |
| 0xE4 | S→C | — | 批准玩家选择 / 玩家预览 |
| 0xE5 | C→S | on_E5_BB | 创建角色 |
| 0xE6 | S→C | — | 客户端初始化(BB) |
| 0xE7 | C→S | on_E7_BB | 同步存档文件 |
| 0xE8 | C→S | on_E8_BB | 公会卡操作(添加/删除/备注/排序) |
| 0xEA | C→S | on_EA_BB | 团队命令(创建/解散/添加/移除成员等) |
| 0xEB | C→S | on_EB_BB | 流文件操作(索引/分块) |
| 0xEC | C→S | on_EC_BB | 离开角色选择 |
| 0xED | C→S | on_ED_BB | 更新设置(选项/符号聊天/快捷语/按键配置/手柄配置/技能菜单/自定义/挑战记录) |
BB 团队子命令(0xEA)
| 子操作码 | 方向 | 说明 |
|---|
| 0x01EA | C→S | 创建团队 |
| 0x03EA | C→S | 添加团队成员 |
| 0x05EA | C→S | 移除团队成员 |
| 0x09EA | S→C | 团队成员列表 |
| 0x0FEA | C→S | 设置团队旗帜 |
| 0x11EA | C→S | 更改团队成员权限等级 |
| 0x12EA | S→C | 更新团队成员资格 |
| 0x13EA | S→C | 玩家的团队信息(所有大厅客户端) |
| 0x15EA | S→C | 玩家的团队信息(单个客户端) |
| 0x18EA | S→C | 团队内部排名 |
| 0x19EA | S→C | 团队奖励列表 |
| 0x1AEA | S→C | 团队奖励列表(已购买) |
| 0x1CEA | S→C | 跨团队排名 |
| 0x1DEA | S→C | 更新团队奖励标志 |
| 0x1EEA | C→S | 重命名团队 |
第三章节(卡牌对战)命令
| 操作码 | 方向 | 处理函数 | 说明 |
|---|
| 0xB7 | C→S | on_B7_Ep3 | 请求 EP3 排名/音乐更新 |
| 0xB7 | S→C | — | 排名更新 |
| 0xB9 | S→C | — | 媒体更新(地图、卡牌定义等) |
| 0xBA | C→S | on_BA_Ep3 | Meseta 交易(在商店买/卖卡牌) |
| 0xBA | S→C | — | Meseta 交易结果 |
| 0xBB | S→C | — | 锦标赛观战队伍列表 |
| 0xCA | C→S | on_CA_Ep3 | 卡牌对战服务器数据(游戏命令) |
| 0xCC | S→C | — | 确认锦标赛参赛 |
| 0xDC | C→S | on_DC_Ep3 | 请求锦标赛列表(EP3) |
| 0xE0 | S→C | — | 锦标赛列表 |
| 0xE1 | S→C | — | 游戏信息 |
| 0xE2 | C→S | on_E2_Ep3 | 锦标赛操作(列表/查询/参赛/退出) |
| 0xE2 | S→C | — | 锦标赛参赛列表 |
| 0xE3 | S→C | — | 锦标赛游戏详情 |
| 0xE4 | C→S | on_E4_Ep3 | 卡牌对战桌面状态更新 |
| 0xE4 | S→C | — | 卡牌对战桌面状态 |
| 0xE5 | C→S | on_E5_Ep3 | 卡牌对战桌面确认 |
| 0xE5 | S→C | — | 卡牌对战桌面确认响应 |
| 0xE6 | C→S | — | 加入观战队伍 |
| 0xE7 | C→S | — | 创建观战队伍 |
| 0xE8 | S→C | — | 加入观战队伍响应 |
| 0xE9 | S→C | — | 离开观战队伍 |
| 0xEA | S→C | — | 限时消息框 |
| 0xEE | C→S | on_EE_Ep3 | 卡牌交易操作 |
| 0xEE | S→C | — | 卡牌交易状态推进 / 完成 |
| 0xEF | C→S | on_EF_Ep3 | 卡牌拍卖 |
| 0xEF | S→C | — | 开始卡牌拍卖 |
GC/Xbox 专属命令
| 操作码 | 方向 | 处理函数 | 说明 |
|---|
| 0xD7 | C→S | on_D7_GC | GBA 游戏文件请求(GC) |
| 0xD0 | C→S | on_D0_V3_BB | 选择搜索条件更新(V3/BB) |
| 0xD2 | C→S | on_D2_V3_BB | 选择搜索请求(V3/BB) |
| 0xD4 | C→S | on_D4_V3_BB | 选择搜索结果选定(V3/BB) |
DC NTE 专属命令
| 操作码 | 方向 | 处理函数 | 说明 |
|---|
| 0x88 | C→S | on_88_DCNTE | 登录 |
| 0x8A | C→S | on_8A | 连接信息 |
| 0x8B | C→S | on_8B_DCNTE | 扩展登录 |
| 0x8E | C→S | on_8E_DCNTE | 切换飞船(映射到 0xA0) |
| 0x8F | C→S | on_8F_DCNTE | 切换区块(映射到 0xA1) |
物品与商店命令
| 操作码 | 方向 | 说明 |
|---|
| 0x24 | S→C | 兑换秘密抽奖券结果(BB) |
| 0x25 | S→C | Gallon 方案结果(BB) |
PSO Protocol Commands Reference
This document describes the network protocol commands (opcodes) used between the PSO client and newserv server.
Overview
Commands are identified by a 1-byte opcode (0x00-0xFF). Each command may have different handlers depending on the game version. The server supports 14 game versions:
| Column | Version |
|---|
| 1 | PC_PATCH |
| 2 | BB_PATCH |
| 3 | DC_NTE |
| 4 | DC_112000 |
| 5 | DCV1 |
| 6 | DCV2 |
| 7 | PC_NTE |
| 8 | PC |
| 9 | GCNTE |
| 10 | GC |
| 11 | EP3TE |
| 12 | EP3 |
| 13 | XB |
| 14 | BB |
Command Header Formats
- DC/GC/XB (PSOCommandHeaderDCV3): 4 bytes — command(1), flag(1), size(2)
- PC (PSOCommandHeaderPC): 4 bytes — size(2), command(1), flag(1)
- BB (PSOCommandHeaderBB): 8 bytes — size(2), command(2), flag(4)
Naming Convention in Source Code
C_ prefix: Client-to-server (client sends)S_ prefix: Server-to-client (server sends)SC_ prefix: Bidirectional (used in both directions)
Patch Server Commands (PC_PATCH / BB_PATCH only)
| Opcode | Direction | Name | Description |
|---|
| 0x02 | S→C | ServerInit_Patch | Server initialization for patch connection |
| 0x02 | C→S | (response) | Client acknowledges patch server init |
| 0x04 | S→C | (request login) | Server requests user's login information |
| 0x04 | C→S | Login_Patch | Client sends username, password, email |
| 0x06 | S→C | OpenFile_Patch | Open a file for patching |
| 0x07 | S→C | WriteFileHeader_Patch | Write file header during patching |
| 0x08 | S→C | CloseCurrentFile_Patch | Close current file being patched |
| 0x09 | S→C | EnterDirectory_Patch | Enter a directory during patching |
| 0x0C | S→C | FileChecksumRequest_Patch | Request file checksum from client |
| 0x0F | C→S | FileInformation_Patch | Client responds with file checksum/size |
| 0x10 | C→S | (all checksums done) | Client finished responding to all checksum requests |
| 0x11 | S→C | StartFileDownloads_Patch | Begin file downloads |
Login & Authentication Commands
| Opcode | Direction | Handler | Versions | Description |
|---|
| 0x02/0x17 | S→C | — | DC/PC/V3 | Server initialization (encryption setup) |
| 0x03 | S→C | — | BB | Server initialization for BB |
| 0x05 | C→S | on_05_XB | XB | Xbox disconnect (quit game) |
| 0x05 | C→S | on_ignored | Others | Ignored (encryption ack) |
| 0x88 | C→S | on_88_DCNTE | DC_NTE | DC NTE login |
| 0x8B | C→S | on_8B_DCNTE | DC_NTE | DC NTE extended login |
| 0x90 | C→S | on_90_DC | DC | DC V1 login |
| 0x91 | S→C | — | DC/PC/V3 | Server init (alternate) |
| 0x92 | C→S | on_92_DC | DC | DC V1 registration |
| 0x93 | C→S | on_93_DC | DC | DC V1 login with hardware info |
| 0x93 | C→S | on_93_BB | BB | BB login (multiple sub-formats) |
| 0x9A | C→S | on_9A | DC/PC/V3 | Login with V1 serial + V2 serial |
| 0x9B | S→C | — | All | Server init (alternate) |
| 0x9C | C→S | on_9C | DC/PC/V3/BB | Registration |
| 0x9D | C→S | on_9D_9E | DC/PC/GC | Login (DC/PC/GC format) |
| 0x9E | C→S | on_9D_9E | PC/GC | Login (extended format) |
| 0x9E | C→S | on_9E_XB | XB | Xbox login |
| 0xDB | C→S | on_DB_V3 | V3 | Verify account (V3) |
Navigation & Menu Commands
| Opcode | Direction | Handler | Description |
|---|
| 0x07 | S→C | — | Menu items list |
| 0x08 | C→S | on_08_E6 | Request game list |
| 0x09 | C→S | on_09 | Request menu item info (quest/game/lobby details) |
| 0x0E | S→C | — | Legacy join game |
| 0x10 | C→S | on_10 | Menu selection (main menu, game list, quest list, etc.) |
| 0x1F | C→S | on_1F | Request information menu |
| 0x84 | C→S | on_84 | Lobby selection |
| 0xA0 | C→S | on_A0 | Ship change (return to ship select) |
| 0xA1 | C→S | on_A1 | Block change (treated same as ship change) |
| 0xD6 | C→S | on_D6_V3 | Request info board / welcome message (V3) |
| 0xE6 | C→S | on_08_E6 | Request spectator team list (BB) |
Lobby & Player Management
| Opcode | Direction | Handler | Description |
|---|
| 0x61 | C→S | on_61_98 | Send player data (character data) |
| 0x64 | S→C | — | Join game notification |
| 0x65/0x67/0x68 | S→C | — | Join lobby notification |
| 0x66/0x69 | S→C | — | Leave lobby notification |
| 0x83 | S→C | — | Lobby list |
| 0x88 | S→C | — | Arrow update (lobby arrows) |
| 0x95 | S→C | — | Set guild card number |
| 0x96 | C→S | on_96 | Character save info |
| 0x98 | C→S | on_61_98 | Leave game (send player data) |
| 0xC1 | S→C | — | Create game |
Game Commands & Subcommands
| Opcode | Direction | Handler | Description |
|---|
| 0x60 | C→S/S→C | on_6x_C9_CB | Game subcommand (broadcast to room) |
| 0x62 | C→S/S→C | on_6x_C9_CB | Game subcommand (to specific player) |
| 0x6C | C→S/S→C | on_6x_C9_CB | Extended game subcommand (broadcast) |
| 0x6D | C→S/S→C | on_6x_C9_CB | Extended game subcommand (to specific player) |
| 0xC9 | C→S | on_6x_C9_CB / on_C9_XB | Game subcommand (EP3/XB variant) |
| 0xCB | C→S | on_6x_C9_CB | Game subcommand (EP3 variant) |
| 0x30 | C→S | on_30 | Create game |
Chat & Communication
| Opcode | Direction | Handler | Description |
|---|
| 0x01 | S→C | — | Send text message to client |
| 0x06 | C→S | on_06 | Chat message / chat command |
| 0x11 | S→C | — | System message (scrolling on BB) |
| 0x1A | S→C | — | Message box |
| 0x40 | C→S/S→C | — | Guild card search |
| 0xB0 | S→C | — | Text message (scrolling) |
| 0xC0 | C→S | on_C0 | Broadcast symbol chat |
| 0xC1 | C→S | on_C1_PC / on_C1_BB | Create game (PC/BB) |
| 0xC2 | C→S | on_C2 | Symbol chat |
| 0xD8 | S→C/C→S | on_D8 | Info board |
Quest System
| Opcode | Direction | Handler | Description |
|---|
| 0xA2 | C→S | on_A2 | Quest list request |
| 0xA2/0xA4 | S→C | — | Quest menu entries |
| 0x44/0xA6 | S→C | — | Open quest file |
| 0x13/0xA7 | C→S | on_13_A7_V3_V4 | Quest file write confirmation |
| 0xA9 | C→S | on_A9 | Quest selection cancelled |
| 0xAA | C→S | on_AA | Update quest statistics |
| 0xAB | S→C | — | Call quest label |
| 0xAC | C→S | on_AC_V3_BB | Quest file loaded / joinable quest ready |
| 0xB2 | S→C | — | Execute code (send function to client) |
| 0xB3 | C→S | on_B3 | Execute code result (function call response) |
Server System Commands
| Opcode | Direction | Handler | Description |
|---|
| 0x04 | S→C | — | Update client config |
| 0x19 | S→C | — | Reconnect (redirect to another server) |
| 0x1D | C→S | on_1D | Ping response |
| 0xB1 | C→S | on_B1 | Request server time |
| 0xB1 | S→C | — | Server time response |
| 0xDE | S→C | — | Rare monster list (BB) |
| 0xEF | S→C | — | Set shutdown command (BB) |
BB-Specific Commands
| Opcode | Direction | Handler | Description |
|---|
| 0xDC | C→S | on_DC_BB | Guild card data request |
| 0xDC (01) | S→C | — | Guild card header |
| 0xDC (02) | S→C | — | Guild card file chunk |
| 0xDF | C→S | on_DF_BB | Challenge mode settings |
| 0xE0 | C→S | on_E0_BB | Request system file |
| 0xE1 | S→C | — | System file created notification |
| 0xE2 | C→S | on_E2_BB | Sync system file |
| 0xE3 | C→S | on_E3_BB | Player preview request / character select |
| 0xE4 | S→C | — | Approve player choice / player preview |
| 0xE5 | C→S | on_E5_BB | Create character |
| 0xE6 | S→C | — | Client init (BB) |
| 0xE7 | C→S | on_E7_BB | Sync save files |
| 0xE8 | C→S | on_E8_BB | Guild card operations (add/delete/comment/sort) |
| 0xEA | C→S | on_EA_BB | Team commands (create/disband/add/remove members, etc.) |
| 0xEB | C→S | on_EB_BB | Stream file operations (index/chunk) |
| 0xEC | C→S | on_EC_BB | Leave character select |
| 0xED | C→S | on_ED_BB | Update settings (options/symbol chats/shortcuts/key config/pad config/tech menu/customize/challenge records) |
BB Team Sub-Commands (0xEA)
| Sub-opcode | Direction | Description |
|---|
| 0x01EA | C→S | Create team |
| 0x03EA | C→S | Add team member |
| 0x05EA | C→S | Remove team member |
| 0x09EA | S→C | Team member list |
| 0x0FEA | C→S | Set team flag |
| 0x11EA | C→S | Change team member privilege level |
| 0x12EA | S→C | Update team membership |
| 0x13EA | S→C | Team info for player (all lobby clients) |
| 0x15EA | S→C | Team info for player (single client) |
| 0x18EA | S→C | Intra-team ranking |
| 0x19EA | S→C | Team reward list |
| 0x1AEA | S→C | Team reward list (purchased) |
| 0x1CEA | S→C | Cross-team ranking |
| 0x1DEA | S→C | Update team reward flags |
| 0x1EEA | C→S | Rename team |
Episode 3 (Card Battle) Commands
| Opcode | Direction | Handler | Description |
|---|
| 0xB7 | C→S | on_B7_Ep3 | Request EP3 rank/music update |
| 0xB7 | S→C | — | Rank update |
| 0xB9 | S→C | — | Media update (maps, card definitions, etc.) |
| 0xBA | C→S | on_BA_Ep3 | Meseta transaction (buy/sell cards at shop) |
| 0xBA | S→C | — | Meseta transaction result |
| 0xBB | S→C | — | Tournament spectator team list |
| 0xCA | C→S | on_CA_Ep3 | Card battle server data (game commands) |
| 0xCC | S→C | — | Confirm tournament entry |
| 0xDC | C→S | on_DC_Ep3 | Request tournament list (EP3) |
| 0xE0 | S→C | — | Tournament list |
| 0xE1 | S→C | — | Game information |
| 0xE2 | C→S | on_E2_Ep3 | Tournament operations (list/check/enter/withdraw) |
| 0xE2 | S→C | — | Tournament entry list |
| 0xE3 | S→C | — | Tournament game details |
| 0xE4 | C→S | on_E4_Ep3 | Card battle table state update |
| 0xE4 | S→C | — | Card battle table state |
| 0xE5 | C→S | on_E5_Ep3 | Card battle table confirmation |
| 0xE5 | S→C | — | Card battle table confirmation response |
| 0xE6 | C→S | — | Join spectator team |
| 0xE7 | C→S | — | Create spectator team |
| 0xE8 | S→C | — | Join spectator team response |
| 0xE9 | S→C | — | Leave spectator team |
| 0xEA | S→C | — | Timed message box |
| 0xEE | C→S | on_EE_Ep3 | Card trade operations |
| 0xEE | S→C | — | Card trade state advance / complete |
| 0xEF | C→S | on_EF_Ep3 | Card auction |
| 0xEF | S→C | — | Start card auction |
GC/Xbox-Specific Commands
| Opcode | Direction | Handler | Description |
|---|
| 0xD7 | C→S | on_D7_GC | GBA game file request (GC) |
| 0xD0 | C→S | on_D0_V3_BB | Choice search criteria update (V3/BB) |
| 0xD2 | C→S | on_D2_V3_BB | Choice search request (V3/BB) |
| 0xD4 | C→S | on_D4_V3_BB | Choice search result select (V3/BB) |
DC NTE-Specific Commands
| Opcode | Direction | Handler | Description |
|---|
| 0x88 | C→S | on_88_DCNTE | Login |
| 0x8A | C→S | on_8A | Connection info |
| 0x8B | C→S | on_8B_DCNTE | Extended login |
| 0x8E | C→S | on_8E_DCNTE | Ship change (maps to 0xA0) |
| 0x8F | C→S | on_8F_DCNTE | Block change (maps to 0xA1) |
Item & Shop Commands
| Opcode | Direction | Description |
|---|
| 0x24 | S→C | Exchange secret lottery ticket result (BB) |
| 0x25 | S→C | Gallon plan result (BB) |
游戏子命令参考(0x60/0x62/0x6C/0x6D)
游戏子命令承载在主协议命令 0x60(广播)、0x62(发给指定玩家)、0x6C(扩展广播)、0x6D(扩展发给指定玩家)中。每个子命令有 1 字节的子操作码(0x00–0xFF)。
子命令头格式
标准头:4 字节 — subcommand(1)、size_in_dwords(1)、data...
扩展头(size=0):8 字节 — subcommand(1)、0x00、extended_size(4)、data...
版本映射
每个子命令有三列操作码:
- DC NTE — Dreamcast 网络试玩版
- DC 11/2000 — Dreamcast 原型(2000 年 11 月)
- Final — 所有其他版本(DCV1、DCV2、PC、GC、EP3、XB、BB)
NONE 表示该子命令在对应版本中不存在。
玩家移动与位置
| 子操作码 | 处理函数 | 说明 |
|---|
| 6x1F | on_change_floor | 切换楼层(含传送/传送管道过渡) |
| 6x20 | on_movement_xyz_with_floor | 设置含楼层的位置(SetPosition) |
| 6x21 | on_change_floor | 切换楼层(备用) |
| 6x24 | on_movement_xyz | 将玩家传送至 XYZ 坐标 |
| 6x3E | on_movement_xyz_with_floor | 停在指定位置 |
| 6x3F | on_movement_xyz_with_floor | 设置位置(备用) |
| 6x40 | on_movement_xz | 步行到指定位置(XZ 平面) |
| 6x41 | on_movement_xz | 跑向指定位置 |
| 6x42 | on_movement_xz | 跑向指定位置(备用) |
| 6x55 | on_movement_xyz | 地图内传送 |
| 6x56 | on_movement_xyz | 设置玩家位置和朝向 |
| 6x94 | on_warp | 传送到另一区域 |
玩家状态与动画
| 子操作码 | 处理函数 | 说明 |
|---|
| 6x02 | forward_subcommand_m | (基础转发) |
| 6x03 | forward_subcommand_m | (基础转发) |
| 6x04 | forward_subcommand_m | (基础转发) |
| 6x05 | on_switch_state_changed | 开关状态改变 |
| 6x0C | on_received_condition | 受到负面状态(状态异常) |
| 6x0E | forward (entity_id_transcode) | 清除负面状态效果 |
| 6x17 | on_set_entity_pos_and_angle | 设置实体位置和朝向 |
| 6x23 | on_set_player_visible | 设置玩家可见性 |
| 6x2F | on_change_hp | 改变玩家 HP |
| 6x30 | on_level_up | 玩家升级 |
| 6x4A | on_change_hp | 改变 HP(变体) |
| 6x4B | on_change_hp | 改变 HP(变体) |
| 6x4C | on_change_hp | 改变 HP(变体) |
| 6x4D | on_player_died | 玩家死亡 |
| 6x4E | on_player_revivable | 玩家可被复活 |
| 6x4F | on_player_revived | 玩家已复活 |
| 6x52 | on_set_animation_state | 设置动画状态 |
物品与背包操作
| 子操作码 | 处理函数 | 说明 |
|---|
| 6x25 | on_equip_item | 装备物品 |
| 6x26 | on_unequip_item | 卸下物品 |
| 6x27 | on_use_item | 使用物品(消耗) |
| 6x28 | on_feed_mag | 喂养 MAG |
| 6x29 | on_destroy_inventory_item | 销毁背包中的物品 |
| 6x2A | on_player_drop_item | 玩家丢弃物品到地面 |
| 6x2B | on_create_inventory_item | 在背包中创建物品 |
| 6x59 | on_pick_up_item | 拾取物品(已确认) |
| 6x5A | on_pick_up_item_request | 请求拾取物品 |
| 6x5C | on_destroy_floor_item | 销毁地面物品 |
| 6x5D | on_drop_partial_stack | 丢弃部分叠加物品 |
| 6x5E | on_buy_shop_item | 从商店购买物品 |
| 6x5F | on_box_or_enemy_item_drop | 箱子/怪物掉落物品通知 |
| 6x60 | on_entity_drop_item_request | 实体掉落物品请求 |
| 6x63 | on_destroy_floor_item | 销毁地面物品(备用) |
| 6xA2 | on_entity_drop_item_request | 实体掉落物品请求(备用) |
战斗与攻击
| 子操作码 | 处理函数 | 说明 |
|---|
| 6x46 | forward (entity_targets_transcode) | 攻击完成(命中目标) |
| 6x47 | forward (entity_targets_transcode) | 释放技能(命中目标) |
| 6x48 | on_cast_technique_finished | 技能释放完毕 |
| 6x49 | forward (entity_targets_transcode) | 发动光子爆发(命中目标) |
| 6x89 | forward (entity_id_transcode) | 设置击杀实体 ID |
| 6x8F | forward (entity_id_transcode) | 增加战斗伤害得分 |
| 6x91 | on_update_attackable_col_state | 更新可攻击碰撞状态 |
| 6xE4 | on_incr_enemy_damage | 累计敌方伤害(扩展) |
Boss 行为
| 子操作码 | 处理函数 | 说明 |
|---|
| 6x10 | forward (entity_id_transcode) | Dragon Boss 行为 |
| 6x11 | forward (entity_id_transcode) | Dragon Boss 行为(备用) |
| 6x12 | on_dragon_actions | Dragon 特殊行为 |
| 6x13 | forward (entity_id_transcode) | De Rol Le Boss 行为 |
| 6x14 | forward (entity_id_transcode) | De Rol Le Boss 含目标行为 |
| 6x15 | forward (entity_id_transcode) | Vol Opt Boss 行为 |
| 6x16 | on_vol_opt_actions | Vol Opt Boss 特殊行为 |
| 6x18 | forward (entity_id_transcode) | Vol Opt 第二阶段 Boss 行为 |
| 6x19 | forward (entity_id_transcode) | Dark Falz 行为 |
| 6x84 | on_vol_opt_actions | Vol Opt Boss 行为(V2+) |
| 6x9F | forward (entity_id_transcode) | Gal Gryphon Boss 行为 |
| 6xA0 | forward (entity_id_transcode) | Gal Gryphon Boss 行为(备用) |
| 6xA3 | forward (entity_id_transcode) | Olga Flow Boss 行为 |
| 6xA4 | forward (entity_id_transcode) | Olga Flow Boss 行为(备用) |
| 6xA5 | forward (entity_id_transcode) | Olga Flow Boss 行为(备用 2) |
| 6xA8 | on_gol_dragon_actions | Gol Dragon 行为 |
| 6xA9 | forward (entity_id_transcode) | Barba Ray Boss 行为 |
| 6xAA | forward (entity_id_transcode) | Barba Ray Boss 行为(备用) |
敌人与物体状态
| 子操作码 | 处理函数 | 说明 |
|---|
| 6x0A | on_update_enemy_state | 更新敌人状态 |
| 6x0B | on_update_object_state | 更新物体状态 |
| 6x76 | on_set_entity_set_flag | 设置实体集合标志 |
| 6x86 | on_update_object_state | 击中可破坏物体 |
| 6x9C | on_set_enemy_low_game_flags_ultimate | 设置敌人标志(究极难度) |
游戏同步与加入
| 子操作码 | 处理函数 | 说明 |
|---|
| 6x6B | on_sync_joining_player_compressed_state | 同步加入玩家状态(压缩,玩家 0) |
| 6x6C | on_sync_joining_player_compressed_state | 同步加入玩家状态(压缩,玩家 1) |
| 6x6D | on_sync_joining_player_compressed_state | 同步加入玩家状态(压缩,玩家 2) |
| 6x6E | on_sync_joining_player_compressed_state | 同步加入玩家状态(压缩,玩家 3) |
| 6x6F | on_sync_joining_player_quest_flags | 同步加入玩家的任务标志 |
| 6x70 | on_sync_joining_player_disp_and_inventory | 同步加入玩家的显示数据和背包 |
事件与地图触发器
| 子操作码 | 处理函数 | 说明 |
|---|
| 6x67 | on_trigger_set_event | 触发设置事件 |
| 6x68 | on_update_telepipe_state | 更新传送管道状态 |
| 6x69 | on_npc_control | NPC 控制 |
| 6x6A | on_set_boss_warp_flags | 设置 Boss 传送标志 |
| 6x75 | on_set_quest_flag | 设置任务标志 |
| 6x77 | on_sync_quest_register | 同步任务寄存器 |
| 6x93 | on_activate_timed_switch | 激活计时开关 |
通信
| 子操作码 | 处理函数 | 说明 |
|---|
| 6x06 | on_send_guild_card | 向其他玩家发送公会卡 |
| 6x07 | on_symbol_chat | 符号聊天 |
| 6x74 | on_word_select | 词语选择(预设短语) |
| 6xBD | on_ep3_private_word_select_bb_bank_action | EP3 私聊词语选择 / BB 银行操作 |
| 6xB2 | on_play_sound_from_player | 从玩家处播放音效 |
挑战与对战模式
| 子操作码 | 处理函数 | 说明 |
|---|
| 6x7C | on_challenge_update_records | 更新挑战模式记录 |
| 6x7D | on_update_battle_data | 更新对战模式数据 |
| 6x7F | on_battle_scores | 对战模式得分 |
| 6x97 | on_challenge_mode_retry_or_quit | 挑战模式重试或退出 |
| 6xCF | on_battle_restart_bb | 对战模式重新开始(BB) |
| 6xD0 | on_battle_level_up_bb | 对战模式升级(BB) |
| 6xD1 | on_request_challenge_grave_recovery_item_bb | 挑战遗物恢复物品(BB) |
BB 专属子命令
| 子操作码 | 处理函数 | 说明 |
|---|
| 6xB5 | on_open_shop_bb_or_ep3_battle_subs | 打开商店(BB)/ EP3 对战子命令 |
| 6xB7 | on_buy_shop_item_bb | 购买商店物品(BB) |
| 6xB8 | on_identify_item_bb | 鉴定物品(鉴定师) |
| 6xBA | on_accept_identify_item_bb | 接受已鉴定物品 |
| 6xBB | on_open_bank_bb_or_card_trade_counter_ep3 | 打开银行(BB)/ 卡牌交易柜台(EP3) |
| 6xC0 | on_sell_item_at_shop_bb | 在商店出售物品 |
| 6xC3 | on_drop_partial_stack_bb | 丢弃部分叠加物品 |
| 6xC4 | on_sort_inventory_bb | 整理背包 |
| 6xC5 | on_medical_center_bb | 医疗中心(治疗) |
| 6xC6 | on_steal_exp_bb | 偷取经验(武器特殊效果) |
| 6xC7 | on_charge_attack_bb | 蓄力攻击(武器特殊效果) |
| 6xC8 | on_enemy_exp_request_bb | 请求敌人经验值 |
| 6xC9 | on_adjust_player_meseta_bb | 调整玩家 Meseta |
| 6xCA | on_quest_create_item_bb | 任务创建物品 |
| 6xCB | on_transfer_item_via_mail_message_bb | 通过邮件转移物品 |
| 6xCC | on_exchange_item_for_team_points_bb | 兑换物品为团队积分 |
| 6xD2 | on_write_quest_counter_bb | 写入任务计数器 |
| 6xD5 | on_quest_exchange_item_bb | 任务兑换物品 |
| 6xD6 | on_wrap_item_bb | 包装物品(礼物) |
| 6xD7 | on_photon_drop_exchange_for_item_bb | 光子液兑换物品 |
| 6xD8 | on_photon_drop_exchange_for_s_rank_special_bb | 光子液兑换 S 级特殊 |
| 6xD9 | on_momoka_item_exchange_bb | Momoka 物品兑换 |
| 6xDA | on_upgrade_weapon_attribute_bb | 升级武器属性 |
| 6xDE | on_secret_lottery_ticket_exchange_bb | 秘密抽奖券兑换 |
| 6xDF | on_photon_crystal_exchange_bb | 光子晶体兑换 |
| 6xE0 | on_quest_F95E_result_bb | 任务 F95E 结果 |
| 6xE1 | on_quest_F95F_result_bb | 任务 F95F 结果 |
| 6xE2 | on_quest_F960_result_bb | 任务 F960 结果 |
EP3 卡牌对战子命令
| 子操作码 | 处理函数 | 说明 |
|---|
| 6xBC | on_ep3_trade_card_counts | EP3 交易卡牌数量 |
| 6xBF | on_forward_check_ep3_lobby | EP3 大厅转发 |
Xbox 专属
| 子操作码 | 处理函数 | 说明 |
|---|
| 6xB3 | on_xbox_voice_chat_control | Xbox 语音聊天控制 |
| 6xB4 | on_xbox_voice_chat_control | Xbox 语音聊天控制 |
调试
| 子操作码 | 处理函数 | 说明 |
|---|
| 6xFF | on_debug_info | 调试信息(扩展子命令,用于调试补丁) |
汇总
已定义子命令总数:256(0x00–0xFF)
- 有效处理函数(非
on_invalid):约 160 个 - 仅转发(无服务器端逻辑):约 60 个
- 服务器端处理:约 100 个
Game Subcommands Reference (0x60/0x62/0x6C/0x6D)
Game subcommands are carried inside the main protocol commands 0x60 (broadcast), 0x62 (to specific player), 0x6C (extended broadcast), 0x6D (extended to specific player). Each subcommand has a 1-byte sub-opcode (0x00-0xFF).
Subcommand Header Format
Standard header: 4 bytes — subcommand(1), size_in_dwords(1), data...
Extended header (size=0): 8 bytes — subcommand(1), 0x00, extended_size(4), data...
Version Mapping
Each subcommand has three opcode columns:
- DC NTE — Dreamcast Network Trial Edition
- DC 11/2000 — Dreamcast prototype (Nov 2000)
- Final — All other versions (DCV1, DCV2, PC, GC, EP3, XB, BB)
NONE means the subcommand does not exist for that version.
Player Movement & Position
| Sub-opcode | Handler | Description |
|---|
| 6x1F | on_change_floor | Change floor (includes teleport/pipe transitions) |
| 6x20 | on_movement_xyz_with_floor | Set position with floor (SetPosition) |
| 6x21 | on_change_floor | Change floor (alternate) |
| 6x24 | on_movement_xyz | Teleport player to XYZ position |
| 6x3E | on_movement_xyz_with_floor | Stop at position |
| 6x3F | on_movement_xyz_with_floor | Set position (alternate) |
| 6x40 | on_movement_xz | Walk to position (XZ plane) |
| 6x41 | on_movement_xz | Run/move to position |
| 6x42 | on_movement_xz | Run/move to position (alternate) |
| 6x55 | on_movement_xyz | Intra-map warp |
| 6x56 | on_movement_xyz | Set player position and angle |
| 6x94 | on_warp | Warp to another area |
Player State & Animation
| Sub-opcode | Handler | Description |
|---|
| 6x02 | forward_subcommand_m | (basic forward) |
| 6x03 | forward_subcommand_m | (basic forward) |
| 6x04 | forward_subcommand_m | (basic forward) |
| 6x05 | on_switch_state_changed | Switch state changed |
| 6x0C | on_received_condition | Received negative condition (status effect) |
| 6x0E | forward (entity_id_transcode) | Clear negative status effects |
| 6x17 | on_set_entity_pos_and_angle | Set entity position and angle |
| 6x23 | on_set_player_visible | Set player visible |
| 6x2F | on_change_hp | Change player HP |
| 6x30 | on_level_up | Player level up |
| 6x4A | on_change_hp | Change HP (variant) |
| 6x4B | on_change_hp | Change HP (variant) |
| 6x4C | on_change_hp | Change HP (variant) |
| 6x4D | on_player_died | Player died |
| 6x4E | on_player_revivable | Player became revivable |
| 6x4F | on_player_revived | Player revived |
| 6x52 | on_set_animation_state | Set animation state |
Item & Inventory Operations
| Sub-opcode | Handler | Description |
|---|
| 6x25 | on_equip_item | Equip item |
| 6x26 | on_unequip_item | Unequip item |
| 6x27 | on_use_item | Use item (consume) |
| 6x28 | on_feed_mag | Feed MAG |
| 6x29 | on_destroy_inventory_item | Destroy item in inventory |
| 6x2A | on_player_drop_item | Player drops item to floor |
| 6x2B | on_create_inventory_item | Create item in inventory |
| 6x59 | on_pick_up_item | Pick up item (confirmed) |
| 6x5A | on_pick_up_item_request | Pick up item request |
| 6x5C | on_destroy_floor_item | Destroy floor item |
| 6x5D | on_drop_partial_stack | Drop partial stack of items |
| 6x5E | on_buy_shop_item | Buy item from shop |
| 6x5F | on_box_or_enemy_item_drop | Box/enemy item drop notification |
| 6x60 | on_entity_drop_item_request | Entity drop item request |
| 6x63 | on_destroy_floor_item | Destroy floor item (alternate) |
| 6xA2 | on_entity_drop_item_request | Entity drop item request (alternate) |
Combat & Attack
| Sub-opcode | Handler | Description |
|---|
| 6x46 | forward (entity_targets_transcode) | Attack finished (hit targets) |
| 6x47 | forward (entity_targets_transcode) | Cast technique (hit targets) |
| 6x48 | on_cast_technique_finished | Technique cast finished |
| 6x49 | forward (entity_targets_transcode) | Execute photon blast (hit targets) |
| 6x89 | forward (entity_id_transcode) | Set killer entity ID |
| 6x8F | forward (entity_id_transcode) | Add battle damage scores |
| 6x91 | on_update_attackable_col_state | Update attackable collision state |
| 6xE4 | on_incr_enemy_damage | Increment enemy damage (extended) |
Boss Actions
| Sub-opcode | Handler | Description |
|---|
| 6x10 | forward (entity_id_transcode) | Dragon boss actions |
| 6x11 | forward (entity_id_transcode) | Dragon boss actions (alt) |
| 6x12 | on_dragon_actions | Dragon actions (special) |
| 6x13 | forward (entity_id_transcode) | De Rol Le boss actions |
| 6x14 | forward (entity_id_transcode) | De Rol Le boss actions with target |
| 6x15 | forward (entity_id_transcode) | Vol Opt boss actions |
| 6x16 | on_vol_opt_actions | Vol Opt boss actions (special) |
| 6x18 | forward (entity_id_transcode) | Vol Opt Phase 2 boss actions |
| 6x19 | forward (entity_id_transcode) | Dark Falz actions |
| 6x84 | on_vol_opt_actions | Vol Opt boss actions (V2+) |
| 6x9F | forward (entity_id_transcode) | Gal Gryphon boss actions |
| 6xA0 | forward (entity_id_transcode) | Gal Gryphon boss actions (alt) |
| 6xA3 | forward (entity_id_transcode) | Olga Flow boss actions |
| 6xA4 | forward (entity_id_transcode) | Olga Flow boss actions (alt) |
| 6xA5 | forward (entity_id_transcode) | Olga Flow boss actions (alt 2) |
| 6xA8 | on_gol_dragon_actions | Gol Dragon actions |
| 6xA9 | forward (entity_id_transcode) | Barba Ray boss actions |
| 6xAA | forward (entity_id_transcode) | Barba Ray boss actions (alt) |
Enemy & Object State
| Sub-opcode | Handler | Description |
|---|
| 6x0A | on_update_enemy_state | Update enemy state |
| 6x0B | on_update_object_state | Update object state |
| 6x76 | on_set_entity_set_flag | Set entity set flag |
| 6x86 | on_update_object_state | Hit destructible object |
| 6x9C | on_set_enemy_low_game_flags_ultimate | Set enemy flags (Ultimate difficulty) |
Game Sync & Join
| Sub-opcode | Handler | Description |
|---|
| 6x6B | on_sync_joining_player_compressed_state | Sync joining player state (compressed, player 0) |
| 6x6C | on_sync_joining_player_compressed_state | Sync joining player state (compressed, player 1) |
| 6x6D | on_sync_joining_player_compressed_state | Sync joining player state (compressed, player 2) |
| 6x6E | on_sync_joining_player_compressed_state | Sync joining player state (compressed, player 3) |
| 6x6F | on_sync_joining_player_quest_flags | Sync joining player quest flags |
| 6x70 | on_sync_joining_player_disp_and_inventory | Sync joining player display data and inventory |
Event & Map Triggers
| Sub-opcode | Handler | Description |
|---|
| 6x67 | on_trigger_set_event | Trigger set event |
| 6x68 | on_update_telepipe_state | Update telepipe state |
| 6x69 | on_npc_control | NPC control |
| 6x6A | on_set_boss_warp_flags | Set boss warp flags |
| 6x75 | on_set_quest_flag | Set quest flag |
| 6x77 | on_sync_quest_register | Sync quest register |
| 6x93 | on_activate_timed_switch | Activate timed switch |
Communication
| Sub-opcode | Handler | Description |
|---|
| 6x06 | on_send_guild_card | Send guild card to another player |
| 6x07 | on_symbol_chat | Symbol chat |
| 6x74 | on_word_select | Word select (predefined phrases) |
| 6xBD | on_ep3_private_word_select_bb_bank_action | EP3 private word select / BB bank action |
| 6xB2 | on_play_sound_from_player | Play sound effect from player |
Challenge & Battle Mode
| Sub-opcode | Handler | Description |
|---|
| 6x7C | on_challenge_update_records | Update challenge mode records |
| 6x7D | on_update_battle_data | Update battle mode data |
| 6x7F | on_battle_scores | Battle mode scores |
| 6x97 | on_challenge_mode_retry_or_quit | Challenge mode retry or quit |
| 6xCF | on_battle_restart_bb | Battle mode restart (BB) |
| 6xD0 | on_battle_level_up_bb | Battle mode level up (BB) |
| 6xD1 | on_request_challenge_grave_recovery_item_bb | Challenge grave recovery item (BB) |
BB-Specific Subcommands
| Sub-opcode | Handler | Description |
|---|
| 6xB5 | on_open_shop_bb_or_ep3_battle_subs | Open shop (BB) / EP3 battle subs |
| 6xB7 | on_buy_shop_item_bb | Buy shop item (BB) |
| 6xB8 | on_identify_item_bb | Identify item (Tekker) |
| 6xBA | on_accept_identify_item_bb | Accept identified item |
| 6xBB | on_open_bank_bb_or_card_trade_counter_ep3 | Open bank (BB) / Card trade counter (EP3) |
| 6xC0 | on_sell_item_at_shop_bb | Sell item at shop |
| 6xC3 | on_drop_partial_stack_bb | Drop partial stack |
| 6xC4 | on_sort_inventory_bb | Sort inventory |
| 6xC5 | on_medical_center_bb | Medical center (heal) |
| 6xC6 | on_steal_exp_bb | Steal EXP (weapon special) |
| 6xC7 | on_charge_attack_bb | Charge attack (weapon special) |
| 6xC8 | on_enemy_exp_request_bb | Enemy EXP request |
| 6xC9 | on_adjust_player_meseta_bb | Adjust player meseta |
| 6xCA | on_quest_create_item_bb | Quest create item |
| 6xCB | on_transfer_item_via_mail_message_bb | Transfer item via mail |
| 6xCC | on_exchange_item_for_team_points_bb | Exchange item for team points |
| 6xD2 | on_write_quest_counter_bb | Write quest counter |
| 6xD5 | on_quest_exchange_item_bb | Quest exchange item |
| 6xD6 | on_wrap_item_bb | Wrap item (present) |
| 6xD7 | on_photon_drop_exchange_for_item_bb | Photon Drop exchange for item |
| 6xD8 | on_photon_drop_exchange_for_s_rank_special_bb | Photon Drop exchange for S-Rank special |
| 6xD9 | on_momoka_item_exchange_bb | Momoka item exchange |
| 6xDA | on_upgrade_weapon_attribute_bb | Upgrade weapon attribute |
| 6xDE | on_secret_lottery_ticket_exchange_bb | Secret lottery ticket exchange |
| 6xDF | on_photon_crystal_exchange_bb | Photon Crystal exchange |
| 6xE0 | on_quest_F95E_result_bb | Quest F95E result |
| 6xE1 | on_quest_F95F_result_bb | Quest F95F result |
| 6xE2 | on_quest_F960_result_bb | Quest F960 result |
EP3 Card Battle Subcommands
| Sub-opcode | Handler | Description |
|---|
| 6xBC | on_ep3_trade_card_counts | EP3 trade card counts |
| 6xBF | on_forward_check_ep3_lobby | EP3 lobby forward |
Xbox-Specific
| Sub-opcode | Handler | Description |
|---|
| 6xB3 | on_xbox_voice_chat_control | Xbox voice chat control |
| 6xB4 | on_xbox_voice_chat_control | Xbox voice chat control |
Debug
| Sub-opcode | Handler | Description |
|---|
| 6xFF | on_debug_info | Debug info (extended subcommand, used for debugging patches) |
Summary
Total subcommands defined: 256 (0x00-0xFF)
- Active handlers (not
on_invalid): ~160 - Forward-only (no server-side logic): ~60
- Server-side processing: ~100