GameService Server Room List
Summary
This packet lists all rooms currently present (open or closed) on a given sub-server.
This packet is sent periodically by the server without prompting when changes occur, such as from Gameservice Client 0x000A Room Settings Change.
Structure
gameservice_server_0047_room_list
| Name | Type | Summary | 
|---|---|---|
| room_count | u1 | |
| list_type | u1 | |
| unknown_a | s2 | Always -1 (0xFFFF). | 
| rooms | room[room_count] | 
Subtypes
room
| Name | Type | Summary | 
|---|---|---|
| room_name | strz[64] | |
| room_privacy | u1 | |
| unknown_b | bytes[2] | |
| room_user_max | u1 | Upper user limit of room. | 
| room_user_count | u1 | Current user count of room. | 
| unknown_c | bytes[18] | |
| room_hole_amount | u1 | Hole amount; current hole in chat rooms. | 
| room_type | u1 | |
| room_number | u2 | |
| room_hole_progression | u1 | |
| room_course | u1 | |
| room_shot_timer_ms | u4 | 0 if event or not applicable. Individual shot timer, in milliseconds. | 
| room_game_timer_ms | u4 | 0 if event or not applicable. Overall game timer, in milliseconds. | 
| unknown_special_room_value | bytes[4] | 00,00,00,00 in VS and Chat, 00,00,xx,2C in Tournament and Battle. | 
| unknown_e | bytes[76] | All 0x00. | 
| unknown_f | u4 | All examples show 100 (0x00000064). | 
| unknown_g | u4 | All examples show 100 (0x00000064). | 
| room_master_user_id | s4 | User ID of room master. -1 (0xFFFFFFFF) if no master (deletion, event). | 
| room_class | s1 | Unconfirmed. Appears to identify special event rooms vs standard multiplayer rooms. | 
| room_artifact_id | u4 | From pangya_xx.iff/Item.iff. Item ID for active artifact. | 
| unknown_h | u4 | Appears to vary from 0 to 3. | 
| event_number | u4 | 0 if non-event. | 
| event_number_rounded | u4 | Only top 3 bytes of event_number. Low byte zeroed. | 
| event_shot_timer_ms | u4 | 0 if non-event. Individual shot timer, in milliseconds. | 
| unknown_event_j | u4 | 0 if non-event. All examples show 1 (0x00000001). | 
Enums
list_type
| Key | Value | 
|---|---|
| list_type::list_initial | 0 | 
| list_type::list_additions | 1 | 
| list_type::list_removals | 2 | 
| list_type::list_modifications | 3 | 
room_privacy
| Key | Value | 
|---|---|
| room_privacy::private_needs_password | 0 | 
| room_privacy::public | 1 | 
room_type
| Key | Value | 
|---|---|
| room_type::vs | 0 | 
| room_type::chat | 2 | 
| room_type::tournament | 4 | 
| room_type::battle | 10 | 
hole_progression
| Key | Value | 
|---|---|
| hole_progression::front_start | 0 | 
| hole_progression::back_start | 1 | 
| hole_progression::random_start | 2 | 
| hole_progression::shuffle_all | 3 | 
room_course
room_class
| Key | Value | 
|---|---|
| room_class::grand_prix_room | 20 | 
| room_class::standard_room | 255 | 
Definition
meta:
  id: gameservice_server_0047_room_list
  title: GameService Server Room List
  encoding: ASCII
  endian: le
  imports:
    - ../../common/pstring
seq:
  - id: room_count
    type: u1
  - id: list_type
    type: u1
    enum: list_type
  - id: unknown_a
    type: s2
  - id: rooms
    type: room
    repeat: expr
    repeat-expr: room_count
types:
  room:
    seq:
      - id: room_name
        type: strz
        size: 64
      - id: room_privacy
        type: u1
        enum: room_privacy
      - id: unknown_b
        size: 2
      - id: room_user_max
        type: u1
      - id: room_user_count
        type: u1
      - id: unknown_c
        size: 18
      - id: room_hole_amount
        type: u1
      - id: room_type
        type: u1
        enum: room_type
      - id: room_number
        type: u2
      - id: room_hole_progression
        type: u1
        enum: hole_progression
      - id: room_course
        type: u1
        enum: room_course
      - id: room_shot_timer_ms
        type: u4
      - id: room_game_timer_ms
        type: u4
      - id: unknown_special_room_value
        size: 4
      - id: unknown_e
        size: 76
      - id: unknown_f
        type: u4
      - id: unknown_g
        type: u4
      - id: room_master_user_id
        type: s4
      - id: room_class
        type: s1
        enum: room_class
      - id: room_artifact_id
        type: u4
      - id: unknown_h
        type: u4
      - id: event_number
        type: u4
      - id: event_number_rounded
        type: u4
      - id: event_shot_timer_ms
        type: u4
      - id: unknown_event_j
        type: u4
enums:
  list_type:
    0: list_initial
    1: list_additions
    2: list_removals
    3: list_modifications
  room_privacy:
    0: private_needs_password
    1: public
  room_type:
    0: vs
    2: chat
    4: tournament
    10: battle
  hole_progression:
    0: front_start
    1: back_start
    2: random_start
    3: shuffle_all
  room_course:
    0: blue_lagoon
    1: blue_water
    2: sepia_wind
    3: wind_hill
    4: wiz_wiz
    5: west_wiz
    6: blue_moon
    7: silvia_cannon
    8: ice_cannon
    9: white_wiz
    10: shining_sand
    11: pink_wind
    13: deep_inferno
    14: ice_spa
    15: lost_seaway
    16: eastern_valley
    18: ice_inferno
    19: wiz_city
    20: abbot_mine
    127: random_course
  room_class:
    20: grand_prix_room
    255: standard_room