From cf0bdfbd7c9671ecac51707970b222363eb93c01 Mon Sep 17 00:00:00 2001 From: Jas Laferriere Date: Tue, 15 Aug 2023 16:34:50 -0400 Subject: [PATCH 1/6] feat: exi handlers for music control --- Data/Sys/GameSettings/GALE01r2.ini | 67 +++++++++++++++++-- Data/Sys/GameSettings/GALJ01r2.ini | 67 +++++++++++++++++-- .../InjectionLists/list_console_core.json | 7 ++ .../Slippi/InjectionLists/list_netplay.json | 35 ++++++++-- Source/Core/Core/HW/EXI_DeviceSlippi.cpp | 15 +++++ Source/Core/Core/HW/EXI_DeviceSlippi.h | 6 ++ Source/Core/Core/Slippi/SlippiExiTypes.h | 21 ++++++ 7 files changed, 201 insertions(+), 17 deletions(-) diff --git a/Data/Sys/GameSettings/GALE01r2.ini b/Data/Sys/GameSettings/GALE01r2.ini index 582eefce17..d377db37bc 100644 --- a/Data/Sys/GameSettings/GALE01r2.ini +++ b/Data/Sys/GameSettings/GALE01r2.ini @@ -1021,6 +1021,11 @@ C208D698 00000005 #Recording/GetLCancelStatus/GetLCancelStatus.asm C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm 38600000 987E25FF 807E00B0 00000000 +C21A4CB4 00000004 #Common/AllocBuffer.asm +38600080 3D808037 +618CF1E4 7D8903A6 +4E800421 906DAFC4 +38000000 00000000 C20055F8 0000000F #Common/GetIsFollower.asm 7C0802A6 90010004 9421FF20 BE8100B0 @@ -2040,11 +2045,6 @@ BA8100B0 800100E4 800100E4 382100E0 7C0803A6 2C1E0000 60000000 00000000 -C21A4CB4 00000004 #Online/Core/EXIFileLoad/AllocBuffer.asm -38600080 3D808037 -618CF1E4 7D8903A6 -4E800421 906DAFC4 -38000000 00000000 C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm 7C7E1B78 7C0802A6 90010004 9421FF20 @@ -2194,6 +2194,63 @@ C2019608 0000000F #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm 618C9618 7D8903A6 4E800420 38600000 60000000 00000000 +C238E910 0000001A #Online/Core/Music/StartSong.asm +7C0802A6 90010004 +9421FF54 BE81007C +7C7E1B78 3D808034 +618C7364 7D8903A6 +4E800421 7C7D1B78 +7FC3F378 38810008 +3D808033 618C7C60 +7D8903A6 4E800421 +2C030000 41820044 +3BE10048 3BFF001F +57FF0034 386000D6 +987F0000 80610038 +907F0001 8061003C +907F0005 7FE3FB78 +38800009 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +38610008 3D808033 +618C7CD4 7D8903A6 +4E800421 7FA3EB78 +3D808034 618C738C +7D8903A6 4E800421 +7FC3F378 BA81007C +800100B0 382100AC +7C0803A6 800DA998 +60000000 00000000 +C20236EC 0000000B #Online/Core/Music/Stop.asm +7C0802A6 90010004 +9421FF9C BE810034 +3BE10008 3BFF001F +57FF0034 386000D7 +987F0000 7FE3FB78 +38800001 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +BA810034 80010068 +38210064 7C0803A6 +38000000 00000000 +C20249F0 00000011 #Online/Core/Music/VolumeChange.asm +4800000C 4E800021 +00000000 900D81E8 +7C0802A6 90010004 +9421FF9C BE810034 +4BFFFFE5 7FC802A6 +808D81E8 807E0000 +7C032000 4182003C +909E0000 3BE10008 +3BFF001F 57FF0034 +386000D8 987F0000 +989F0001 7FE3FB78 +38800002 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +BA810034 80010068 +38210064 7C0803A6 +60000000 00000000 C21D4578 00000003 #Online/Core/PreventFileAlarms/FreezeStadium.asm FFE00890 3D80801D 618C4FD8 7D8903A6 diff --git a/Data/Sys/GameSettings/GALJ01r2.ini b/Data/Sys/GameSettings/GALJ01r2.ini index d42febc601..7cfef3f365 100644 --- a/Data/Sys/GameSettings/GALJ01r2.ini +++ b/Data/Sys/GameSettings/GALJ01r2.ini @@ -1020,6 +1020,11 @@ C208D698 00000005 #Recording/GetLCancelStatus/GetLCancelStatus.asm C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm 38600000 987E25FF 807E00B0 00000000 +C21A4CB4 00000004 #Common/AllocBuffer.asm +38600080 3D808037 +618CF1E4 7D8903A6 +4E800421 906DAFC4 +38000000 00000000 C20055F8 0000000F #Common/GetIsFollower.asm 7C0802A6 90010004 9421FF20 BE8100B0 @@ -2039,11 +2044,6 @@ BA8100B0 800100E4 800100E4 382100E0 7C0803A6 2C1E0000 60000000 00000000 -C21A4CB4 00000004 #Online/Core/EXIFileLoad/AllocBuffer.asm -38600080 3D808037 -618CF1E4 7D8903A6 -4E800421 906DAFC4 -38000000 00000000 C20163FC 0000001B #Online/Core/EXIFileLoad/GetFileSize.asm 7C7E1B78 7C0802A6 90010004 9421FF20 @@ -2193,6 +2193,63 @@ C2019608 0000000F #Online/Core/Hacks/PreventPadAlarmDuringRollback.asm 618C9618 7D8903A6 4E800420 38600000 60000000 00000000 +C238E910 0000001A #Online/Core/Music/StartSong.asm +7C0802A6 90010004 +9421FF54 BE81007C +7C7E1B78 3D808034 +618C7364 7D8903A6 +4E800421 7C7D1B78 +7FC3F378 38810008 +3D808033 618C7C60 +7D8903A6 4E800421 +2C030000 41820044 +3BE10048 3BFF001F +57FF0034 386000D6 +987F0000 80610038 +907F0001 8061003C +907F0005 7FE3FB78 +38800009 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +38610008 3D808033 +618C7CD4 7D8903A6 +4E800421 7FA3EB78 +3D808034 618C738C +7D8903A6 4E800421 +7FC3F378 BA81007C +800100B0 382100AC +7C0803A6 800DA998 +60000000 00000000 +C20236EC 0000000B #Online/Core/Music/Stop.asm +7C0802A6 90010004 +9421FF9C BE810034 +3BE10008 3BFF001F +57FF0034 386000D7 +987F0000 7FE3FB78 +38800001 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +BA810034 80010068 +38210064 7C0803A6 +38000000 00000000 +C20249F0 00000011 #Online/Core/Music/VolumeChange.asm +4800000C 4E800021 +00000000 900D81E8 +7C0802A6 90010004 +9421FF9C BE810034 +4BFFFFE5 7FC802A6 +808D81E8 807E0000 +7C032000 4182003C +909E0000 3BE10008 +3BFF001F 57FF0034 +386000D8 987F0000 +989F0001 7FE3FB78 +38800002 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +BA810034 80010068 +38210064 7C0803A6 +60000000 00000000 C21D4578 00000003 #Online/Core/PreventFileAlarms/FreezeStadium.asm FFE00890 3D80801D 618C4FD8 7D8903A6 diff --git a/Data/Sys/Slippi/InjectionLists/list_console_core.json b/Data/Sys/Slippi/InjectionLists/list_console_core.json index ba1abf0351..63bc27d98b 100644 --- a/Data/Sys/Slippi/InjectionLists/list_console_core.json +++ b/Data/Sys/Slippi/InjectionLists/list_console_core.json @@ -266,6 +266,13 @@ "Annotation": "Recording/GetLCancelStatus/ResetLCancelStatus.asm", "Tags": "" }, + { + "InjectionAddress": "801A4CB4", + "Name": "Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/AllocBuffer.asm", + "Tags": "" + }, { "InjectionAddress": "800055F8", "Name": "Slippi Recording", diff --git a/Data/Sys/Slippi/InjectionLists/list_netplay.json b/Data/Sys/Slippi/InjectionLists/list_netplay.json index 732af658ab..47651a01fb 100644 --- a/Data/Sys/Slippi/InjectionLists/list_netplay.json +++ b/Data/Sys/Slippi/InjectionLists/list_netplay.json @@ -462,6 +462,13 @@ "Annotation": "Recording/GetLCancelStatus/ResetLCancelStatus.asm", "Tags": "" }, + { + "InjectionAddress": "801A4CB4", + "Name": "Required: Slippi Recording", + "Codetype": "Auto", + "Annotation": "Common/AllocBuffer.asm", + "Tags": "" + }, { "InjectionAddress": "800055F8", "Name": "Required: Slippi Recording", @@ -651,13 +658,6 @@ "Annotation": "Online/Core/TriggerSendInput.asm", "Tags": "" }, - { - "InjectionAddress": "801A4CB4", - "Name": "Required: Slippi Online", - "Codetype": "Auto", - "Annotation": "Online/Core/EXIFileLoad/AllocBuffer.asm", - "Tags": "" - }, { "InjectionAddress": "800163FC", "Name": "Required: Slippi Online", @@ -728,6 +728,27 @@ "Annotation": "Online/Core/Hacks/PreventPadAlarmDuringRollback.asm", "Tags": "" }, + { + "InjectionAddress": "8038E910", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/Music/StartSong.asm", + "Tags": "" + }, + { + "InjectionAddress": "800236EC", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/Music/Stop.asm", + "Tags": "" + }, + { + "InjectionAddress": "800249F0", + "Name": "Required: Slippi Online", + "Codetype": "Auto", + "Annotation": "Online/Core/Music/VolumeChange.asm", + "Tags": "" + }, { "InjectionAddress": "801D4578", "Name": "Required: Slippi Online", diff --git a/Source/Core/Core/HW/EXI_DeviceSlippi.cpp b/Source/Core/Core/HW/EXI_DeviceSlippi.cpp index 7ee8a33a16..cedc1b656d 100644 --- a/Source/Core/Core/HW/EXI_DeviceSlippi.cpp +++ b/Source/Core/Core/HW/EXI_DeviceSlippi.cpp @@ -3284,6 +3284,21 @@ void CEXISlippi::DMAWrite(u32 _uAddr, u32 _uSize) case CMD_GET_PLAYER_SETTINGS: handleGetPlayerSettings(); break; + case CMD_PLAY_MUSIC: + { + auto args = SlippiExiTypes::Convert(&memPtr[bufLoc]); + NOTICE_LOG(SLIPPI_ONLINE, "[Music EXI] Play music. Offset: 0x%x, Length: %d", args.offset, args.size); + break; + } + case CMD_STOP_MUSIC: + NOTICE_LOG(SLIPPI_ONLINE, "[Music EXI] Stop music"); + break; + case CMD_CHANGE_MUSIC_VOLUME: + { + auto args = SlippiExiTypes::Convert(&memPtr[bufLoc]); + NOTICE_LOG(SLIPPI_ONLINE, "[Music EXI] Change volume. %d", args.volume); + break; + } default: writeToFileAsync(&memPtr[bufLoc], payloadLen + 1, ""); m_slippiserver->write(&memPtr[bufLoc], payloadLen + 1); diff --git a/Source/Core/Core/HW/EXI_DeviceSlippi.h b/Source/Core/Core/HW/EXI_DeviceSlippi.h index c168a78f08..5fbdfe0fff 100644 --- a/Source/Core/Core/HW/EXI_DeviceSlippi.h +++ b/Source/Core/Core/HW/EXI_DeviceSlippi.h @@ -90,6 +90,9 @@ class CEXISlippi : public IEXIDevice CMD_GCT_LENGTH = 0xD3, CMD_GCT_LOAD = 0xD4, CMD_GET_DELAY = 0xD5, + CMD_PLAY_MUSIC = 0xD6, + CMD_STOP_MUSIC = 0xD7, + CMD_CHANGE_MUSIC_VOLUME = 0xD8, CMD_PREMADE_TEXT_LENGTH = 0xE1, CMD_PREMADE_TEXT_LOAD = 0xE2, }; @@ -146,6 +149,9 @@ class CEXISlippi : public IEXIDevice {CMD_GCT_LENGTH, 0x0}, {CMD_GCT_LOAD, 0x4}, {CMD_GET_DELAY, 0x0}, + {CMD_PLAY_MUSIC, static_cast(sizeof(SlippiExiTypes::PlayMusicQuery) - 1)}, + {CMD_STOP_MUSIC, 0x0}, + {CMD_CHANGE_MUSIC_VOLUME, static_cast(sizeof(SlippiExiTypes::ChangeMusicVolumeQuery) - 1)}, {CMD_PREMADE_TEXT_LENGTH, 0x2}, {CMD_PREMADE_TEXT_LOAD, 0x2}, }; diff --git a/Source/Core/Core/Slippi/SlippiExiTypes.h b/Source/Core/Core/Slippi/SlippiExiTypes.h index e733a300e7..e3b319c5f8 100644 --- a/Source/Core/Core/Slippi/SlippiExiTypes.h +++ b/Source/Core/Core/Slippi/SlippiExiTypes.h @@ -89,6 +89,19 @@ struct GetPlayerSettingsResponse PlayerSettings settings[4]; }; +struct PlayMusicQuery +{ + u8 command; + u32 offset; + u32 size; +}; + +struct ChangeMusicVolumeQuery +{ + u8 command; + u8 volume; +}; + // Not sure if resetting is strictly needed, might be contained to the file #pragma pack() @@ -121,4 +134,12 @@ template <> inline OverwriteSelectionsQuery Convert(u8 *payload) q.stage_id = Common::FromBigEndian(q.stage_id); return q; } + +template <> inline PlayMusicQuery Convert(u8* payload) +{ + auto q = *reinterpret_cast(payload); + q.offset = Common::FromBigEndian(q.offset); + q.size = Common::FromBigEndian(q.size); + return q; +} }; // namespace SlippiExiTypes \ No newline at end of file From 2a5bf8855492def37da974cee63db9cd6881c7af Mon Sep 17 00:00:00 2001 From: Daryl Pinto Date: Wed, 16 Aug 2023 00:57:11 -0400 Subject: [PATCH 2/6] add calls to control jukebox music in EXI_DeviceSlippi.cpp (#400) --- Externals/SlippiRustExtensions | 2 +- Source/Core/Core/HW/EXI_DeviceSlippi.cpp | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Externals/SlippiRustExtensions b/Externals/SlippiRustExtensions index ec8db58729..7e62846796 160000 --- a/Externals/SlippiRustExtensions +++ b/Externals/SlippiRustExtensions @@ -1 +1 @@ -Subproject commit ec8db58729f7e004deaf5e51a3585fb4459aca31 +Subproject commit 7e628467962a928d1f1b1e93f6d6a161cbc205ba diff --git a/Source/Core/Core/HW/EXI_DeviceSlippi.cpp b/Source/Core/Core/HW/EXI_DeviceSlippi.cpp index cedc1b656d..b26bcd874e 100644 --- a/Source/Core/Core/HW/EXI_DeviceSlippi.cpp +++ b/Source/Core/Core/HW/EXI_DeviceSlippi.cpp @@ -3288,15 +3288,18 @@ void CEXISlippi::DMAWrite(u32 _uAddr, u32 _uSize) { auto args = SlippiExiTypes::Convert(&memPtr[bufLoc]); NOTICE_LOG(SLIPPI_ONLINE, "[Music EXI] Play music. Offset: 0x%x, Length: %d", args.offset, args.size); + slprs_exi_device_jukebox_play_music(slprs_exi_device_ptr, args.offset, args.size); break; } case CMD_STOP_MUSIC: NOTICE_LOG(SLIPPI_ONLINE, "[Music EXI] Stop music"); + slprs_exi_device_jukebox_stop_music(slprs_exi_device_ptr); break; case CMD_CHANGE_MUSIC_VOLUME: { auto args = SlippiExiTypes::Convert(&memPtr[bufLoc]); NOTICE_LOG(SLIPPI_ONLINE, "[Music EXI] Change volume. %d", args.volume); + slprs_exi_device_jukebox_set_music_volume(slprs_exi_device_ptr, args.volume); break; } default: @@ -3347,7 +3350,7 @@ void CEXISlippi::ConfigureJukebox() #endif slprs_exi_device_configure_jukebox(slprs_exi_device_ptr, SConfig::GetInstance().bSlippiJukeboxEnabled, - Memory::m_pRAM, AudioCommonGetCurrentVolume); + AudioCommonGetCurrentVolume); #endif } From 6a38e4871f471198a04284b665beb117be5a26c4 Mon Sep 17 00:00:00 2001 From: Jas Laferriere Date: Wed, 16 Aug 2023 01:07:00 -0400 Subject: [PATCH 3/6] chore: remove loggers --- Source/Core/Core/HW/EXI_DeviceSlippi.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/Source/Core/Core/HW/EXI_DeviceSlippi.cpp b/Source/Core/Core/HW/EXI_DeviceSlippi.cpp index b26bcd874e..e3323afb45 100644 --- a/Source/Core/Core/HW/EXI_DeviceSlippi.cpp +++ b/Source/Core/Core/HW/EXI_DeviceSlippi.cpp @@ -3287,18 +3287,15 @@ void CEXISlippi::DMAWrite(u32 _uAddr, u32 _uSize) case CMD_PLAY_MUSIC: { auto args = SlippiExiTypes::Convert(&memPtr[bufLoc]); - NOTICE_LOG(SLIPPI_ONLINE, "[Music EXI] Play music. Offset: 0x%x, Length: %d", args.offset, args.size); slprs_exi_device_jukebox_play_music(slprs_exi_device_ptr, args.offset, args.size); break; } case CMD_STOP_MUSIC: - NOTICE_LOG(SLIPPI_ONLINE, "[Music EXI] Stop music"); slprs_exi_device_jukebox_stop_music(slprs_exi_device_ptr); break; case CMD_CHANGE_MUSIC_VOLUME: { auto args = SlippiExiTypes::Convert(&memPtr[bufLoc]); - NOTICE_LOG(SLIPPI_ONLINE, "[Music EXI] Change volume. %d", args.volume); slprs_exi_device_jukebox_set_music_volume(slprs_exi_device_ptr, args.volume); break; } From ed60e309c65a758949225023eabcb33a39ebbecf Mon Sep 17 00:00:00 2001 From: Jas Laferriere Date: Wed, 16 Aug 2023 01:22:51 -0400 Subject: [PATCH 4/6] chore: update to latest submodule version --- Externals/SlippiRustExtensions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Externals/SlippiRustExtensions b/Externals/SlippiRustExtensions index 7e62846796..5853204fe3 160000 --- a/Externals/SlippiRustExtensions +++ b/Externals/SlippiRustExtensions @@ -1 +1 @@ -Subproject commit 7e628467962a928d1f1b1e93f6d6a161cbc205ba +Subproject commit 5853204fe3f260f37b7c7773d21e9f2e386aeea6 From 1128a2c1872f617e96f3b4cb25600d9fab226b70 Mon Sep 17 00:00:00 2001 From: Jas Laferriere Date: Wed, 16 Aug 2023 01:58:28 -0400 Subject: [PATCH 5/6] chore: update c codeset https://github.com/project-slippi/slippi-ssbm-c/commit/01efbfcaa7533f9508381234b74a7b57dfbe926f --- Data/Sys/GameFiles/GALE01/GameSetup.dat | Bin 27379 -> 27395 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Data/Sys/GameFiles/GALE01/GameSetup.dat b/Data/Sys/GameFiles/GALE01/GameSetup.dat index 2f6672becddf40047a98a5b3db117c1e950778cb..e693e82538f450824747c0ef56d278f37459337a 100644 GIT binary patch delta 5363 zcmXw7e@s+Y7CvuyJRcVveh3UI$`5ghI4V*Yh5-es9g$y!VI$0Yy#x$(& zRfwU+7!_hDaSdx+Vhl0VHl{JgwZ@pP>za*mO>45QZMsdG2nFGIJt|-ZNmnQX^l;oHB zk}5TC1czfuO>Xoz=syXyZOojslXYOf=6g90{4nc?J4&=T1b&>z@djXoC%^zN@xGu5 zwzd}Mwwe=q7j=h24uaNIWVrd*AT|B8}=yl0gb20k%E`GAOf!77&HN| z5-rI<;C1G}n|k8gTED0HGe$+pd2S@x1va?8`cmK?-frM|mv+oql#Dvuc(RuVeNK)` z^1LGjtgVt@^>Bho)}-i*T3ug5xuQj1xZ#l=;B&XSc~p^|;f4<^0Q21%|KEX?Zup38 zk*yoG`6$4V6a~b>Qv6tP2QUkWtxZ|UI?xGgA<6*|&gy}4Tmal#p-Bn_xS;CitpdJ< zco+I!**Z1A9Qpyy2Oi>jz#~AMErq%^&bFG?2q(D#N5K-FSUu!GlTxvFJW;Aw7|4Z3 zpuZ~2}B6Qy3|d>|a)iBj*#1gZCV9Q+ZF1HX~+v~He9Ig~ca)?1Wz zim2*|Nol7U!6)T5q+OL;kamkty`r?IZg}Au5L=Ogy<3~?__>n) z#Erf)0sbBIKE(Z~5smPv&mcGY9&Sg5CHWZ&Cg+{u9u(11N?QI^+`Nm<~$(yVbe_Y@A-5)|ZymS9Ef*piz>wa*nT`IZ}i4u@)= zLw_b`XUVT}cCz#3>|`Hws{O-g@<~08 ziTH5k!wFttz9n(_A(uYC0bZf?onD+n`8qKlE8&9qw{#$^_6nd=PydhB=S5#31!zUT z=I=|~igAfsq3f=|0yuxgHLc&2_?638cT8GYtc9oqu1rYa%AHz&OY1{ghlRYtmE0Is zSima6B&aNP`H`7qC&ik*s?;;a^Mvm zcU{M6X9}O{xM!jlS(0CrFM5$)U{Ryw7rm?F&=B7Lii&1+AWwkKi*D)yUuyla=*3yA zn^e3^b1uw$z2;Hoii&$Buee|916m)^`cbW){*Kfct7*Xi|0jO<&y%d z@SfG<#hN#BoTAl({5^rVQ<^&yZr*$Y z0?)Dl{7wo6*As2W-3jW>gHag|##mProOPr7r%Vc7kwU?{Zgg-C{J!v)J{A6wcUBaY zX7j`*m7+0jxOB6`Ii)>lU=RU&q><7A9zdWjRQjz>^c+#NCM0}~ZfwmtDO5(HmwEY$ z%0`(3XS9A<>XvyK2hLJwqNp-0ldIylH%v2L96@%~?TR|>7)qw&1p2Ak2M4M9oV zP^R&oVELpJD#wF~8!P`=_(qb(H(C<6QO9re8nCFMSzbyN{2RsD2ces&ZNEtsyEOLe zfKhpCRooSPnKXL$TG7j;d>eq38lTITPo=_-s8N$DvltasmdKY+Wk|k!D)F((Urbd) zZmz?hN>xV@h-ZD(DMk#OmxQVrNvOIj3E@`xp%ISbRO7=Vypz$QFdFCI58-}B@B`3W z!A~nEdl|t8tb> z=p5Gr^H?DsAkk+)>|OL%<|ftR5HYXy3IJmgUwcR_uRWsiiWIE9�&_BnzqwW2HkT z)nQ>BLl)J=#F@HX;*3+bTUJuP9>Kpk>$D(>P z#9u!3?HaK{{sOAsEzZ_Y>G)|KkG=QeFMH@vJv#Riz7UHWa2CS0Nex&@*jCgqCl+t9 z#o{f+veGRO=~c9?fjdDUI^{;T?PRp5X}xsZRH5-WBlL5c!%F7cn}u&jzQ=ECj)r)p z%|pBeCN&?C@#afJJK#h!oOgC0pru5tZ^0qqgqBubfk`c%RTi~$%OPt)V~azIS|7+0 zuJw_`w|Xm9)K(&TTbWGMj>h=G){e&7_A6@d5y#rmK-(bn%Xt5{4PxM$9)M+>@S0B& zUc=99wzwlEdWTm~QAdJx-~)Lub(Y8$bz)+E4s@<(RMd$l9mjRn$%CwOtB%K$j~{%U zhw=XR5{~MGV=`eJ4e*cAxMEZkPm@CNY$+7amqPKaQYenbs_+ho!?CKTh}R9qZ^>DR z-$Q+DZTvnX#-Gcr>v9UYfTFIDOwd&+6Li(d1YJXn7Ikrhu&nDiqeTfc)^X6Jgr8AS zB3~Lw6occwC(0P1dvy_yt>f#O*d^C5(JvTG?3L@67?CruK*8GLzKUhOlnnK2w!!!f*0nZ@rZ=6#% zg+J7f{E2AzU%(NfCi4GtEVOj(8?SSA4ZV0#(}3zJWPY@r(wZpa!zRjVi}aDNiO6sb z+V|J5sW0*-y)pa&9I}(9hyO^4;m@gO_-pEo6ww~Up=!=AEiYc|Zla}M0ee3=zci^c wWfcEiIfK!pvCOvvAp`&V5`Q=<$rms(fxlz;J0VE)+kx1718)w#{ksABAGObGSpWb4 delta 5347 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 Date: Tue, 15 Aug 2023 23:13:37 -0700 Subject: [PATCH 6/6] chore: update SlippiRustExtensions --- Externals/SlippiRustExtensions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Externals/SlippiRustExtensions b/Externals/SlippiRustExtensions index 5853204fe3..be3e2a1ea9 160000 --- a/Externals/SlippiRustExtensions +++ b/Externals/SlippiRustExtensions @@ -1 +1 @@ -Subproject commit 5853204fe3f260f37b7c7773d21e9f2e386aeea6 +Subproject commit be3e2a1ea929d91c82b46e488dfd7462625fe550