rewrite subcommand list, add some comments

This commit is contained in:
Martin Michelsen
2022-03-26 23:59:58 -07:00
parent 0bcd76d909
commit 3aeb121b00
+256 -272
View File
@@ -917,278 +917,262 @@ typedef void (*subcommand_handler_t)(shared_ptr<ServerState> s,
const PSOSubcommand* p, size_t count);
subcommand_handler_t subcommand_handlers[0x100] = {
// 00
process_subcommand_invalid,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_game,
process_subcommand_send_guild_card,
process_subcommand_symbol_chat,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_monster_hit,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
// 10
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size_game,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size_game,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size,
// 20
process_subcommand_forward_check_size,
process_subcommand_change_area, // Inter-level warp
process_subcommand_forward_check_size_client,
process_subcommand_forward_check_size_client,
process_subcommand_forward_check_size_game,
process_subcommand_equip_unequip_item, // Equip item
process_subcommand_equip_unequip_item, // Unequip item
process_subcommand_use_item,
process_subcommand_forward_check_size_game, // Feed MAG
process_subcommand_forward_check_size_game,
process_subcommand_drop_item,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size, // Talk to NPC
process_subcommand_forward_check_size, // Done talking to NPC
process_subcommand_unimplemented,
process_subcommand_hit_by_monster,
// 30
process_subcommand_forward_check_size_game, // level-up
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size_game, // revive player, only confirmed with moon atomizer
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_game,
process_subcommand_forward_check_size_game, // photon blast
process_subcommand_unimplemented,
process_subcommand_forward_check_size_game, // photon blast ready
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size, // Stop moving
process_subcommand_forward_check_size,
// 40
process_subcommand_forward_check_size, // Walk
process_subcommand_unimplemented,
process_subcommand_forward_check_size, // Run
process_subcommand_forward_check_size_client,
process_subcommand_forward_check_size_client,
process_subcommand_forward_check_size_client,
process_subcommand_forward_check_size_client,
process_subcommand_forward_check_size_client,
process_subcommand_use_technique,
process_subcommand_forward_check_size_client,
process_subcommand_forward_check_size_client,
process_subcommand_hit_by_monster,
process_subcommand_hit_by_monster,
process_subcommand_forward_check_size_client,
process_subcommand_forward_check_size_client,
process_subcommand_forward_check_size_client,
// 50
process_subcommand_forward_check_size_client,
process_subcommand_unimplemented,
process_subcommand_forward_check_size, // Toggle shop/bank interaction
process_subcommand_forward_check_size_game,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_client, // Intra-map warp
process_subcommand_forward_check_size_client,
process_subcommand_forward_check_size_client,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size_game,
process_subcommand_pick_up_item,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_game, // drop meseta
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size_game,
// 60
process_subcommand_enemy_drop_item,
process_subcommand_forward_check_size_game, // feed mag
process_subcommand_unimplemented,
process_subcommand_destroy_item,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size_game,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_game_loading,
process_subcommand_forward_check_game_loading,
process_subcommand_forward_check_game_loading,
process_subcommand_forward_check_game_loading,
process_subcommand_forward_check_game_loading,
// 70
process_subcommand_forward_check_game_loading,
process_subcommand_forward_check_game_loading,
process_subcommand_forward_check_game_loading,
process_subcommand_invalid,
process_subcommand_word_select,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size,
process_subcommand_unimplemented,
process_subcommand_forward_check_size,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_game,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
// 80
process_subcommand_forward_check_size_game, // trigger trap
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_game, // place trap
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size_game,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_game,
process_subcommand_forward_check_size_game,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_client,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
// 90
process_subcommand_unimplemented,
process_subcommand_forward_check_size_game,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_game,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
// A0
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_box_drop_item,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size, // trade proposal
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_client,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_client,
process_subcommand_forward_check_size_client,
// B0
process_subcommand_forward_check_size_client,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_open_shop_or_ep3_unknown,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_identify_item,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_open_bank,
process_subcommand_unimplemented,
process_subcommand_bank_action,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_ep3_lobby,
// C0
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_drop_stacked_item,
process_subcommand_sort_inventory,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_monster_killed,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_forward_check_size_game,
// D0
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
// E0
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
// F0
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
process_subcommand_unimplemented,
/* 00 */ process_subcommand_invalid,
/* 01 */ process_subcommand_unimplemented,
/* 02 */ process_subcommand_unimplemented,
/* 03 */ process_subcommand_unimplemented,
/* 04 */ process_subcommand_unimplemented,
/* 05 */ process_subcommand_forward_check_size_game, // Switch flipped (door lock / lights / poison gas)
/* 06 */ process_subcommand_send_guild_card,
/* 07 */ process_subcommand_symbol_chat,
/* 08 */ process_subcommand_unimplemented,
/* 09 */ process_subcommand_unimplemented,
/* 0A */ process_subcommand_monster_hit,
/* 0B */ process_subcommand_forward_check_size_game, // Box destroyed
/* 0C */ process_subcommand_forward_check_size_game,
/* 0D */ process_subcommand_forward_check_size,
/* 0E */ process_subcommand_unimplemented,
/* 0F */ process_subcommand_unimplemented,
/* 10 */ process_subcommand_unimplemented,
/* 11 */ process_subcommand_unimplemented,
/* 12 */ process_subcommand_forward_check_size_game,
/* 13 */ process_subcommand_forward_check_size_game,
/* 14 */ process_subcommand_forward_check_size_game,
/* 15 */ process_subcommand_forward_check_size_game,
/* 16 */ process_subcommand_unimplemented,
/* 17 */ process_subcommand_forward_check_size_game,
/* 18 */ process_subcommand_forward_check_size_game,
/* 19 */ process_subcommand_forward_check_size_game,
/* 1A */ process_subcommand_unimplemented,
/* 1B */ process_subcommand_unimplemented,
/* 1C */ process_subcommand_unimplemented,
/* 1D */ process_subcommand_unimplemented,
/* 1E */ process_subcommand_unimplemented,
/* 1F */ process_subcommand_forward_check_size,
/* 20 */ process_subcommand_forward_check_size,
/* 21 */ process_subcommand_change_area, // Inter-level warp
/* 22 */ process_subcommand_forward_check_size_client, // Set player visibility
/* 23 */ process_subcommand_forward_check_size_client, // Set player visibility
/* 24 */ process_subcommand_forward_check_size_game,
/* 25 */ process_subcommand_equip_unequip_item, // Equip item
/* 26 */ process_subcommand_equip_unequip_item, // Unequip item
/* 27 */ process_subcommand_use_item,
/* 28 */ process_subcommand_forward_check_size_game, // Feed MAG
/* 29 */ process_subcommand_forward_check_size_game, // Delete item (via bank deposit / sale / feeding MAG)
/* 2A */ process_subcommand_drop_item,
/* 2B */ process_subcommand_forward_check_size_game,
/* 2C */ process_subcommand_forward_check_size, // Talk to NPC
/* 2D */ process_subcommand_forward_check_size, // Done talking to NPC
/* 2E */ process_subcommand_unimplemented,
/* 2F */ process_subcommand_hit_by_monster,
/* 30 */ process_subcommand_forward_check_size_game, // Level up
/* 31 */ process_subcommand_forward_check_size_game, // Medical center
/* 32 */ process_subcommand_forward_check_size_game, // Medical center
/* 33 */ process_subcommand_forward_check_size_game, // Revive player (only confirmed with moon atomizer)
/* 34 */ process_subcommand_unimplemented,
/* 35 */ process_subcommand_unimplemented,
/* 36 */ process_subcommand_forward_check_game,
/* 37 */ process_subcommand_forward_check_size_game, // Photon blast
/* 38 */ process_subcommand_unimplemented,
/* 39 */ process_subcommand_forward_check_size_game, // Photon blast ready
/* 3A */ process_subcommand_forward_check_size_game,
/* 3B */ process_subcommand_forward_check_size,
/* 3C */ process_subcommand_unimplemented,
/* 3D */ process_subcommand_unimplemented,
/* 3E */ process_subcommand_forward_check_size, // Stop moving
/* 3F */ process_subcommand_forward_check_size,
/* 40 */ process_subcommand_forward_check_size, // Walk
/* 41 */ process_subcommand_unimplemented,
/* 42 */ process_subcommand_forward_check_size, // Run
/* 43 */ process_subcommand_forward_check_size_client,
/* 44 */ process_subcommand_forward_check_size_client,
/* 45 */ process_subcommand_forward_check_size_client,
/* 46 */ process_subcommand_forward_check_size_client,
/* 47 */ process_subcommand_forward_check_size_client,
/* 48 */ process_subcommand_use_technique,
/* 49 */ process_subcommand_forward_check_size_client,
/* 4A */ process_subcommand_forward_check_size_client,
/* 4B */ process_subcommand_hit_by_monster,
/* 4C */ process_subcommand_hit_by_monster,
/* 4D */ process_subcommand_forward_check_size_client,
/* 4E */ process_subcommand_forward_check_size_client,
/* 4F */ process_subcommand_forward_check_size_client,
/* 50 */ process_subcommand_forward_check_size_client,
/* 51 */ process_subcommand_unimplemented,
/* 52 */ process_subcommand_forward_check_size, // Toggle shop/bank interaction
/* 53 */ process_subcommand_forward_check_size_game,
/* 54 */ process_subcommand_unimplemented,
/* 55 */ process_subcommand_forward_check_size_client, // Intra-map warp
/* 56 */ process_subcommand_forward_check_size_client,
/* 57 */ process_subcommand_forward_check_size_client,
/* 58 */ process_subcommand_forward_check_size_game,
/* 59 */ process_subcommand_forward_check_size_game, // Item picked up
/* 5A */ process_subcommand_pick_up_item, // Request to pick up item
/* 5B */ process_subcommand_unimplemented,
/* 5C */ process_subcommand_unimplemented,
/* 5D */ process_subcommand_forward_check_size_game, // Drop meseta or stacked item
/* 5E */ process_subcommand_forward_check_size_game, // Buy item at shop
/* 5F */ process_subcommand_forward_check_size_game, // Drop item from box/monster
/* 60 */ process_subcommand_enemy_drop_item, // Request for item drop (handled by the server on BB)
/* 61 */ process_subcommand_forward_check_size_game, // Feed mag
/* 62 */ process_subcommand_unimplemented,
/* 63 */ process_subcommand_destroy_item, // Destroy an item on the ground (used when too many items have been dropped)
/* 64 */ process_subcommand_unimplemented,
/* 65 */ process_subcommand_unimplemented,
/* 66 */ process_subcommand_unimplemented,
/* 67 */ process_subcommand_forward_check_size_game,
/* 68 */ process_subcommand_forward_check_size_game, // Telepipe/Ryuker
/* 69 */ process_subcommand_unimplemented,
/* 6A */ process_subcommand_forward_check_size_game,
/* 6B */ process_subcommand_forward_check_game_loading,
/* 6C */ process_subcommand_forward_check_game_loading,
/* 6D */ process_subcommand_forward_check_game_loading,
/* 6E */ process_subcommand_forward_check_game_loading,
/* 6F */ process_subcommand_forward_check_game_loading,
/* 70 */ process_subcommand_forward_check_game_loading,
/* 71 */ process_subcommand_forward_check_game_loading,
/* 72 */ process_subcommand_forward_check_game_loading,
/* 73 */ process_subcommand_invalid,
/* 74 */ process_subcommand_word_select,
/* 75 */ process_subcommand_forward_check_size_game,
/* 76 */ process_subcommand_forward_check_size_game, // Monster killed
/* 77 */ process_subcommand_forward_check_size_game, // Sync quest data
/* 78 */ process_subcommand_unimplemented,
/* 79 */ process_subcommand_forward_check_size, // Lobby 14/15 soccer game
/* 7A */ process_subcommand_unimplemented,
/* 7B */ process_subcommand_unimplemented,
/* 7C */ process_subcommand_forward_check_size_game,
/* 7D */ process_subcommand_forward_check_size_game,
/* 7E */ process_subcommand_unimplemented,
/* 7F */ process_subcommand_unimplemented,
/* 80 */ process_subcommand_forward_check_size_game, // trigger trap
/* 81 */ process_subcommand_unimplemented,
/* 82 */ process_subcommand_unimplemented,
/* 83 */ process_subcommand_forward_check_size_game, // place trap
/* 84 */ process_subcommand_forward_check_size_game,
/* 85 */ process_subcommand_forward_check_size_game,
/* 86 */ process_subcommand_unimplemented,
/* 87 */ process_subcommand_unimplemented,
/* 88 */ process_subcommand_forward_check_size_game,
/* 89 */ process_subcommand_forward_check_size_game,
/* 8A */ process_subcommand_unimplemented,
/* 8B */ process_subcommand_unimplemented,
/* 8C */ process_subcommand_unimplemented,
/* 8D */ process_subcommand_forward_check_size_client,
/* 8E */ process_subcommand_unimplemented,
/* 8F */ process_subcommand_unimplemented,
/* 90 */ process_subcommand_unimplemented,
/* 91 */ process_subcommand_forward_check_size_game,
/* 92 */ process_subcommand_unimplemented,
/* 93 */ process_subcommand_unimplemented,
/* 94 */ process_subcommand_forward_check_size_game, // Warp (the $warp chat command is implemented using this)
/* 95 */ process_subcommand_unimplemented,
/* 96 */ process_subcommand_unimplemented,
/* 97 */ process_subcommand_unimplemented,
/* 98 */ process_subcommand_unimplemented,
/* 99 */ process_subcommand_unimplemented,
/* 9A */ process_subcommand_forward_check_size_game, // Update player stat ($infhp/$inftp are implemented using this command)
/* 9B */ process_subcommand_unimplemented,
/* 9C */ process_subcommand_forward_check_size_game,
/* 9D */ process_subcommand_unimplemented,
/* 9E */ process_subcommand_unimplemented,
/* 9F */ process_subcommand_unimplemented,
/* A0 */ process_subcommand_unimplemented,
/* A1 */ process_subcommand_unimplemented,
/* A2 */ process_subcommand_box_drop_item, // Request for item drop from box (handled by server on BB)
/* A3 */ process_subcommand_unimplemented,
/* A4 */ process_subcommand_unimplemented,
/* A5 */ process_subcommand_unimplemented,
/* A6 */ process_subcommand_forward_check_size, // trade proposal
/* A7 */ process_subcommand_unimplemented,
/* A8 */ process_subcommand_unimplemented,
/* A9 */ process_subcommand_unimplemented,
/* AA */ process_subcommand_unimplemented,
/* AB */ process_subcommand_forward_check_size_client, // Create lobby chair
/* AC */ process_subcommand_unimplemented,
/* AD */ process_subcommand_unimplemented,
/* AE */ process_subcommand_forward_check_size_client,
/* AF */ process_subcommand_forward_check_size_client, // Turn in lobby chair
/* B0 */ process_subcommand_forward_check_size_client, // Move in lobby chair
/* B1 */ process_subcommand_unimplemented,
/* B2 */ process_subcommand_unimplemented,
/* B3 */ process_subcommand_unimplemented,
/* B4 */ process_subcommand_unimplemented,
/* B5 */ process_subcommand_open_shop_or_ep3_unknown, // BB shop request
/* B6 */ process_subcommand_unimplemented, // BB shop contents (server->client only)
/* B7 */ process_subcommand_unimplemented, // TODO: BB buy shop item
/* B8 */ process_subcommand_identify_item, // Accept tekker result
/* B9 */ process_subcommand_unimplemented,
/* BA */ process_subcommand_unimplemented,
/* BB */ process_subcommand_open_bank, // BB Bank request
/* BC */ process_subcommand_unimplemented, // BB bank contents (server->client only)
/* BD */ process_subcommand_bank_action,
/* BE */ process_subcommand_unimplemented, // BB create inventory item (server->client only)
/* BF */ process_subcommand_forward_check_size_ep3_lobby, // Ep3 change music, also BB give EXP (BB usage is server->client only)
/* C0 */ process_subcommand_unimplemented,
/* C1 */ process_subcommand_unimplemented,
/* C2 */ process_subcommand_unimplemented,
/* C3 */ process_subcommand_drop_stacked_item, // Split stacked item - not sent if entire stack is dropped
/* C4 */ process_subcommand_sort_inventory,
/* C5 */ process_subcommand_unimplemented,
/* C6 */ process_subcommand_unimplemented,
/* C7 */ process_subcommand_unimplemented,
/* C8 */ process_subcommand_monster_killed,
/* C9 */ process_subcommand_unimplemented,
/* CA */ process_subcommand_unimplemented,
/* CB */ process_subcommand_unimplemented,
/* CC */ process_subcommand_unimplemented,
/* CD */ process_subcommand_unimplemented,
/* CE */ process_subcommand_unimplemented,
/* CF */ process_subcommand_forward_check_size_game,
/* D0 */ process_subcommand_unimplemented,
/* D1 */ process_subcommand_unimplemented,
/* D2 */ process_subcommand_unimplemented,
/* D3 */ process_subcommand_unimplemented,
/* D4 */ process_subcommand_unimplemented,
/* D5 */ process_subcommand_unimplemented,
/* D6 */ process_subcommand_unimplemented,
/* D7 */ process_subcommand_unimplemented,
/* D8 */ process_subcommand_unimplemented,
/* D9 */ process_subcommand_unimplemented,
/* DA */ process_subcommand_unimplemented,
/* DB */ process_subcommand_unimplemented,
/* DC */ process_subcommand_unimplemented,
/* DD */ process_subcommand_unimplemented,
/* DE */ process_subcommand_unimplemented,
/* DF */ process_subcommand_unimplemented,
/* E0 */ process_subcommand_unimplemented,
/* E1 */ process_subcommand_unimplemented,
/* E2 */ process_subcommand_unimplemented,
/* E3 */ process_subcommand_unimplemented,
/* E4 */ process_subcommand_unimplemented,
/* E5 */ process_subcommand_unimplemented,
/* E6 */ process_subcommand_unimplemented,
/* E7 */ process_subcommand_unimplemented,
/* E8 */ process_subcommand_unimplemented,
/* E9 */ process_subcommand_unimplemented,
/* EA */ process_subcommand_unimplemented,
/* EB */ process_subcommand_unimplemented,
/* EC */ process_subcommand_unimplemented,
/* ED */ process_subcommand_unimplemented,
/* EE */ process_subcommand_unimplemented,
/* EF */ process_subcommand_unimplemented,
/* F0 */ process_subcommand_unimplemented,
/* F1 */ process_subcommand_unimplemented,
/* F2 */ process_subcommand_unimplemented,
/* F3 */ process_subcommand_unimplemented,
/* F4 */ process_subcommand_unimplemented,
/* F5 */ process_subcommand_unimplemented,
/* F6 */ process_subcommand_unimplemented,
/* F7 */ process_subcommand_unimplemented,
/* F8 */ process_subcommand_unimplemented,
/* F9 */ process_subcommand_unimplemented,
/* FA */ process_subcommand_unimplemented,
/* FB */ process_subcommand_unimplemented,
/* FC */ process_subcommand_unimplemented,
/* FD */ process_subcommand_unimplemented,
/* FE */ process_subcommand_unimplemented,
/* FF */ process_subcommand_unimplemented,
};
void process_subcommand(shared_ptr<ServerState> s, shared_ptr<Lobby> l,