From c7a0873ca8214ef8773f3d211e8a9b45744f394c Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Wed, 10 Sep 2025 21:08:43 -0700 Subject: [PATCH] fix cross-floor commands in EnemyDamageSync --- .../EnemyDamageSyncWIP.3___.patch.s | 17 ++- .../EnemyDamageSyncWIP.4___.patch.s | 19 ++- .../EnemyDamageSyncWIP.59NL.patch.s | 18 ++- tests/GC-XB-EnemyDamageSyncSwitch.test.txt | 137 +++++++++--------- tests/XB-GC-EnemyDamageSyncSwitch.test.txt | 47 +++--- 5 files changed, 132 insertions(+), 106 deletions(-) diff --git a/system/client-functions/EnemyDamageSyncWIP/EnemyDamageSyncWIP.3___.patch.s b/system/client-functions/EnemyDamageSyncWIP/EnemyDamageSyncWIP.3___.patch.s index ca411e02..01f89c19 100644 --- a/system/client-functions/EnemyDamageSyncWIP/EnemyDamageSyncWIP.3___.patch.s +++ b/system/client-functions/EnemyDamageSyncWIP/EnemyDamageSyncWIP.3___.patch.s @@ -155,7 +155,13 @@ handle_6xE4: # [std] (G_IncrementEnemyDamage_Extension_6xE4* cmd @ r3) -> void blt handle_6xE4_return cmplwi r3, 0x1B50 bge handle_6xE4_return - bl state_for_enemy # auto* st = state_for_enemy(cmd->header.entity_id); + + bl get_enemy_entity + stw [r1 + 0x18], r3 # TObjEnemy* ene @ var18 = get_enemy_entity(cmd->header.entity_id); + + li r3, 2 + lhbrx r3, [r31 + r3] + bl state_for_enemy # EnemyState* st = state_for_enemy(cmd->header.entity_id); lhz r4, [r3 + 6] # st->total_damage li r5, 0x04 @@ -175,7 +181,10 @@ handle_6xE4: # [std] (G_IncrementEnemyDamage_Extension_6xE4* cmd @ r3) -> void ori r4, r4, 0x800 stw [r3], r4 # st->game_flags |= 0x800; - # Send 6x0A with dead flag + # Send 6x0A with dead flag, but only if the entity is constructed + lwz r6, [r1 + 0x18] + cmplwi r6, 0 + beq handle_6xE4_return stw [r1 + 0x14], r4 li r6, 0x12 sthbrx [r1 + r6], r5 @@ -198,9 +207,7 @@ handle_6xE4_damage_nonnegative: mr r30, r3 bl send_debug_info - li r3, 2 - lhbrx r3, [r31 + r3] - bl get_enemy_entity + lwz r3, [r1 + 0x18] # if (ene) ene->v50_on_state_updated(&st); cmplwi r3, 0 beq handle_6xE4_return mr r4, r30 diff --git a/system/client-functions/EnemyDamageSyncWIP/EnemyDamageSyncWIP.4___.patch.s b/system/client-functions/EnemyDamageSyncWIP/EnemyDamageSyncWIP.4___.patch.s index 02469ff9..a80e1f69 100644 --- a/system/client-functions/EnemyDamageSyncWIP/EnemyDamageSyncWIP.4___.patch.s +++ b/system/client-functions/EnemyDamageSyncWIP/EnemyDamageSyncWIP.4___.patch.s @@ -179,6 +179,11 @@ handle_6xE4: # [std] (G_6xE4* cmd @ [esp + 4]) -> void cmp eax, 0x1B50 jge handle_6xE4_return + mov edi, eax + call # TObjEnemy* ene = get_enemy_entity(cmd->header.entity_id); + push eax + + movzx eax, word [ebx + 2] and eax, 0x0FFF imul eax, eax, 0x0C add eax, [] # eax = state_for_enemy(cmd->header.entity_id) @@ -192,9 +197,12 @@ handle_6xE4: # [std] (G_6xE4* cmd @ [esp + 4]) -> void mov [eax + 0x06], di # st.total_damage = cmd->max_hp; mov edx, [eax] test edx, 0x800 - jnz handle_6xE4_return + jnz handle_6xE4_return_pop_ene or edx, 0x800 mov [eax], edx + + cmp dword [esp], 0 + je handle_6xE4_return_pop_ene push edx # out_cmd.flags sub esp, 8 mov word [esp], 0x030A # out_cmd.header.{subcommand,size} @@ -216,7 +224,7 @@ handle_6xE4_root_protocol_missing: call # handle_60(&out_cmd) mov dword [], 0 - add esp, 0x10 + add esp, 0x14 jmp handle_6xE4_return handle_6xE4_damage_less_than_max_hp: @@ -226,15 +234,16 @@ handle_6xE4_damage_less_than_max_hp: mov [eax + 0x06], dx # st.total_damage = std::max(st.total_damage + cmd->hit_amount, 0); mov esi, eax # esi = ene_st - movzx di, word [ebx + 2] - call # auto* ene = get_enemy_entity(cmd->header.entity_id); + mov eax, [esp] # eax = ene test eax, eax - jz handle_6xE4_return + jz handle_6xE4_return_pop_ene mov ecx, eax push esi mov edx, [ecx] call [edx + 0x138] # ene->vtable[0x4E](ene, &st); +handle_6xE4_return_pop_ene: + add esp, 4 handle_6xE4_return: pop edi pop esi diff --git a/system/client-functions/EnemyDamageSyncWIP/EnemyDamageSyncWIP.59NL.patch.s b/system/client-functions/EnemyDamageSyncWIP/EnemyDamageSyncWIP.59NL.patch.s index 704e28d1..6ed58577 100644 --- a/system/client-functions/EnemyDamageSyncWIP/EnemyDamageSyncWIP.59NL.patch.s +++ b/system/client-functions/EnemyDamageSyncWIP/EnemyDamageSyncWIP.59NL.patch.s @@ -37,6 +37,11 @@ handle_6xE4_start: # (G_6xE4* cmd @ [esp + 4]) -> void cmp eax, 0x1B50 jge handle_6xE4_return + movzx eax, word [ebx + 2] + .include GetEnemyEntity-59NL # auto* ene = get_enemy_entity(cmd->header.entity_id); + push eax + + movzx eax, word [ebx + 2] and eax, 0x0FFF imul eax, eax, 0x0C add eax, [0x00AB02B8] # eax = state_for_enemy(cmd->header.entity_id) @@ -50,9 +55,11 @@ handle_6xE4_start: # (G_6xE4* cmd @ [esp + 4]) -> void mov [eax + 0x06], di # st.total_damage = cmd->max_hp; mov edx, [eax] test edx, 0x800 - jnz handle_6xE4_return + jnz handle_6xE4_return_pop_ene or edx, 0x800 mov [eax], edx + cmp dword [esp], 0 + je handle_6xE4_return_pop_ene push edx # out_cmd.flags sub esp, 8 mov word [esp], 0x030A # out_cmd.header.{subcommand,size} @@ -64,7 +71,7 @@ handle_6xE4_start: # (G_6xE4* cmd @ [esp + 4]) -> void mov ecx, esp mov edx, 0x008003E0 call edx # send_and_handle_60(&out_cmd); - add esp, 0x0C + add esp, 0x10 jmp handle_6xE4_return handle_6xE4_damage_less_than_max_hp: @@ -74,15 +81,16 @@ handle_6xE4_damage_less_than_max_hp: mov [eax + 0x06], dx # st.total_damage = std::max(st.total_damage + cmd->hit_amount, 0); mov edx, eax # edx = ene_st - movzx eax, word [ebx + 2] - .include GetEnemyEntity-59NL # auto* ene = get_enemy_entity(cmd->header.entity_id); + mov eax, [esp] # eax = ene test eax, eax - jz handle_6xE4_return + jz handle_6xE4_return_pop_ene mov ecx, eax push edx mov edx, [ecx] call [edx + 0x148] # ene->vtable[0x52](ene, &st); +handle_6xE4_return_pop_ene: + add esp, 4 handle_6xE4_return: pop edi pop esi diff --git a/tests/GC-XB-EnemyDamageSyncSwitch.test.txt b/tests/GC-XB-EnemyDamageSyncSwitch.test.txt index 9f815a5b..53b23449 100644 --- a/tests/GC-XB-EnemyDamageSyncSwitch.test.txt +++ b/tests/GC-XB-EnemyDamageSyncSwitch.test.txt @@ -628,7 +628,7 @@ I 33336 2025-07-21 23:40:37 - [Commands] Received from C-2 (Tali Lv.60) @ ipss:N 0000 | B3 00 0C 00 BC 01 00 80 00 00 00 00 | I 33336 2025-07-21 23:40:37 - [C-2] Client cache behavior patched I 33336 2025-07-21 23:40:37 - [Commands] Sending to C-2 (Tali Lv.60) @ ipss:N-1:127.0.0.1:53977 (version=GC_V3 command=B2 flag=00) -0000 | B2 00 04 05 F4 04 00 00 00 00 00 00 00 00 00 00 | +0000 | B2 00 18 05 08 05 00 00 00 00 00 00 00 00 00 00 | 0010 | 00 00 00 04 7D 08 02 A6 48 00 00 88 7C E8 02 A6 | } H | 0020 | 38 87 00 08 80 64 FF F8 80 A4 FF FC 7C 60 2B 78 | 8 d |`+x 0030 | 28 00 00 00 7D 08 03 A6 4D 82 00 20 7C E4 2A 14 | ( } M | * @@ -639,76 +639,77 @@ I 33336 2025-07-21 23:40:37 - [Commands] Sending to C-2 (Tali Lv.60) @ ipss:N-1: 0080 | 7C 00 28 6C 7C 00 04 AC 7C 00 2F AC 30 A5 00 08 | | (l| | / 0 0090 | 34 84 FF F8 40 80 FF EC 4C 00 01 2C 4B FF FF 84 | 4 @ L ,K 00A0 | 4B FF FF 7D 80 1E 45 28 00 00 00 08 2C 00 00 00 | K } E( , -00B0 | 41 82 00 0C 80 0F 63 08 00 00 00 04 4B F0 E0 C9 | A c K -00C0 | 80 0F 63 60 00 00 00 04 4B F0 E0 85 80 4C 0D 74 | c` K L t +00B0 | 41 82 00 0C 80 0F 63 08 00 00 00 04 4B F0 E0 DD | A c K +00C0 | 80 0F 63 60 00 00 00 04 4B F0 E0 99 80 4C 0D 74 | c` K L t 00D0 | 00 00 00 08 00 E4 00 06 80 00 41 C0 80 01 3A 90 | A : -00E0 | 00 00 00 04 4B FF 08 4D 80 01 15 08 00 00 00 04 | K M -00F0 | 4B FF 2D DD 80 01 1C 68 00 00 00 04 4B FF 26 7D | K - h K &} -0100 | 80 01 1C B8 00 00 00 04 4B FF 26 2D 80 01 1D 34 | K &- 4 -0110 | 00 00 00 04 4B FF 25 B1 80 01 1D 84 00 00 00 04 | K % -0120 | 4B FF 25 61 80 01 27 8C 00 00 00 04 4B FF 1B 59 | K %a ' K Y -0130 | 80 01 2B 00 00 00 00 04 4B FF 17 E5 80 01 2C 70 | + K ,p -0140 | 00 00 00 04 4B FF 16 75 80 01 30 24 00 00 00 04 | K u 0$ -0150 | 4B FF 12 C1 80 01 34 6C 00 00 00 04 4B FF 0E 79 | K 4l K y -0160 | 80 01 35 64 00 00 00 04 4B FF 0D 81 80 01 36 5C | 5d K 6\ -0170 | 00 00 00 04 4B FF 0C 89 80 01 37 C4 00 00 00 04 | K 7 -0180 | 4B FF 0B 21 80 01 39 04 00 00 00 04 4B FF 09 E1 | K ! 9 K -0190 | 80 01 3E 18 00 00 00 04 4B FF 04 CD 80 01 3F 1C | > K ? -01A0 | 00 00 00 04 4B FF 03 C9 80 01 47 88 00 00 00 04 | K G -01B0 | 4B FE FB 5D 80 00 41 C0 00 00 03 1C 81 8D AF 78 | K ] A x +00E0 | 00 00 00 04 4B FF 08 61 80 01 15 08 00 00 00 04 | K a +00F0 | 4B FF 2D F1 80 01 1C 68 00 00 00 04 4B FF 26 91 | K - h K & +0100 | 80 01 1C B8 00 00 00 04 4B FF 26 41 80 01 1D 34 | K &A 4 +0110 | 00 00 00 04 4B FF 25 C5 80 01 1D 84 00 00 00 04 | K % +0120 | 4B FF 25 75 80 01 27 8C 00 00 00 04 4B FF 1B 6D | K %u ' K m +0130 | 80 01 2B 00 00 00 00 04 4B FF 17 F9 80 01 2C 70 | + K ,p +0140 | 00 00 00 04 4B FF 16 89 80 01 30 24 00 00 00 04 | K 0$ +0150 | 4B FF 12 D5 80 01 34 6C 00 00 00 04 4B FF 0E 8D | K 4l K +0160 | 80 01 35 64 00 00 00 04 4B FF 0D 95 80 01 36 5C | 5d K 6\ +0170 | 00 00 00 04 4B FF 0C 9D 80 01 37 C4 00 00 00 04 | K 7 +0180 | 4B FF 0B 35 80 01 39 04 00 00 00 04 4B FF 09 F5 | K 5 9 K +0190 | 80 01 3E 18 00 00 00 04 4B FF 04 E1 80 01 3F 1C | > K ? +01A0 | 00 00 00 04 4B FF 03 DD 80 01 47 88 00 00 00 04 | K G +01B0 | 4B FE FB 71 80 00 41 C0 00 00 03 30 81 8D AF 78 | K q A 0 x 01C0 | 71 8C 00 80 4D 82 00 20 7C 08 02 A6 90 01 00 04 | q M | 01D0 | 94 21 FF E0 93 E1 00 08 93 C1 00 0C 7C 7F 1B 78 | ! | x -01E0 | 38 60 00 02 7C 7F 1E 2C 28 03 10 00 41 80 00 C0 | 8` | ,( A -01F0 | 28 03 1B 50 40 80 00 B8 48 00 00 CD A0 83 00 06 | ( P@ H -0200 | 38 A0 00 04 7C BF 2E 2C 7C 84 2A 14 38 A0 00 0A | 8 | .,| * 8 -0210 | 7C BF 2E 2C 7C 04 28 00 41 80 00 50 B0 A3 00 06 | | .,| ( A P -0220 | 38 80 00 0C 48 00 01 FD 80 83 00 00 70 80 08 00 | 8 H p -0230 | 40 82 00 7C 60 84 08 00 90 83 00 00 90 81 00 14 | @ |` -0240 | 38 C0 00 12 7C A1 37 2C A0 DF 00 02 64 C6 0A 03 | 8 | 7, d -0250 | 90 C1 00 0C 70 C6 FF 0F B0 C1 00 10 38 61 00 0C | p 8a -0260 | 48 1E 02 4D 48 00 00 48 2C 04 00 00 40 80 00 08 | H MH H, @ -0270 | 38 80 00 00 B0 83 00 06 38 80 00 0C 7C 7E 1B 78 | 8 8 |~ x -0280 | 48 00 01 A1 38 60 00 02 7C 7F 1E 2C 48 0F 26 1D | H 8` | ,H & -0290 | 28 03 00 00 41 82 00 18 7F C4 F3 78 81 83 00 18 | ( A x -02A0 | 81 8C 01 40 7D 89 03 A6 4E 80 04 21 83 C1 00 0C | @} N ! -02B0 | 83 E1 00 08 38 21 00 20 80 01 00 04 7C 08 03 A6 | 8! | -02C0 | 4E 80 00 20 80 8D BB 24 70 63 0F FF 1C 63 00 0C | N $pc c -02D0 | 7C 63 22 14 4E 80 00 20 38 A0 00 01 48 00 00 08 | |c" N 8 H -02E0 | 38 A0 00 00 81 8D AF 78 71 8C 00 80 41 82 00 D0 | 8 xq A -02F0 | A0 03 00 1C 28 00 10 00 41 80 00 C4 28 00 1B 50 | ( A ( P -0300 | 40 80 00 BC 81 6D AF 60 28 0B 00 00 41 82 00 B0 | @ m `( A -0310 | 7C 08 02 A6 90 01 00 04 94 21 FF E0 93 A1 00 14 | | ! -0320 | 93 C1 00 18 93 E1 00 1C 7C 7D 1B 78 7C 9E 23 78 | |} x| #x -0330 | 7C BF 2B 78 A0 7D 00 1C 4B FF FF 8D 7F C5 F3 78 | | +x } K x -0340 | 28 1F 00 00 41 82 00 08 7C A5 00 D0 38 80 00 1C | ( A | 8 -0350 | 7C 9D 26 2C 64 84 E4 03 90 81 00 08 38 80 00 0C | | &,d 8 -0360 | 7C A1 27 2C 38 80 00 06 7C 83 26 2C B0 81 00 0E | | ',8 | &, -0370 | 38 80 03 2C 7C 9D 26 2C B0 81 00 10 38 80 02 B8 | 8 ,| &, 8 -0380 | 7C 9D 26 2C B0 81 00 12 7D 63 5B 78 38 81 00 08 | | &, }c[x8 -0390 | 38 A0 00 0C 48 1D 7C 49 7F A3 EB 78 7F C4 F3 78 | 8 H |I x x -03A0 | 7F E5 FB 78 83 E1 00 1C 83 C1 00 18 83 A1 00 14 | x -03B0 | 38 21 00 20 80 01 00 04 7C 08 03 A6 28 05 00 00 | 8! | ( -03C0 | 41 82 00 08 48 00 D0 8C 48 00 D0 C8 81 8D AF 78 | A H H x -03D0 | 71 8C 00 80 4C 82 00 20 B0 61 00 0E 4E 80 00 20 | q L a N -03E0 | 7C 08 02 A6 90 01 00 04 94 21 FF E0 7C 66 1B 78 | | ! |f x -03F0 | 7C 87 23 78 7C 83 23 78 38 80 00 0C 38 A0 FF FF | | #x| #x8 8 -0400 | 48 00 00 21 7C C3 33 78 7C E4 3B 78 38 21 00 20 | H !| 3x| ;x8! -0410 | 80 01 00 04 7C 08 03 A6 7D 89 03 A6 4E 80 04 20 | | } N -0420 | 7C 08 02 A6 90 01 00 04 90 61 FF FC 90 81 FF F8 | | a -0430 | 90 A1 FF F4 90 C1 FF F0 90 E1 FF EC 91 01 FF E8 | -0440 | 91 21 FF E4 91 41 FF E0 91 61 FF DC 91 81 FF D8 | ! A a -0450 | 38 C1 FF C0 7C C4 30 50 90 26 00 00 7C C1 33 78 | 8 | 0P & | 3x -0460 | 54 86 72 1E 3C C6 00 01 64 C6 FF 00 54 A5 04 3E | T r < d T > -0470 | 7C A5 33 78 90 A1 00 08 38 C0 00 00 38 63 FF FC | | 3x 8 8c -0480 | 38 E1 00 08 54 80 F6 3E 7C 09 03 A6 84 03 00 04 | 8 T >| -0490 | 94 07 00 04 42 00 FF F8 38 61 00 08 48 1E 00 11 | B 8a H -04A0 | 80 21 00 00 80 61 FF FC 80 81 FF F8 80 A1 FF F4 | ! a -04B0 | 80 C1 FF F0 80 E1 FF EC 81 01 FF E8 81 21 FF E4 | ! -04C0 | 81 41 FF E0 81 61 FF DC 81 81 FF D8 80 01 00 04 | A a -04D0 | 7C 08 03 A6 4E 80 00 20 00 00 00 00 00 00 00 00 | | N -04E0 | 00 00 00 00 00 00 04 D0 00 00 00 01 00 00 00 00 | -04F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0500 | 00 00 00 00 | +01E0 | 38 60 00 02 7C 7F 1E 2C 28 03 10 00 41 80 00 D4 | 8` | ,( A +01F0 | 28 03 1B 50 40 80 00 CC 48 0F 26 B1 90 61 00 18 | ( P@ H & a +0200 | 38 60 00 02 7C 7F 1E 2C 48 00 00 D1 A0 83 00 06 | 8` | ,H +0210 | 38 A0 00 04 7C BF 2E 2C 7C 84 2A 14 38 A0 00 0A | 8 | .,| * 8 +0220 | 7C BF 2E 2C 7C 04 28 00 41 80 00 5C B0 A3 00 06 | | .,| ( A \ +0230 | 38 80 00 0C 48 00 02 01 80 83 00 00 70 80 08 00 | 8 H p +0240 | 40 82 00 80 60 84 08 00 90 83 00 00 80 C1 00 18 | @ ` +0250 | 28 06 00 00 41 82 00 6C 90 81 00 14 38 C0 00 12 | ( A l 8 +0260 | 7C A1 37 2C A0 DF 00 02 64 C6 0A 03 90 C1 00 0C | | 7, d +0270 | 70 C6 FF 0F B0 C1 00 10 38 61 00 0C 48 1E 02 31 | p 8a H 1 +0280 | 48 00 00 40 2C 04 00 00 40 80 00 08 38 80 00 00 | H @, @ 8 +0290 | B0 83 00 06 38 80 00 0C 7C 7E 1B 78 48 00 01 99 | 8 |~ xH +02A0 | 80 61 00 18 28 03 00 00 41 82 00 18 7F C4 F3 78 | a ( A x +02B0 | 81 83 00 18 81 8C 01 40 7D 89 03 A6 4E 80 04 21 | @} N ! +02C0 | 83 C1 00 0C 83 E1 00 08 38 21 00 20 80 01 00 04 | 8! +02D0 | 7C 08 03 A6 4E 80 00 20 80 8D BB 24 70 63 0F FF | | N $pc +02E0 | 1C 63 00 0C 7C 63 22 14 4E 80 00 20 38 A0 00 01 | c |c" N 8 +02F0 | 48 00 00 08 38 A0 00 00 81 8D AF 78 71 8C 00 80 | H 8 xq +0300 | 41 82 00 D0 A0 03 00 1C 28 00 10 00 41 80 00 C4 | A ( A +0310 | 28 00 1B 50 40 80 00 BC 81 6D AF 60 28 0B 00 00 | ( P@ m `( +0320 | 41 82 00 B0 7C 08 02 A6 90 01 00 04 94 21 FF E0 | A | ! +0330 | 93 A1 00 14 93 C1 00 18 93 E1 00 1C 7C 7D 1B 78 | |} x +0340 | 7C 9E 23 78 7C BF 2B 78 A0 7D 00 1C 4B FF FF 8D | | #x| +x } K +0350 | 7F C5 F3 78 28 1F 00 00 41 82 00 08 7C A5 00 D0 | x( A | +0360 | 38 80 00 1C 7C 9D 26 2C 64 84 E4 03 90 81 00 08 | 8 | &,d +0370 | 38 80 00 0C 7C A1 27 2C 38 80 00 06 7C 83 26 2C | 8 | ',8 | &, +0380 | B0 81 00 0E 38 80 03 2C 7C 9D 26 2C B0 81 00 10 | 8 ,| &, +0390 | 38 80 02 B8 7C 9D 26 2C B0 81 00 12 7D 63 5B 78 | 8 | &, }c[x +03A0 | 38 81 00 08 38 A0 00 0C 48 1D 7C 35 7F A3 EB 78 | 8 8 H |5 x +03B0 | 7F C4 F3 78 7F E5 FB 78 83 E1 00 1C 83 C1 00 18 | x x +03C0 | 83 A1 00 14 38 21 00 20 80 01 00 04 7C 08 03 A6 | 8! | +03D0 | 28 05 00 00 41 82 00 08 48 00 D0 78 48 00 D0 B4 | ( A H xH +03E0 | 81 8D AF 78 71 8C 00 80 4C 82 00 20 B0 61 00 0E | xq L a +03F0 | 4E 80 00 20 7C 08 02 A6 90 01 00 04 94 21 FF E0 | N | ! +0400 | 7C 66 1B 78 7C 87 23 78 7C 83 23 78 38 80 00 0C | |f x| #x| #x8 +0410 | 38 A0 FF FF 48 00 00 21 7C C3 33 78 7C E4 3B 78 | 8 H !| 3x| ;x +0420 | 38 21 00 20 80 01 00 04 7C 08 03 A6 7D 89 03 A6 | 8! | } +0430 | 4E 80 04 20 7C 08 02 A6 90 01 00 04 90 61 FF FC | N | a +0440 | 90 81 FF F8 90 A1 FF F4 90 C1 FF F0 90 E1 FF EC | +0450 | 91 01 FF E8 91 21 FF E4 91 41 FF E0 91 61 FF DC | ! A a +0460 | 91 81 FF D8 38 C1 FF C0 7C C4 30 50 90 26 00 00 | 8 | 0P & +0470 | 7C C1 33 78 54 86 72 1E 3C C6 00 01 64 C6 FF 00 | | 3xT r < d +0480 | 54 A5 04 3E 7C A5 33 78 90 A1 00 08 38 C0 00 00 | T >| 3x 8 +0490 | 38 63 FF FC 38 E1 00 08 54 80 F6 3E 7C 09 03 A6 | 8c 8 T >| +04A0 | 84 03 00 04 94 07 00 04 42 00 FF F8 38 61 00 08 | B 8a +04B0 | 48 1D FF FD 80 21 00 00 80 61 FF FC 80 81 FF F8 | H ! a +04C0 | 80 A1 FF F4 80 C1 FF F0 80 E1 FF EC 81 01 FF E8 | +04D0 | 81 21 FF E4 81 41 FF E0 81 61 FF DC 81 81 FF D8 | ! A a +04E0 | 80 01 00 04 7C 08 03 A6 4E 80 00 20 00 00 00 00 | | N +04F0 | 00 00 00 00 00 00 00 00 00 00 04 E4 00 00 00 01 | +0500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0510 | 00 00 00 00 00 00 00 00 | I 33336 2025-07-21 23:40:37 - [Commands] Received from C-2 (Tali Lv.60) @ ipss:N-1:127.0.0.1:53977 (version=GC_V3 command=B3 flag=00) 0000 | B3 00 0C 00 00 00 00 00 00 00 00 00 | I 33336 2025-07-21 23:40:39 - [Commands] Received from C-2 (Tali Lv.60) @ ipss:N-1:127.0.0.1:53977 (version=GC_V3 command=60 flag=00) diff --git a/tests/XB-GC-EnemyDamageSyncSwitch.test.txt b/tests/XB-GC-EnemyDamageSyncSwitch.test.txt index 321064f3..9bba1188 100644 --- a/tests/XB-GC-EnemyDamageSyncSwitch.test.txt +++ b/tests/XB-GC-EnemyDamageSyncSwitch.test.txt @@ -955,7 +955,7 @@ I 34886 2025-07-21 23:45:01 - [Commands] Received from C-3 (Jess Lv.51) @ ip:127 0000 | B3 00 0C 00 55 45 4F 34 00 00 00 00 | UEO4 I 34886 2025-07-21 23:45:01 - [C-3] Version detected as 344F4555 I 34886 2025-07-21 23:45:22 - [Commands] Sending to C-3 (Jess Lv.51) @ ip:127.0.0.1:54521 (version=XB_V3 command=B2 flag=00) -0000 | B2 00 A4 05 94 05 00 00 00 00 00 00 00 00 00 00 | +0000 | B2 00 B4 05 A4 05 00 00 00 00 00 00 00 00 00 00 | 0010 | 7C 01 00 00 51 52 E8 B0 00 00 00 42 4A 4F 34 60 | | QR BJO4` 0020 | D4 43 00 78 05 40 00 7C 05 40 00 F0 63 2C 00 E0 | C x @ | @ c, 0030 | 05 63 00 44 4A 4F 34 D0 D7 43 00 18 09 40 00 1C | c DJO4 C @ @@ -1023,29 +1023,30 @@ I 34886 2025-07-21 23:45:22 - [Commands] Sending to C-3 (Jess Lv.51) @ ip:127.0. 0410 | FF 73 04 FF 33 8D 5C 0B 08 8B 4F 08 FF 11 EB BA | s 3 \ O 0420 | E8 B4 FF FF FF 00 DC 2D 00 09 00 00 00 83 3D B8 | - = 0430 | 54 63 00 00 74 38 40 B8 53 00 08 00 00 00 E4 00 | Tc t8@ S -0440 | 06 00 73 C9 2D 00 70 C9 2D 00 EB 00 00 00 C2 04 | s - p - -0450 | 00 53 56 57 F6 05 B8 54 63 00 80 0F 84 D4 00 00 | SVW Tc +0440 | 06 00 73 C9 2D 00 70 C9 2D 00 FA 00 00 00 C2 04 | s - p - +0450 | 00 53 56 57 F6 05 B8 54 63 00 80 0F 84 E3 00 00 | SVW Tc 0460 | 00 8B 5C 24 10 0F B7 43 02 3D 00 10 00 00 0F 8C | \$ C = -0470 | C1 00 00 00 3D 50 1B 00 00 0F 8D B6 00 00 00 25 | =P % -0480 | FF 0F 00 00 6B C0 0C 03 05 90 7F 63 00 0F B7 50 | k c P -0490 | 06 0F BF 73 04 0F B7 7B 0A 01 F2 39 FA 7C 71 66 | s { 9 |qf -04A0 | 89 78 06 8B 10 F7 C2 00 08 00 00 0F 85 84 00 00 | x -04B0 | 00 81 CA 00 08 00 00 89 10 52 83 EC 08 66 C7 04 | R f -04C0 | 24 0A 03 66 8B 73 02 66 89 74 24 02 66 81 E6 FF | $ f s f t$ f -04D0 | 0F 66 89 74 24 04 66 89 7C 24 06 89 E1 51 8B 1D | f t$ f |$ Q -04E0 | 20 3E 72 00 85 DB 74 0A B8 0C 00 00 00 E8 6C FB | >r t l -04F0 | FF FF C7 05 E8 37 72 00 01 00 00 00 E8 6D 16 00 | 7r m -0500 | 00 C7 05 E8 37 72 00 00 00 00 00 83 C4 10 EB 25 | 7r % -0510 | 31 FF 39 D2 0F 4C D7 66 89 50 06 89 C6 0F B7 7B | 1 9 L f P { -0520 | 02 E8 B8 89 FD FF 85 C0 74 0B 89 C1 56 8B 11 FF | t V -0530 | 92 38 01 00 00 5F 5E 5B C3 A0 9C 2A 00 13 00 00 | 8 _^[ * -0540 | 00 66 83 B8 28 03 00 00 02 75 03 31 C0 C3 E8 FF | f ( u 1 -0550 | FF FF FF C3 EA 7C 2A 00 1A 00 00 00 66 89 C1 89 | |* f -0560 | F8 E8 FF FF FF FF EB 0E CC CC CC CC CC CC CC CC | -0570 | CC CC CC CC CC CC 00 00 00 00 00 00 00 00 00 00 | -0580 | 00 00 00 00 70 05 00 00 01 00 00 00 00 00 00 00 | p -0590 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -05A0 | 00 00 00 00 | +0470 | D0 00 00 00 3D 50 1B 00 00 0F 8D C5 00 00 00 89 | =P +0480 | C7 E8 58 8A FD FF 50 0F B7 43 02 25 FF 0F 00 00 | X P C % +0490 | 6B C0 0C 03 05 90 7F 63 00 0F B7 50 06 0F BF 73 | k c P s +04A0 | 04 0F B7 7B 0A 01 F2 39 FA 7C 77 66 89 78 06 8B | { 9 |wf x +04B0 | 10 F7 C2 00 08 00 00 0F 85 84 00 00 00 81 CA 00 | +04C0 | 08 00 00 89 10 83 3C 24 00 74 76 52 83 EC 08 66 | <$ tvR f +04D0 | C7 04 24 0A 03 66 8B 73 02 66 89 74 24 02 66 81 | $ f s f t$ f +04E0 | E6 FF 0F 66 89 74 24 04 66 89 7C 24 06 89 E1 51 | f t$ f |$ Q +04F0 | 8B 1D 20 3E 72 00 85 DB 74 0A B8 0C 00 00 00 E8 | >r t +0500 | 5A FB FF FF C7 05 E8 37 72 00 01 00 00 00 E8 5B | Z 7r [ +0510 | 16 00 00 C7 05 E8 37 72 00 00 00 00 00 83 C4 14 | 7r +0520 | EB 22 31 FF 39 D2 0F 4C D7 66 89 50 06 89 C6 8B | "1 9 L f P +0530 | 04 24 85 C0 74 0B 89 C1 56 8B 11 FF 92 38 01 00 | $ t V 8 +0540 | 00 83 C4 04 5F 5E 5B C3 A0 9C 2A 00 13 00 00 00 | _^[ * +0550 | 66 83 B8 28 03 00 00 02 75 03 31 C0 C3 E8 FF FF | f ( u 1 +0560 | FF FF C3 EA 7C 2A 00 1A 00 00 00 66 89 C1 89 F8 | |* f +0570 | E8 FF FF FF FF EB 0E CC CC CC CC CC CC CC CC CC | +0580 | CC CC CC CC CC 00 00 00 00 00 00 00 00 00 00 00 | +0590 | 00 00 00 00 80 05 00 00 01 00 00 00 00 00 00 00 | +05A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +05B0 | 00 00 00 00 | I 34886 2025-07-21 23:45:24 - [Commands] Received from C-3 (Jess Lv.51) @ ip:127.0.0.1:54521 (version=XB_V3 command=B3 flag=00) 0000 | B3 00 0C 00 46 25 E8 00 00 00 00 00 | F% I 34886 2025-07-21 23:45:25 - [Commands] Received from C-3 (Jess Lv.51) @ ip:127.0.0.1:54521 (version=XB_V3 command=60 flag=00)