Protocol Reference

← Back to Home
This page is compiled from the docs/ directory of newserv. It covers the PSOBB network protocol between the client and server and in-game subcommands (0x60/0x62/0x6C/0x6D payloads). Opcodes and handler names are kept in English to match source code and packet captures.

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:

ColumnVersion
1PC_PATCH
2BB_PATCH
3DC_NTE
4DC_112000
5DCV1
6DCV2
7PC_NTE
8PC
9GCNTE
10GC
11EP3TE
12EP3
13XB
14BB

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)

OpcodeDirectionNameDescription
0x02S→CServerInit_PatchServer initialization for patch connection
0x02C→S(response)Client acknowledges patch server init
0x04S→C(request login)Server requests user's login information
0x04C→SLogin_PatchClient sends username, password, email
0x06S→COpenFile_PatchOpen a file for patching
0x07S→CWriteFileHeader_PatchWrite file header during patching
0x08S→CCloseCurrentFile_PatchClose current file being patched
0x09S→CEnterDirectory_PatchEnter a directory during patching
0x0CS→CFileChecksumRequest_PatchRequest file checksum from client
0x0FC→SFileInformation_PatchClient responds with file checksum/size
0x10C→S(all checksums done)Client finished responding to all checksum requests
0x11S→CStartFileDownloads_PatchBegin file downloads

Login & Authentication Commands

OpcodeDirectionHandlerVersionsDescription
0x02/0x17S→C—DC/PC/V3Server initialization (encryption setup)
0x03S→C—BBServer initialization for BB
0x05C→Son_05_XBXBXbox disconnect (quit game)
0x05C→Son_ignoredOthersIgnored (encryption ack)
0x88C→Son_88_DCNTEDC_NTEDC NTE login
0x8BC→Son_8B_DCNTEDC_NTEDC NTE extended login
0x90C→Son_90_DCDCDC V1 login
0x91S→C—DC/PC/V3Server init (alternate)
0x92C→Son_92_DCDCDC V1 registration
0x93C→Son_93_DCDCDC V1 login with hardware info
0x93C→Son_93_BBBBBB login (multiple sub-formats)
0x9AC→Son_9ADC/PC/V3Login with V1 serial + V2 serial
0x9BS→C—AllServer init (alternate)
0x9CC→Son_9CDC/PC/V3/BBRegistration
0x9DC→Son_9D_9EDC/PC/GCLogin (DC/PC/GC format)
0x9EC→Son_9D_9EPC/GCLogin (extended format)
0x9EC→Son_9E_XBXBXbox login
0xDBC→Son_DB_V3V3Verify account (V3)

Navigation & Menu Commands

OpcodeDirectionHandlerDescription
0x07S→C—Menu items list
0x08C→Son_08_E6Request game list
0x09C→Son_09Request menu item info (quest/game/lobby details)
0x0ES→C—Legacy join game
0x10C→Son_10Menu selection (main menu, game list, quest list, etc.)
0x1FC→Son_1FRequest information menu
0x84C→Son_84Lobby selection
0xA0C→Son_A0Ship change (return to ship select)
0xA1C→Son_A1Block change (treated same as ship change)
0xD6C→Son_D6_V3Request info board / welcome message (V3)
0xE6C→Son_08_E6Request spectator team list (BB)

Lobby & Player Management

OpcodeDirectionHandlerDescription
0x61C→Son_61_98Send player data (character data)
0x64S→C—Join game notification
0x65/0x67/0x68S→C—Join lobby notification
0x66/0x69S→C—Leave lobby notification
0x83S→C—Lobby list
0x88S→C—Arrow update (lobby arrows)
0x95S→C—Set guild card number
0x96C→Son_96Character save info
0x98C→Son_61_98Leave game (send player data)
0xC1S→C—Create game

Game Commands & Subcommands

OpcodeDirectionHandlerDescription
0x60C→S/S→Con_6x_C9_CBGame subcommand (broadcast to room)
0x62C→S/S→Con_6x_C9_CBGame subcommand (to specific player)
0x6CC→S/S→Con_6x_C9_CBExtended game subcommand (broadcast)
0x6DC→S/S→Con_6x_C9_CBExtended game subcommand (to specific player)
0xC9C→Son_6x_C9_CB / on_C9_XBGame subcommand (EP3/XB variant)
0xCBC→Son_6x_C9_CBGame subcommand (EP3 variant)
0x30C→Son_30Create game

Chat & Communication

OpcodeDirectionHandlerDescription
0x01S→C—Send text message to client
0x06C→Son_06Chat message / chat command
0x11S→C—System message (scrolling on BB)
0x1AS→C—Message box
0x40C→S/S→C—Guild card search
0xB0S→C—Text message (scrolling)
0xC0C→Son_C0Broadcast symbol chat
0xC1C→Son_C1_PC / on_C1_BBCreate game (PC/BB)
0xC2C→Son_C2Symbol chat
0xD8S→C/C→Son_D8Info board

Quest System

OpcodeDirectionHandlerDescription
0xA2C→Son_A2Quest list request
0xA2/0xA4S→C—Quest menu entries
0x44/0xA6S→C—Open quest file
0x13/0xA7C→Son_13_A7_V3_V4Quest file write confirmation
0xA9C→Son_A9Quest selection cancelled
0xAAC→Son_AAUpdate quest statistics
0xABS→C—Call quest label
0xACC→Son_AC_V3_BBQuest file loaded / joinable quest ready
0xB2S→C—Execute code (send function to client)
0xB3C→Son_B3Execute code result (function call response)

Server System Commands

OpcodeDirectionHandlerDescription
0x04S→C—Update client config
0x19S→C—Reconnect (redirect to another server)
0x1DC→Son_1DPing response
0xB1C→Son_B1Request server time
0xB1S→C—Server time response
0xDES→C—Rare monster list (BB)
0xEFS→C—Set shutdown command (BB)

BB-Specific Commands

OpcodeDirectionHandlerDescription
0xDCC→Son_DC_BBGuild card data request
0xDC (01)S→C—Guild card header
0xDC (02)S→C—Guild card file chunk
0xDFC→Son_DF_BBChallenge mode settings
0xE0C→Son_E0_BBRequest system file
0xE1S→C—System file created notification
0xE2C→Son_E2_BBSync system file
0xE3C→Son_E3_BBPlayer preview request / character select
0xE4S→C—Approve player choice / player preview
0xE5C→Son_E5_BBCreate character
0xE6S→C—Client init (BB)
0xE7C→Son_E7_BBSync save files
0xE8C→Son_E8_BBGuild card operations (add/delete/comment/sort)
0xEAC→Son_EA_BBTeam commands (create/disband/add/remove members, etc.)
0xEBC→Son_EB_BBStream file operations (index/chunk)
0xECC→Son_EC_BBLeave character select
0xEDC→Son_ED_BBUpdate settings (options/symbol chats/shortcuts/key config/pad config/tech menu/customize/challenge records)

BB Team Sub-Commands (0xEA)

Sub-opcodeDirectionDescription
0x01EAC→SCreate team
0x03EAC→SAdd team member
0x05EAC→SRemove team member
0x09EAS→CTeam member list
0x0FEAC→SSet team flag
0x11EAC→SChange team member privilege level
0x12EAS→CUpdate team membership
0x13EAS→CTeam info for player (all lobby clients)
0x15EAS→CTeam info for player (single client)
0x18EAS→CIntra-team ranking
0x19EAS→CTeam reward list
0x1AEAS→CTeam reward list (purchased)
0x1CEAS→CCross-team ranking
0x1DEAS→CUpdate team reward flags
0x1EEAC→SRename team

Episode 3 (Card Battle) Commands

OpcodeDirectionHandlerDescription
0xB7C→Son_B7_Ep3Request EP3 rank/music update
0xB7S→C—Rank update
0xB9S→C—Media update (maps, card definitions, etc.)
0xBAC→Son_BA_Ep3Meseta transaction (buy/sell cards at shop)
0xBAS→C—Meseta transaction result
0xBBS→C—Tournament spectator team list
0xCAC→Son_CA_Ep3Card battle server data (game commands)
0xCCS→C—Confirm tournament entry
0xDCC→Son_DC_Ep3Request tournament list (EP3)
0xE0S→C—Tournament list
0xE1S→C—Game information
0xE2C→Son_E2_Ep3Tournament operations (list/check/enter/withdraw)
0xE2S→C—Tournament entry list
0xE3S→C—Tournament game details
0xE4C→Son_E4_Ep3Card battle table state update
0xE4S→C—Card battle table state
0xE5C→Son_E5_Ep3Card battle table confirmation
0xE5S→C—Card battle table confirmation response
0xE6C→S—Join spectator team
0xE7C→S—Create spectator team
0xE8S→C—Join spectator team response
0xE9S→C—Leave spectator team
0xEAS→C—Timed message box
0xEEC→Son_EE_Ep3Card trade operations
0xEES→C—Card trade state advance / complete
0xEFC→Son_EF_Ep3Card auction
0xEFS→C—Start card auction

GC/Xbox-Specific Commands

OpcodeDirectionHandlerDescription
0xD7C→Son_D7_GCGBA game file request (GC)
0xD0C→Son_D0_V3_BBChoice search criteria update (V3/BB)
0xD2C→Son_D2_V3_BBChoice search request (V3/BB)
0xD4C→Son_D4_V3_BBChoice search result select (V3/BB)

DC NTE-Specific Commands

OpcodeDirectionHandlerDescription
0x88C→Son_88_DCNTELogin
0x8AC→Son_8AConnection info
0x8BC→Son_8B_DCNTEExtended login
0x8EC→Son_8E_DCNTEShip change (maps to 0xA0)
0x8FC→Son_8F_DCNTEBlock change (maps to 0xA1)

Item & Shop Commands

OpcodeDirectionDescription
0x24S→CExchange secret lottery ticket result (BB)
0x25S→CGallon plan result (BB)

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-opcodeHandlerDescription
6x1Fon_change_floorChange floor (includes teleport/pipe transitions)
6x20on_movement_xyz_with_floorSet position with floor (SetPosition)
6x21on_change_floorChange floor (alternate)
6x24on_movement_xyzTeleport player to XYZ position
6x3Eon_movement_xyz_with_floorStop at position
6x3Fon_movement_xyz_with_floorSet position (alternate)
6x40on_movement_xzWalk to position (XZ plane)
6x41on_movement_xzRun/move to position
6x42on_movement_xzRun/move to position (alternate)
6x55on_movement_xyzIntra-map warp
6x56on_movement_xyzSet player position and angle
6x94on_warpWarp to another area

Player State & Animation

Sub-opcodeHandlerDescription
6x02forward_subcommand_m(basic forward)
6x03forward_subcommand_m(basic forward)
6x04forward_subcommand_m(basic forward)
6x05on_switch_state_changedSwitch state changed
6x0Con_received_conditionReceived negative condition (status effect)
6x0Eforward (entity_id_transcode)Clear negative status effects
6x17on_set_entity_pos_and_angleSet entity position and angle
6x23on_set_player_visibleSet player visible
6x2Fon_change_hpChange player HP
6x30on_level_upPlayer level up
6x4Aon_change_hpChange HP (variant)
6x4Bon_change_hpChange HP (variant)
6x4Con_change_hpChange HP (variant)
6x4Don_player_diedPlayer died
6x4Eon_player_revivablePlayer became revivable
6x4Fon_player_revivedPlayer revived
6x52on_set_animation_stateSet animation state

Item & Inventory Operations

Sub-opcodeHandlerDescription
6x25on_equip_itemEquip item
6x26on_unequip_itemUnequip item
6x27on_use_itemUse item (consume)
6x28on_feed_magFeed MAG
6x29on_destroy_inventory_itemDestroy item in inventory
6x2Aon_player_drop_itemPlayer drops item to floor
6x2Bon_create_inventory_itemCreate item in inventory
6x59on_pick_up_itemPick up item (confirmed)
6x5Aon_pick_up_item_requestPick up item request
6x5Con_destroy_floor_itemDestroy floor item
6x5Don_drop_partial_stackDrop partial stack of items
6x5Eon_buy_shop_itemBuy item from shop
6x5Fon_box_or_enemy_item_dropBox/enemy item drop notification
6x60on_entity_drop_item_requestEntity drop item request
6x63on_destroy_floor_itemDestroy floor item (alternate)
6xA2on_entity_drop_item_requestEntity drop item request (alternate)

Combat & Attack

Sub-opcodeHandlerDescription
6x46forward (entity_targets_transcode)Attack finished (hit targets)
6x47forward (entity_targets_transcode)Cast technique (hit targets)
6x48on_cast_technique_finishedTechnique cast finished
6x49forward (entity_targets_transcode)Execute photon blast (hit targets)
6x89forward (entity_id_transcode)Set killer entity ID
6x8Fforward (entity_id_transcode)Add battle damage scores
6x91on_update_attackable_col_stateUpdate attackable collision state
6xE4on_incr_enemy_damageIncrement enemy damage (extended)

Boss Actions

Sub-opcodeHandlerDescription
6x10forward (entity_id_transcode)Dragon boss actions
6x11forward (entity_id_transcode)Dragon boss actions (alt)
6x12on_dragon_actionsDragon actions (special)
6x13forward (entity_id_transcode)De Rol Le boss actions
6x14forward (entity_id_transcode)De Rol Le boss actions with target
6x15forward (entity_id_transcode)Vol Opt boss actions
6x16on_vol_opt_actionsVol Opt boss actions (special)
6x18forward (entity_id_transcode)Vol Opt Phase 2 boss actions
6x19forward (entity_id_transcode)Dark Falz actions
6x84on_vol_opt_actionsVol Opt boss actions (V2+)
6x9Fforward (entity_id_transcode)Gal Gryphon boss actions
6xA0forward (entity_id_transcode)Gal Gryphon boss actions (alt)
6xA3forward (entity_id_transcode)Olga Flow boss actions
6xA4forward (entity_id_transcode)Olga Flow boss actions (alt)
6xA5forward (entity_id_transcode)Olga Flow boss actions (alt 2)
6xA8on_gol_dragon_actionsGol Dragon actions
6xA9forward (entity_id_transcode)Barba Ray boss actions
6xAAforward (entity_id_transcode)Barba Ray boss actions (alt)

Enemy & Object State

Sub-opcodeHandlerDescription
6x0Aon_update_enemy_stateUpdate enemy state
6x0Bon_update_object_stateUpdate object state
6x76on_set_entity_set_flagSet entity set flag
6x86on_update_object_stateHit destructible object
6x9Con_set_enemy_low_game_flags_ultimateSet enemy flags (Ultimate difficulty)

Game Sync & Join

Sub-opcodeHandlerDescription
6x6Bon_sync_joining_player_compressed_stateSync joining player state (compressed, player 0)
6x6Con_sync_joining_player_compressed_stateSync joining player state (compressed, player 1)
6x6Don_sync_joining_player_compressed_stateSync joining player state (compressed, player 2)
6x6Eon_sync_joining_player_compressed_stateSync joining player state (compressed, player 3)
6x6Fon_sync_joining_player_quest_flagsSync joining player quest flags
6x70on_sync_joining_player_disp_and_inventorySync joining player display data and inventory

Event & Map Triggers

Sub-opcodeHandlerDescription
6x67on_trigger_set_eventTrigger set event
6x68on_update_telepipe_stateUpdate telepipe state
6x69on_npc_controlNPC control
6x6Aon_set_boss_warp_flagsSet boss warp flags
6x75on_set_quest_flagSet quest flag
6x77on_sync_quest_registerSync quest register
6x93on_activate_timed_switchActivate timed switch

Communication

Sub-opcodeHandlerDescription
6x06on_send_guild_cardSend guild card to another player
6x07on_symbol_chatSymbol chat
6x74on_word_selectWord select (predefined phrases)
6xBDon_ep3_private_word_select_bb_bank_actionEP3 private word select / BB bank action
6xB2on_play_sound_from_playerPlay sound effect from player

Challenge & Battle Mode

Sub-opcodeHandlerDescription
6x7Con_challenge_update_recordsUpdate challenge mode records
6x7Don_update_battle_dataUpdate battle mode data
6x7Fon_battle_scoresBattle mode scores
6x97on_challenge_mode_retry_or_quitChallenge mode retry or quit
6xCFon_battle_restart_bbBattle mode restart (BB)
6xD0on_battle_level_up_bbBattle mode level up (BB)
6xD1on_request_challenge_grave_recovery_item_bbChallenge grave recovery item (BB)

BB-Specific Subcommands

Sub-opcodeHandlerDescription
6xB5on_open_shop_bb_or_ep3_battle_subsOpen shop (BB) / EP3 battle subs
6xB7on_buy_shop_item_bbBuy shop item (BB)
6xB8on_identify_item_bbIdentify item (Tekker)
6xBAon_accept_identify_item_bbAccept identified item
6xBBon_open_bank_bb_or_card_trade_counter_ep3Open bank (BB) / Card trade counter (EP3)
6xC0on_sell_item_at_shop_bbSell item at shop
6xC3on_drop_partial_stack_bbDrop partial stack
6xC4on_sort_inventory_bbSort inventory
6xC5on_medical_center_bbMedical center (heal)
6xC6on_steal_exp_bbSteal EXP (weapon special)
6xC7on_charge_attack_bbCharge attack (weapon special)
6xC8on_enemy_exp_request_bbEnemy EXP request
6xC9on_adjust_player_meseta_bbAdjust player meseta
6xCAon_quest_create_item_bbQuest create item
6xCBon_transfer_item_via_mail_message_bbTransfer item via mail
6xCCon_exchange_item_for_team_points_bbExchange item for team points
6xD2on_write_quest_counter_bbWrite quest counter
6xD5on_quest_exchange_item_bbQuest exchange item
6xD6on_wrap_item_bbWrap item (present)
6xD7on_photon_drop_exchange_for_item_bbPhoton Drop exchange for item
6xD8on_photon_drop_exchange_for_s_rank_special_bbPhoton Drop exchange for S-Rank special
6xD9on_momoka_item_exchange_bbMomoka item exchange
6xDAon_upgrade_weapon_attribute_bbUpgrade weapon attribute
6xDEon_secret_lottery_ticket_exchange_bbSecret lottery ticket exchange
6xDFon_photon_crystal_exchange_bbPhoton Crystal exchange
6xE0on_quest_F95E_result_bbQuest F95E result
6xE1on_quest_F95F_result_bbQuest F95F result
6xE2on_quest_F960_result_bbQuest F960 result

EP3 Card Battle Subcommands

Sub-opcodeHandlerDescription
6xBCon_ep3_trade_card_countsEP3 trade card counts
6xBFon_forward_check_ep3_lobbyEP3 lobby forward

Xbox-Specific

Sub-opcodeHandlerDescription
6xB3on_xbox_voice_chat_controlXbox voice chat control
6xB4on_xbox_voice_chat_controlXbox voice chat control

Debug

Sub-opcodeHandlerDescription
6xFFon_debug_infoDebug 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