vault backup: 2023-05-07 22:58:19
This commit is contained in:
		
							parent
							
								
									345278cb9a
								
							
						
					
					
						commit
						4c606da971
					
				
					 10 changed files with 316 additions and 52 deletions
				
			
		
							
								
								
									
										0
									
								
								.history/mdzk_20230330121755.toml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								.history/mdzk_20230330121755.toml
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										1
									
								
								.history/mdzk_20230330121922.toml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.history/mdzk_20230330121922.toml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | title="Scrapland" | ||||||
							
								
								
									
										10
									
								
								Callbacks.md
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								Callbacks.md
									
										
									
									
									
								
							|  | @ -1,13 +1,13 @@ | ||||||
| They can be used in function parameters like so: | They can be used in function parameters like so: | ||||||
| ```python | ```python | ||||||
| SAct.SetAct("EventFunc","!<CallbackName>") | SAct.SetAct("EventFunc","!<Callback_Name>") | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Or directly called from python: | Or directly called from python: | ||||||
| 
 | 
 | ||||||
| ```python | ```python | ||||||
| # Set Callback function | # Set Callback function | ||||||
| Scrap.SetCallFunc("!<Callback Name>") | Scrap.SetCallFunc("!<Callback_Name>") | ||||||
| # Add parameters | # Add parameters | ||||||
| Scrap.AddParams(str) | Scrap.AddParams(str) | ||||||
| Scrap.AddParamf(float) | Scrap.AddParamf(float) | ||||||
|  | @ -18,6 +18,12 @@ Scrap.Execute() | ||||||
| 
 | 
 | ||||||
| Note the `!` symbol in front of the callback name | Note the `!` symbol in front of the callback name | ||||||
| 
 | 
 | ||||||
|  | # Parameters | ||||||
|  | 
 | ||||||
|  | - EditText: | ||||||
|  | 	- player_id: int | ||||||
|  | 	- scorer_item_name: str | ||||||
|  | 
 | ||||||
| ## OG | ## OG | ||||||
| 
 | 
 | ||||||
| | Callback setup address | Callback name                | Callback funcion                       | Callback address | | | Callback setup address | Callback name                | Callback funcion                       | Callback address | | ||||||
|  |  | ||||||
							
								
								
									
										164
									
								
								Chunked.md
									
										
									
									
									
								
							
							
						
						
									
										164
									
								
								Chunked.md
									
										
									
									
									
								
							|  | @ -19,13 +19,13 @@ struct Block { | ||||||
| 
 | 
 | ||||||
| # Block IDs | # Block IDs | ||||||
| 
 | 
 | ||||||
|  File ID | Chunk IDs                                                                       | | File ID | Chunk IDs                                                                      | | ||||||
|  ------- | ------------------------------------------------------------------------------  | | ------- | ------------------------------------------------------------------------------ | | ||||||
|  AMC     | AMC, CMSH, QUAD                                                                 | | AMC     | AMC, CMSH, QUAD                                                                | | ||||||
|  CM3     | ANI, CM3, EVA, NAE, NAM, SCN                                                    | | CM3     | ANI, CM3, EVA, NAE, NAM, SCN                                                   | | ||||||
|  DUM     | DUM, INI                                                                        | | DUM     | DUM, INI                                                                       | | ||||||
|  EMI     | EMI, LFVF, MAP, MAT, TRI                                                        | | EMI     | EMI, LFVF, MAP, MAT, TRI                                                       | | ||||||
|  SM3     | ANI, CAM, INI, LFVF, LUZ, MAP, MAT, MD3D, NAE, NAM, PORT, SCN, SM3, SPR3, SUEL  | | SM3     | ANI, CAM, INI, LFVF, LUZ, MAP, MAT, MD3D, NAE, NAM, PORT, SCN, SM3, SPR3, SUEL | | ||||||
| 
 | 
 | ||||||
| Read types: | Read types: | ||||||
| 
 | 
 | ||||||
|  | @ -36,26 +36,28 @@ Read types: | ||||||
| - `3f`: array of 3 4-byte floats | - `3f`: array of 3 4-byte floats | ||||||
| - `3i`: array of 3 4-byte unsigned integers | - `3i`: array of 3 4-byte unsigned integers | ||||||
| 
 | 
 | ||||||
|  Chunk ID | Description                 | Reads                     | | Chunk ID | Description                 | Reads                    | | ||||||
|  -------- | --------------------------- | ------------------------  | | -------- | --------------------------- | ------------------------ | | ||||||
|  AMC      | Collision Data              |                           | | AMC      | Collision Data              | | ||||||
|  ANI      | Animation data?             |                           | | ANI      | Animation data?             | | ||||||
|  CAM      | Camera info?                |                           | | CAM      | Camera info?                | | ||||||
|  CMSH     | Collision Mesh Data         |                           | | CMSH     | Collision Mesh Data         | | ||||||
|  DUM      | Dummy (map object) data     |                           | | EVA      | Vertex animation data       | | ||||||
|  INI      | INI-Configuration data      |                           | | DUM      | Dummy (map object) data     | | ||||||
|  LFVF     | FVF Vertex Data             |                           | | INI      | INI-Configuration data      | | ||||||
|  LUZ      | Lighting information        |                           | | LFVF     | FVF Vertex Data             | | ||||||
|  MAP      | UV Map?                     |                           | | LUZ      | Lighting information        | | ||||||
|  MAT      | Material information        |                           | | MAP      | Lightmap                    | | ||||||
|  NAE      | Animation Data?             |                           | | MAT      | Material information        | | ||||||
|  NAM      | Animation Data?             |                           | | NAE      | Animation Data?             | | ||||||
|  PORT     | Map portals?                | i==1, i, i, 4, 4          | | NAM      | Animation Data?             | | ||||||
|  QUAD     | Mesh data?                  |                           | | PORT     | Map portals                 | `i==1, i, i, 4, 4` | ||||||
|  SCN      | Scene data?                 |                           | | QUAD     | Mesh data?                  | | ||||||
|  SUEL     | Ground plane?               | 0x18, 0xc, 4, 4, 4, 0x18  | | SCN      | Scene tree data             | | ||||||
|  TRI      | Triangle strip definitions? |                           | | SUEL     | Ground Plane?               | 0x18, 0xc, 4, 4, 4, 0x18 | ||||||
|  MD3D     | 3D Model definition?        |                           | | TRI      | Triangle Mesh               | | ||||||
|  | | MD3D     | 3D Model definition         | | ||||||
|  | | EMI      | Level geometry              | | ||||||
| 
 | 
 | ||||||
| # Format of Specific chunks | # Format of Specific chunks | ||||||
| 
 | 
 | ||||||
|  | @ -76,7 +78,6 @@ struct INI { | ||||||
| }; | }; | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ## LFVF | ## LFVF | ||||||
| 
 | 
 | ||||||
| DirectX Flexible Vertex Format Data | DirectX Flexible Vertex Format Data | ||||||
|  | @ -84,7 +85,7 @@ DirectX Flexible Vertex Format Data | ||||||
| ```cpp | ```cpp | ||||||
| struct Vertex { // fields according to flags | struct Vertex { // fields according to flags | ||||||
|     float position[3]; // D3DFVF_XYZ | D3DFVF_XYZRHW | D3DFVF_XYZB* |     float position[3]; // D3DFVF_XYZ | D3DFVF_XYZRHW | D3DFVF_XYZB* | ||||||
|     float rhw; // D3DFVF_XYZRHW |     // float rhw; // unused even with D3DFVF_XYZRHW | ||||||
|     float weights[3]; // D3DFVF_XYZB* |     float weights[3]; // D3DFVF_XYZB* | ||||||
|     float normal[3]; // D3DFVF_NORMAL |     float normal[3]; // D3DFVF_NORMAL | ||||||
|     float point_size; // D3DFVF_PSIZE |     float point_size; // D3DFVF_PSIZE | ||||||
|  | @ -94,7 +95,7 @@ struct Vertex { // fields according to flags | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| struct LFVF { | struct LFVF { | ||||||
|     uint32_t unk; |     uint32_t version; | ||||||
|     uint32_t num_entries; |     uint32_t num_entries; | ||||||
|     struct { |     struct { | ||||||
|         uint32_t FVF; // FVF vertex data configuration |         uint32_t FVF; // FVF vertex data configuration | ||||||
|  | @ -138,3 +139,106 @@ struct MAP { | ||||||
|     // TODO: rest |     // TODO: rest | ||||||
| } | } | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
|  | ## SCN | ||||||
|  | 
 | ||||||
|  | - Tree structure | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | Escena: Models/Chars/Dtritus/Dtritus.M3D | ||||||
|  |   _raiz_escena                                       -1   0  -1  c:(null)    f:00000001  a:0000 | ||||||
|  |     DC_Root                                           0   1  -1  c:(null)    f:00010090  a:0000 | ||||||
|  |       DC_Camera                                       1  93  -1  c:(null)    f:00420090  a:0000 | ||||||
|  |       DC_Floor                                        2  94  -1  c:(null)    f:00420090  a:0000 | ||||||
|  |       Bip Detritus MASTER                             4   2  -1  c:(null)    f:00200090  a:0000 | ||||||
|  |         Bip Detritus                                  5   3  -1  c:(null)    f:00200190  a:0000 | ||||||
|  |           Bip Detritus Pelvis                         7   4  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |             Bip Detritus Spine                        8   5  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |               Bip Detritus Spine1                     9   6  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                 Bip Detritus Spine2                  10   7  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                   Bip Detritus Neck                  11   8  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                     Bip Detritus Head                12   9  -1  c:MallaD3D  f:00300110  a:0000  [skin] | ||||||
|  |                       Bip Detritus Ponytail1         14  10  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                         Bip Detritus Ponytail11      15  11  -1  c:(null)    f:00380190  a:0000 | ||||||
|  |                           Bip Detritus Ponytail12    16  12  -1  c:(null)    f:00380190  a:0000 | ||||||
|  |                       Bip Detritus Ponytail2         18  13  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                         Bip Detritus Ponytail21      19  14  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                       BipBone Detritus MechonDer_01    23  15  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                         BipBone Detritus MechonDer_02      24  16  -1  c:(null)    f:00380190  a:0000 | ||||||
|  |                           BipBone Detritus MechonDer_03        25  17  -1  c:(null)    f:00380190  a:0000 | ||||||
|  |                       BipBone Detritus MechonIzq_01    27  18  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                         BipBone Detritus MechonIzq_02      28  19  -1  c:(null)    f:00380190  a:0000 | ||||||
|  |                           BipBone Detritus MechonIzq_03        29  20  -1  c:(null)    f:00380190  a:0000 | ||||||
|  |                       R_Detritus_Cabeza-Cara&Pelo    37  21  -1  c:MallaD3D  f:00000010  a:0000  [skin] | ||||||
|  |                         R_Detritus_Cabeza-Mechones   38  22  -1  c:MallaD3D  f:00000010  a:FF7F  [skin] | ||||||
|  |                         R_Detritus_Cabeza-Ceja_Izq   39  23  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                         R_Detritus_Cabeza-Ceja_Der   40  24  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                         R_Detritus_Cabeza-Ojo_Izq    41  25  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                         R_Detritus_Cabeza-Ojo_Der    42  26  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                         R_Detritus_Cabeza-OjoParpado_Der         43  27  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                         R_Detritus_Cabeza-OjoParpado_Izq         44  28  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                         R_Detritus_Cabeza-PeloMechones       45  29  -1  c:MallaD3D  f:00000070  a:FF7F  [skin] | ||||||
|  |                     Bip Detritus L Clavicle          54  30  -1  c:(null)    f:00200190  a:0000 | ||||||
|  |                       Bip Detritus L UpperArm        55  31  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                         Bip Detritus L Forearm       56  32  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                           Bip Detritus L Hand        57  33  -1  c:MallaD3D  f:00300110  a:0000  [skin] | ||||||
|  |                             Bip Detritus L Finger0   58  34  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                               Bip Detritus L Finger01      59  35  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                             Bip Detritus L Finger1   61  36  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                               Bip Detritus L Finger11      62  37  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                             Bip Detritus L Finger2   64  38  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                               Bip Detritus L Finger21      65  39  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                             Bip Detritus L Finger3   67  40  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                               Bip Detritus L Finger31      68  41  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                           R_Detritus_Antebrazo_Izq   71  42  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                             R_Detritus_Codo_Izq      72  43  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                             R_Detritus_Antebrazo-Doblez_Izq            73  44  -1  c:MallaD3D  f:00000010  a:FF7F  [skin] | ||||||
|  |                             R_Detritus_Brazo-CilindroB-Eje_Izq               75  45  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                             R_Detritus_Brazo-CilindroB_Izq           76  46  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                         R_Detritus_Brazo_Izq         77  47  -1  c:MallaD3D  f:00000010  a:0000  [skin] | ||||||
|  |                           R_Detritus_Brazo-CilindroA_Izq         79  48  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                     Bip Detritus R Clavicle          80  49  -1  c:(null)    f:00200190  a:0000 | ||||||
|  |                       Bip Detritus R UpperArm        81  50  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                         Bip Detritus R Forearm       82  51  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                           Bip Detritus R Hand        83  52  -1  c:MallaD3D  f:00300110  a:0000  [skin] | ||||||
|  |                             Bip Detritus R Finger0   84  53  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                               Bip Detritus R Finger01      85  54  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                             Bip Detritus R Finger1   87  55  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                               Bip Detritus R Finger11      88  56  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                             Bip Detritus R Finger2   90  57  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                               Bip Detritus R Finger21      91  58  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                             Bip Detritus R Finger3   93  59  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                               Bip Detritus R Finger31      94  60  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                           R_Detritus_Antebrazo_Der   97  61  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                             R_Detritus_Codo_Der      98  62  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                             R_Detritus_Antebrazo-Doblez_Der            99  63  -1  c:MallaD3D  f:00000010  a:FF7F  [skin] | ||||||
|  |                             R_Detritus_Brazo-CilindroB-Eje_Der              100  64  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                             R_Detritus_Brazo-CilindroB_Der          102  65  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                         R_Detritus_Brazo_Der        103  66  -1  c:MallaD3D  f:00000010  a:0000  [skin] | ||||||
|  |                           R_Detritus_Brazo-CilindroA_Der        105  67  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                 R_Detritus_Tronco                   106  68  -1  c:MallaD3D  f:00000010  a:FF7F  [skin] | ||||||
|  |               Bip Detritus L Thigh                  107  69  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                 Bip Detritus L Calf                 108  70  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                   Bip Detritus L Foot               109  71  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                     Bip Detritus L Toe0             110  72  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                   R_Detritus_Espinilla_Izq          112  73  -1  c:MallaD3D  f:00000010  a:0000  [skin] | ||||||
|  |                     R_Detritus_Rodilla_Izq          113  74  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                       R_Detritus_Pierna-CilindroB_Izq     114  75  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                     R_Detritus_Espinilla-CilindroA_Izq      116  76  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                     R_Detritus_Talon_Izq            118  77  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                       R_Detritus_Espinilla-CilindroB_Izq        119  78  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                 R_Detritus_Pierna_Izq               121  79  -1  c:MallaD3D  f:00000010  a:0000  [skin] | ||||||
|  |                   R_Detritus_Pierna-CilindroA_Izq   122  80  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |               Bip Detritus R Thigh                  124  81  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                 Bip Detritus R Calf                 125  82  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                   Bip Detritus R Foot               126  83  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                     Bip Detritus R Toe0             127  84  -1  c:(null)    f:00300190  a:0000 | ||||||
|  |                     R_Detritus_Talon_Der            129  85  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                       R_Detritus_Espinilla-CilindroB_Der        130  86  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                   R_Detritus_Espinilla_Der          132  87  -1  c:MallaD3D  f:00000010  a:0000  [skin] | ||||||
|  |                     R_Detritus_Rodilla_Der          133  88  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                       R_Detritus_Pierna-CilindroB_Der     135  89  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                     R_Detritus_Espinilla-CilindroA_Der      136  90  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  |                 R_Detritus_Pierna_Der               138  91  -1  c:MallaD3D  f:00000010  a:0000  [skin] | ||||||
|  |                   R_Detritus_Pierna-CilindroA_Der   139  92  -1  c:MallaD3D  f:00000010  a:0000 | ||||||
|  | ``` | ||||||
							
								
								
									
										2
									
								
								File.md
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								File.md
									
										
									
									
									
								
							|  | @ -8,7 +8,7 @@ | ||||||
|  .sm3           | 3d model file            | y        |  .sm3           | 3d model file            | y        | ||||||
|  .dum           | Dummy (map object) file  | y        |  .dum           | Dummy (map object) file  | y        | ||||||
|  .pth           | AI Path                  | n        |  .pth           | AI Path                  | n        | ||||||
|  .emi           | Emission maps/Materials? | y        |  .emi           | Level geometry           | y        | ||||||
|  .amc           | Collision Data           | y        |  .amc           | Collision Data           | y        | ||||||
|  .ini           | Configuration            | n        |  .ini           | Configuration            | n        | ||||||
|  .txa           | Texture Animation Config | n        |  .txa           | Texture Animation Config | n        | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| # MultiSpriteTable |  | ||||||
| 
 | 
 | ||||||
| ```cpp | ```cpp | ||||||
| struct Tile { | struct Tile { | ||||||
|  |  | ||||||
|  | @ -2,24 +2,39 @@ | ||||||
| 
 | 
 | ||||||
| Fixed Key: `020406080a0c0e10121416181a1c1e20222426282a2c2e30323436383a3c3e40` | Fixed Key: `020406080a0c0e10121416181a1c1e20222426282a2c2e30323436383a3c3e40` | ||||||
| Packet Structure: | Packet Structure: | ||||||
|  | ```rust | ||||||
|  | struct Packet { | ||||||
|  | 	#[len=pad_16(nonce_len)] | ||||||
|  | 	nonce: Vec<u8>, | ||||||
|  | 	#[len=pad_16(data_len)] | ||||||
|  | 	data: Vec<u8>, | ||||||
|  | 	nonce_len: u64, | ||||||
|  | 	data_len: u64 | ||||||
|  | 	tag: [u8;16] | ||||||
|  | } | ||||||
|  | ``` | ||||||
| ``` | ``` | ||||||
| [0..nonce_len]: nonce |  | ||||||
| [nonce_len..(16-nonce_len%16)]: padding |  | ||||||
| [16..ciphertext_len]: Ciphertext |  | ||||||
| [nonce_len+(16-nonce_len%16)+ciphertext_len] |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ||||||
| 0000  ED C9 C2 F4 7C 6D F2 54 42 EF 46 F6 00 00 00 00  ....|m.TB.F..... | 0000  ED C9 C2 F4 7C 6D F2 54 42 EF 46 F6 00 00 00 00  ....|m.TB.F..... | ||||||
|  | 
 | ||||||
| 0010  68 13 5C 9A 2B 18 DB 9C 76 BE A0 8A 3E 49 79 3C  h.\.+...v...>Iy< | 0010  68 13 5C 9A 2B 18 DB 9C 76 BE A0 8A 3E 49 79 3C  h.\.+...v...>Iy< | ||||||
| 0020  8D 7A C4 4C 8B B0 A4 94 E5 B5 89 54 A6 ED 6D 75  .z.L.......T..mu | 0020  8D 7A C4 4C 8B B0 A4 94 E5 B5 89 54 A6 ED 6D 75  .z.L.......T..mu | ||||||
| 0030  1A CA A8 4B 22 B5 03 84 F7 3C DE 4E B0 30 81 29  ...K"....<.N.0.) | 0030  1A CA A8 4B 22 B5 03 84 F7 3C DE 4E B0 30 81 29  ...K"....<.N.0.) | ||||||
| 0040  3B 70 45 15 33 C0 97 67 85 6B 28 EF 2E 2E D1 83  ;pE.3..g.k(..... | 0040  3B 70 45 15 33 C0 97 67 85 6B 28 EF 2E 2E D1 83  ;pE.3..g.k(..... | ||||||
| 0050  E6 56 A7 81 53 89 3E 52 D8 82 CF 77 92 CF C2 D6  .V..S.>R...w.... | 0050  E6 56 A7 81 53 89 3E 52 D8 82 CF 77 92 CF C2 D6  .V..S.>R...w.... | ||||||
| 0060  9F 37 C5 DE EE 14 4D 3F 1F 82 32 7E 00 00 00 00  .7....M?..2~.... | 0060  9F 37 C5 DE EE 14 4D 3F 1F 82 32 7E 00 00 00 00  .7....M?..2~.... | ||||||
|  | 
 | ||||||
| 0070  0C 00 00 00 00 00 00 00 5C 00 00 00 00 00 00 00  ........\....... | 0070  0C 00 00 00 00 00 00 00 5C 00 00 00 00 00 00 00  ........\....... | ||||||
|  | 
 | ||||||
| 0080  89 7A A8 32 93 56 B6 68 24 E0 58 63 7F 70 5A D2  .z.2.V.h$.Xc.pZ. | 0080  89 7A A8 32 93 56 B6 68 24 E0 58 63 7F 70 5A D2  .z.2.V.h$.Xc.pZ. | ||||||
| ``` | ``` | ||||||
|  | Decryption algorithm (Pseudocode): | ||||||
|  | ```python | ||||||
|  | cipher = ChaCha20(key,pkt.nonce) | ||||||
|  | packet_key = cipher.decrypt(key) | ||||||
|  | cipher.seek(packet_key.len()+32) | ||||||
|  | data = cipher.decrypt(pkt.data) | ||||||
|  | ``` | ||||||
| Decrypted: | Decrypted: | ||||||
| ``` | ``` | ||||||
|       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |       00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ||||||
|  |  | ||||||
|  | @ -37,10 +37,10 @@ Hexdump: | ||||||
| 0110  00 14 00 9E FF F6 E8 C8 9F 08 22 FC 8F F3 FF FF  .........."..... | 0110  00 14 00 9E FF F6 E8 C8 9F 08 22 FC 8F F3 FF FF  .........."..... | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| Split up into chunks: | Split up into parts: | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
| 0f 00 0002 0007 00 7544b3c5 90183747 74c6b246 0098 | 0f00 0002 0007 00 7544b3c5 90183747 74c6b246 0098 | ||||||
| 
 | 
 | ||||||
| 0500 00 09955f3c000671340281062c090900001d007f5e0e22c6ddf52247cce2b64655163b8c8e0b4a272f44e7afc745ef913546000000000000 | 0500 00 09955f3c000671340281062c090900001d007f5e0e22c6ddf52247cce2b64655163b8c8e0b4a272f44e7afc745ef913546000000000000 | ||||||
| 0000 00 08155f8300035186005100e9fb08050040007e5700ffff6301000010ff2365f96e1e000000 | 0000 00 08155f8300035186005100e9fb08050040007e5700ffff6301000010ff2365f96e1e000000 | ||||||
|  | @ -67,16 +67,16 @@ Size: 0285   PlyId: 002   NumVals: 007 | ||||||
| Structure: | Structure: | ||||||
| 
 | 
 | ||||||
| ``` | ``` | ||||||
| 
 | 0f00 # Unk (TypeID?) | ||||||
| 0f00 # Unk |  | ||||||
| 0002 # PlayerID | 0002 # PlayerID | ||||||
| 0007 # Num Vals | 0007 # Num Vals | ||||||
| 00 # Unk | 00 # Unk (Flags?) | ||||||
| 7544b3c5 # Pos.X | 7544b3c5 # Pos.X | ||||||
| 90183747 # Pos.Y | 90183747 # Pos.Y | ||||||
| 74c6b246 # Pos.Z | 74c6b246 # Pos.Z | ||||||
| 00 # Player Index | 00 # Player Index | ||||||
| 98 # Rtt | 98 # Rtt | ||||||
|  | # Ent_ID, Ent_Type, Data | ||||||
| 0500 00 09955f3c000671340281062c090900001d007f5e0e22c6ddf52247cce2b64655163b8c8e0b4a272f44e7afc745ef913546000000000000 | 0500 00 09955f3c000671340281062c090900001d007f5e0e22c6ddf52247cce2b64655163b8c8e0b4a272f44e7afc745ef913546000000000000 | ||||||
| 0000 00 08155f8300035186005100e9fb08050040007e5700ffff6301000010ff2365f96e1e000000 | 0000 00 08155f8300035186005100e9fb08050040007e5700ffff6301000010ff2365f96e1e000000 | ||||||
| 0200 00 00105f00000621e000daf7b1f73a0000c800ff7544b3c59018374774c6b24697f5d70200000000000000000000000000000000000000002c | 0200 00 00105f00000621e000daf7b1f73a0000c800ff7544b3c59018374774c6b24697f5d70200000000000000000000000000000000000000002c | ||||||
|  | @ -84,7 +84,6 @@ Structure: | ||||||
| 2402 15 9e7f005800b5ff20f1f01904210bd5f5ffff | 2402 15 9e7f005800b5ff20f1f01904210bd5f5ffff | ||||||
| 2302 15 9f4a6cd1c44625314792e5b04614cb45d6da5c26aa4e44a2ca72c5cdb4edc3ffff | 2302 15 9f4a6cd1c44625314792e5b04614cb45d6da5c26aa4e44a2ca72c5cdb4edc3ffff | ||||||
| 2202 15 9e7e0014009efff6e8c89f0822fc8ff3ffff | 2202 15 9e7e0014009efff6e8c89f0822fc8ff3ffff | ||||||
| 
 |  | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ```c | ```c | ||||||
|  | @ -93,7 +92,7 @@ Structure: | ||||||
| struct NetValue { | struct NetValue { | ||||||
|     le u16 entity_index; |     le u16 entity_index; | ||||||
|     u8 entity_type; |     u8 entity_type; | ||||||
|     char data[?]; // TODO: how is length determined? |     char data[?]; // length depends on entity type | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| struct NetData { | struct NetData { | ||||||
|  | @ -111,16 +110,50 @@ struct NetData { | ||||||
| 
 | 
 | ||||||
| Packets are split into Data packets (map change, resources, chat message, etc) and entity (position?) updates | Packets are split into Data packets (map change, resources, chat message, etc) and entity (position?) updates | ||||||
| 
 | 
 | ||||||
| ## Packet types | ## Entity Types | ||||||
|  | - 00: Vehicle | ||||||
|  | - 01: Cloud | ||||||
|  | - 02: Swarm | ||||||
|  | - 03: Inferno | ||||||
|  | - 04: Sonic | ||||||
|  | - 05: EMI | ||||||
|  | - 06: Box:Ener | ||||||
|  | - 07: Box:Miss | ||||||
|  | - 08: Box:Part | ||||||
|  | - 09: Box:Life | ||||||
|  | - 10: Box:iXtr | ||||||
|  | - 11: Box:iSiz | ||||||
|  | - 12: Box:aBom | ||||||
|  | - 13: Box:aSpd | ||||||
|  | - 14: Box:dAim | ||||||
|  | - 15: Box:dBom | ||||||
|  | - 16: Box:tAim | ||||||
|  | - 17: Box:tTra | ||||||
|  | - 18: Box:sRot | ||||||
|  | - 19: Box:sRck | ||||||
|  | - 20: Box:vAim | ||||||
|  | - 21: Box:vSpd | ||||||
| 
 | 
 | ||||||
| - 00: MapChange: | ## Server->Client Packet Types | ||||||
|  | 
 | ||||||
|  | - 00: Player Join | ||||||
|  | - 02: Disconnect | ||||||
|  | - 03: Chat String | ||||||
|  | - 04: Usr String | ||||||
|  | - 05: Unk (Keepalive?) | ||||||
|  | - 06: Player Modify | ||||||
|  | - 08: Remote command | ||||||
|  | 
 | ||||||
|  | ## Client->Server Packet types | ||||||
|  | 
 | ||||||
|  | - 00: Map Change: | ||||||
|   - str map_name |   - str map_name | ||||||
|   - str game_mode |   - str game_mode | ||||||
| 
 | 
 | ||||||
| - 01: Resource: | - 01: Resource: | ||||||
|   - u8: unk |   - u16: resource_index | ||||||
|   - u16?: num_resources |   - u16: unk | ||||||
|   - [str: resource_name]*num_resources |   - [str: resource_name] repeated num_resources times | ||||||
| 
 | 
 | ||||||
| - 02: Unknown (Keepalive?) | - 02: Unknown (Keepalive?) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										102
									
								
								Netplay/Samples.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								Netplay/Samples.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,102 @@ | ||||||
|  | `8f19001b041644282d353733362c2034363837322c20323238383329030027007544b3c59018374774c6b24605ae05000009915f3c00065187f70a0004080900008a007e6f00d1fed2fdfe5dffc2f89a006a090000000100000c105f830006f00100070000c8007e4d088cfeafffe2bb000000feff000000000000000009105f980003a1020001050043007e38fecdfec2ff15c30073ff04008a0000000002000000105f00000621e000daf7b1f73a0000c800ff7544b3c59018374774c6b24697f5d70200000000000000000000000000000000000000002c2502151fb785aac5e90a3947ab9db446931389c8046e09ea58455833ec44a4f21ac4ffff00002402151f835da7c5cc113747af38ae46c20f67c8abc43230634572e5c0440d291fc4ffff00002302151fd135b4c5ef1c39472d84b3469b0ebdc4d64f929168458679b344e89597c3ffff00002202151f8876b2c51ead3747dafdad46dc1062c9c1c8b96d5f45ea9ccd448a5a33c4ffff00001f020b0376a8e2475b6e5b467c1e99461e020903982d14c5ec79cb45b2ee96471d020e03b29dbc46caa433464a28a0c71c020603aa80514658b8ab458db025c71b020803ce492f4658b8ab4514d320c71a02070344532f4658b8ab4587cf16c7190205031b3a0d4658b8ab459eaf25c7180206030ac34c4669e1fd469891ca47170208032e8c2a4669e1fd465500cd4716020703a4952a4669e1fd461b02d247150205037b7c084669e1fd460f92ca4714020603da6b7ec714aa3746b77c5a4713020803c87c83c714aa3746305a5f47120207039a7b83c714aa3746bd5d694711020503bfbe87c714aa3746a67d5a4710020803c5c719474ad5d445a7b3d2c60f0206037c5522474ad5d4459a6edcc60e02070323ca19474ad5d4458dacbec60d020503d84311474ad5d445bb6cdcc60c020603a9b16b47d52d974602dd15470b020803f2236347d52d97467bba1a470a02070350266347d52d974608be24470902050305a05a47d52d9746f1dd1547080206031f4066c6384b9c46955bd345070208037e3b84c6384b9c466147fa4506020703c33684c6384b9c46e431254605020503574395c6384b9c461063d34504020603ba349bc77a60294640f387c103020803957b9fc77a602946658f994402020703677a9fc77a60294680006d45010205038cbda3c77a602946807880c1` | ||||||
|  | ``` | ||||||
|  |        00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f | ||||||
|  | 0000   8f 19 00 1b 04 16 44 28 2d 35 37 33 36 2c 20 34   ......D(-5736, 4 | ||||||
|  | 0010   36 38 37 32 2c 20 32 32 38 38 33 29 03 00 27 00   6872, 22883)..'. | ||||||
|  | 0020   75 44 b3 c5 90 18 37 47 74 c6 b2 46 05 ae 05 00   uD....7Gt..F.... | ||||||
|  | 0030   00 09 91 5f 3c 00 06 51 87 f7 0a 00 04 08 09 00   ..._<..Q........ | ||||||
|  | 0040   00 8a 00 7e 6f 00 d1 fe d2 fd fe 5d ff c2 f8 9a   ...~o......].... | ||||||
|  | 0050   00 6a 09 00 00 00 01 00 00 0c 10 5f 83 00 06 f0   .j........._.... | ||||||
|  | 0060   01 00 07 00 00 c8 00 7e 4d 08 8c fe af ff e2 bb   .......~M....... | ||||||
|  | 0070   00 00 00 fe ff 00 00 00 00 00 00 00 00 09 10 5f   ..............._ | ||||||
|  | 0080   98 00 03 a1 02 00 01 05 00 43 00 7e 38 fe cd fe   .........C.~8... | ||||||
|  | 0090   c2 ff 15 c3 00 73 ff 04 00 8a 00 00 00 00 02 00   .....s.......... | ||||||
|  | 00a0   00 00 10 5f 00 00 06 21 e0 00 da f7 b1 f7 3a 00   ..._...!......:. | ||||||
|  | 00b0   00 c8 00 ff 75 44 b3 c5 90 18 37 47 74 c6 b2 46   ....uD....7Gt..F | ||||||
|  | 00c0   97 f5 d7 02 00 00 00 00 00 00 00 00 00 00 00 00   ................ | ||||||
|  | 00d0   00 00 00 00 00 00 00 00 2c 25 02 15 1f b7 85 aa   ........,%...... | ||||||
|  | 00e0   c5 e9 0a 39 47 ab 9d b4 46 93 13 89 c8 04 6e 09   ...9G...F.....n. | ||||||
|  | 00f0   ea 58 45 58 33 ec 44 a4 f2 1a c4 ff ff 00 00 24   .XEX3.D........$ | ||||||
|  | 0100   02 15 1f 83 5d a7 c5 cc 11 37 47 af 38 ae 46 c2   ....]....7G.8.F. | ||||||
|  | 0110   0f 67 c8 ab c4 32 30 63 45 72 e5 c0 44 0d 29 1f   .g...20cEr..D.). | ||||||
|  | 0120   c4 ff ff 00 00 23 02 15 1f d1 35 b4 c5 ef 1c 39   .....#....5....9 | ||||||
|  | 0130   47 2d 84 b3 46 9b 0e bd c4 d6 4f 92 91 68 45 86   G-..F.....O..hE. | ||||||
|  | 0140   79 b3 44 e8 95 97 c3 ff ff 00 00 22 02 15 1f 88   y.D........".... | ||||||
|  | 0150   76 b2 c5 1e ad 37 47 da fd ad 46 dc 10 62 c9 c1   v....7G...F..b.. | ||||||
|  | 0160   c8 b9 6d 5f 45 ea 9c cd 44 8a 5a 33 c4 ff ff 00   ..m_E...D.Z3.... | ||||||
|  | 0170   00 1f 02 0b 03 76 a8 e2 47 5b 6e 5b 46 7c 1e 99   .....v..G[n[F|.. | ||||||
|  | 0180   46 1e 02 09 03 98 2d 14 c5 ec 79 cb 45 b2 ee 96   F.....-...y.E... | ||||||
|  | 0190   47 1d 02 0e 03 b2 9d bc 46 ca a4 33 46 4a 28 a0   G.......F..3FJ(. | ||||||
|  | 01a0   c7 1c 02 06 03 aa 80 51 46 58 b8 ab 45 8d b0 25   .......QFX..E..% | ||||||
|  | 01b0   c7 1b 02 08 03 ce 49 2f 46 58 b8 ab 45 14 d3 20   ......I/FX..E..  | ||||||
|  | 01c0   c7 1a 02 07 03 44 53 2f 46 58 b8 ab 45 87 cf 16   .....DS/FX..E... | ||||||
|  | 01d0   c7 19 02 05 03 1b 3a 0d 46 58 b8 ab 45 9e af 25   ......:.FX..E..% | ||||||
|  | 01e0   c7 18 02 06 03 0a c3 4c 46 69 e1 fd 46 98 91 ca   .......LFi..F... | ||||||
|  | 01f0   47 17 02 08 03 2e 8c 2a 46 69 e1 fd 46 55 00 cd   G......*Fi..FU.. | ||||||
|  | 0200   47 16 02 07 03 a4 95 2a 46 69 e1 fd 46 1b 02 d2   G......*Fi..F... | ||||||
|  | 0210   47 15 02 05 03 7b 7c 08 46 69 e1 fd 46 0f 92 ca   G....{|.Fi..F... | ||||||
|  | 0220   47 14 02 06 03 da 6b 7e c7 14 aa 37 46 b7 7c 5a   G.....k~...7F.|Z | ||||||
|  | 0230   47 13 02 08 03 c8 7c 83 c7 14 aa 37 46 30 5a 5f   G.....|....7F0Z_ | ||||||
|  | 0240   47 12 02 07 03 9a 7b 83 c7 14 aa 37 46 bd 5d 69   G.....{....7F.]i | ||||||
|  | 0250   47 11 02 05 03 bf be 87 c7 14 aa 37 46 a6 7d 5a   G..........7F.}Z | ||||||
|  | 0260   47 10 02 08 03 c5 c7 19 47 4a d5 d4 45 a7 b3 d2   G.......GJ..E... | ||||||
|  | 0270   c6 0f 02 06 03 7c 55 22 47 4a d5 d4 45 9a 6e dc   .....|U"GJ..E.n. | ||||||
|  | 0280   c6 0e 02 07 03 23 ca 19 47 4a d5 d4 45 8d ac be   .....#..GJ..E... | ||||||
|  | 0290   c6 0d 02 05 03 d8 43 11 47 4a d5 d4 45 bb 6c dc   ......C.GJ..E.l. | ||||||
|  | 02a0   c6 0c 02 06 03 a9 b1 6b 47 d5 2d 97 46 02 dd 15   .......kG.-.F... | ||||||
|  | 02b0   47 0b 02 08 03 f2 23 63 47 d5 2d 97 46 7b ba 1a   G.....#cG.-.F{.. | ||||||
|  | 02c0   47 0a 02 07 03 50 26 63 47 d5 2d 97 46 08 be 24   G....P&cG.-.F..$ | ||||||
|  | 02d0   47 09 02 05 03 05 a0 5a 47 d5 2d 97 46 f1 dd 15   G......ZG.-.F... | ||||||
|  | 02e0   47 08 02 06 03 1f 40 66 c6 38 4b 9c 46 95 5b d3   G.....@f.8K.F.[. | ||||||
|  | 02f0   45 07 02 08 03 7e 3b 84 c6 38 4b 9c 46 61 47 fa   E....~;..8K.FaG. | ||||||
|  | 0300   45 06 02 07 03 c3 36 84 c6 38 4b 9c 46 e4 31 25   E.....6..8K.F.1% | ||||||
|  | 0310   46 05 02 05 03 57 43 95 c6 38 4b 9c 46 10 63 d3   F....WC..8K.F.c. | ||||||
|  | 0320   45 04 02 06 03 ba 34 9b c7 7a 60 29 46 40 f3 87   E.....4..z`)F@.. | ||||||
|  | 0330   c1 03 02 08 03 95 7b 9f c7 7a 60 29 46 65 8f 99   ......{..z`)Fe.. | ||||||
|  | 0340   44 02 02 07 03 67 7a 9f c7 7a 60 29 46 80 00 6d   D....gz..z`)F..m | ||||||
|  | 0350   45 01 02 05 03 8c bd a3 c7 7a 60 29 46 80 78 80   E........z`)F.x. | ||||||
|  | 0360   c1                                                . | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | Size: 0837   PlyId: 003   NumVals: 039 | ||||||
|  |   ( 0:'net  5'-00) 09915f3c00065187f70a0004080900008a007e6f00d1fed2fdfe5dffc2f89a006a09000000 | ||||||
|  |   ( 1:'net  1'-00) 0c105f830006f00100070000c8007e4d088cfeafffe2bb000000feff0000000000 | ||||||
|  |   ( 2:'net  0'-00) 09105f980003a1020001050043007e38fecdfec2ff15c30073ff04008a00000000 | ||||||
|  |   ( 3:'net  2'-00) 00105f00000621e000daf7b1f73a0000c800ff7544b3c59018374774c6b24697f5d70200000000000000000000000000000000000000002c | ||||||
|  |   ( 4:'net549'-15) 1fb785aac5e90a3947ab9db446931389c8046e09ea58455833ec44a4f21ac4ffff0000 | ||||||
|  |   ( 5:'net548'-15) 1f835da7c5cc113747af38ae46c20f67c8abc43230634572e5c0440d291fc4ffff0000 | ||||||
|  |   ( 6:'net547'-15) 1fd135b4c5ef1c39472d84b3469b0ebdc4d64f929168458679b344e89597c3ffff0000 | ||||||
|  |   ( 7:'net546'-15) 1f8876b2c51ead3747dafdad46dc1062c9c1c8b96d5f45ea9ccd448a5a33c4ffff0000 | ||||||
|  |   ( 8:'net543'-0b) 0376a8e2475b6e5b467c1e9946 | ||||||
|  |   ( 9:'net542'-09) 03982d14c5ec79cb45b2ee9647 | ||||||
|  |   (10:'net541'-0e) 03b29dbc46caa433464a28a0c7 | ||||||
|  |   (11:'net540'-06) 03aa80514658b8ab458db025c7 | ||||||
|  |   (12:'net539'-08) 03ce492f4658b8ab4514d320c7 | ||||||
|  |   (13:'net538'-07) 0344532f4658b8ab4587cf16c7 | ||||||
|  |   (14:'net537'-05) 031b3a0d4658b8ab459eaf25c7 | ||||||
|  |   (15:'net536'-06) 030ac34c4669e1fd469891ca47 | ||||||
|  |   (16:'net535'-08) 032e8c2a4669e1fd465500cd47 | ||||||
|  |   (17:'net534'-07) 03a4952a4669e1fd461b02d247 | ||||||
|  |   (18:'net533'-05) 037b7c084669e1fd460f92ca47 | ||||||
|  |   (19:'net532'-06) 03da6b7ec714aa3746b77c5a47 | ||||||
|  |   (20:'net531'-08) 03c87c83c714aa3746305a5f47 | ||||||
|  |   (21:'net530'-07) 039a7b83c714aa3746bd5d6947 | ||||||
|  |   (22:'net529'-05) 03bfbe87c714aa3746a67d5a47 | ||||||
|  |   (23:'net528'-08) 03c5c719474ad5d445a7b3d2c6 | ||||||
|  |   (24:'net527'-06) 037c5522474ad5d4459a6edcc6 | ||||||
|  |   (25:'net526'-07) 0323ca19474ad5d4458dacbec6 | ||||||
|  |   (26:'net525'-05) 03d84311474ad5d445bb6cdcc6 | ||||||
|  |   (27:'net524'-06) 03a9b16b47d52d974602dd1547 | ||||||
|  |   (28:'net523'-08) 03f2236347d52d97467bba1a47 | ||||||
|  |   (29:'net522'-07) 0350266347d52d974608be2447 | ||||||
|  |   (30:'net521'-05) 0305a05a47d52d9746f1dd1547 | ||||||
|  |   (31:'net520'-06) 031f4066c6384b9c46955bd345 | ||||||
|  |   (32:'net519'-08) 037e3b84c6384b9c466147fa45 | ||||||
|  |   (33:'net518'-07) 03c33684c6384b9c46e4312546 | ||||||
|  |   (34:'net517'-05) 03574395c6384b9c461063d345 | ||||||
|  |   (35:'net516'-06) 03ba349bc77a60294640f387c1 | ||||||
|  |   (36:'net515'-08) 03957b9fc77a602946658f9944 | ||||||
|  |   (37:'net514'-07) 03677a9fc77a60294680006d45 | ||||||
|  |   (38:'net513'-05) 038cbda3c77a602946807880c1 | ||||||
|  | ``` | ||||||
							
								
								
									
										4
									
								
								Untitled.canvas
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								Untitled.canvas
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | ||||||
|  | { | ||||||
|  | 	"nodes":[], | ||||||
|  | 	"edges":[] | ||||||
|  | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue