From 708531b2beafa79c8223ee1e6ecc53b1b144e7d3 Mon Sep 17 00:00:00 2001 From: Jas Laferriere Date: Sun, 12 Nov 2023 19:03:49 -0500 Subject: [PATCH] modify playback/recording to work simultaneously --- Common/Common.s | 3 +- Output/Console/GALE01r2.ini | 15 +- Output/Console/g_core.bin | Bin 5520 -> 5528 bytes Output/Console/g_core_porta.bin | Bin 5520 -> 5528 bytes Output/InjectionLists/list_console_core.json | 2 +- Output/InjectionLists/list_netplay.json | 2 +- Output/Netplay/GALE01r2.ini | 15 +- Output/Netplay/GALJ01r2.ini | 15 +- Output/Playback/GALE01r2.ini | 519 +++++++++++++++++- Output/Playback/GALJ01r2.ini | 519 +++++++++++++++++- Playback/Core/CleanDynamicGeckos.asm | 2 +- Playback/Core/FastForward/FastForward.asm | 4 +- .../FastForward/SkipCameraAdjustmentOnFFW.s | 2 +- .../FastForward/SkipCameraAdjustmentOnFFW2.s | 2 +- Playback/Core/FetchGameFrame.asm | 2 +- Playback/Core/RestoreGameFrame.asm | 2 +- Playback/Core/RestoreGameInfo.asm | 13 +- Playback/Core/RestoreInitialRNG.s | 2 +- Playback/Core/RestoreLRAStart.asm | 2 +- Playback/Core/RestoreStockSteal.asm | 6 +- .../Core/Sounds/AssignSoundInstanceId.asm | 2 +- Playback/Core/Sounds/HandleFrameSoundLog.asm | 2 +- Playback/Core/Sounds/NoDestroyVoice.asm | 2 +- Playback/Core/Sounds/NoDestroyVoice2.asm | 2 +- .../Core/Sounds/PreventDuplicateSounds.asm | 2 +- Playback/Show Player Names/InitInGame.asm | 2 +- Recording/SendGamePreFrame.asm | 5 +- Recording/ShouldRecord.asm | 2 + playback.json | 23 + 29 files changed, 1075 insertions(+), 94 deletions(-) diff --git a/Common/Common.s b/Common/Common.s index 6fb06a86..d139db29 100644 --- a/Common/Common.s +++ b/Common/Common.s @@ -313,7 +313,7 @@ lbz \reg, -0x62D0(\reg) # Load byte from 0x80479D30 (major ID) .macro loadGlobalFrame reg lis \reg, 0x8048 -lwz \reg, -0x62A0(\reg) +lwz \reg, -0x62A0(\reg) # 80479D60 .endm # This macro takes in an address that is expected to have a branch instruction. It will set @@ -603,6 +603,7 @@ add \reg, r3, r4 # Offsets from r13 ################################################################################ .set primaryDataBuffer,-0x49b4 +.set playbackDataBuffer,-0x5040 # From tournament mode line 8019b9d4, seems to be only used in one place .set secondaryDmaBuffer,-0x49b0 .set archiveDataBuffer, -0x4AE8 .set bufferOffset,-0x49b0 diff --git a/Output/Console/GALE01r2.ini b/Output/Console/GALE01r2.ini index 70d32915..56e4c8d6 100644 --- a/Output/Console/GALE01r2.ini +++ b/Output/Console/GALE01r2.ini @@ -456,7 +456,7 @@ A07F2088 B07D0053 800100E4 382100E0 7C0803A6 8001001C 60000000 00000000 -C206B0DC 0000002C #Recording/SendGamePreFrame.asm +C206B0E0 0000002C #Recording/SendGamePreFrame.asm 7C0802A6 90010004 9421FF20 BE8100B0 3D808000 618C5604 @@ -500,14 +500,15 @@ B07D0031 80640030 938DB650 BA8100B0 800100E4 382100E0 7C0803A6 881F2219 -60000000 00000000 -C2005604 0000000A #Recording/ShouldRecord.asm +807F065C 00000000 +C2005604 0000000B #Recording/ShouldRecord.asm 3C608048 80639D30 5463443E 2C030202 -4182002C 2C030302 -41820024 2C030208 -4182001C 2C03010F -41820014 2C030120 +41820034 2C030302 +4182002C 2C030208 +41820024 2C03010F +4182001C 2C030120 +41820014 2C03010E 4182000C 38600000 4800000C 38600001 48000004 4E800020 diff --git a/Output/Console/g_core.bin b/Output/Console/g_core.bin index f2324c990448ae828759314c8e7b918906a4fba6..009f9852812d57ea5725665b558aa74e96e9f983 100644 GIT binary patch delta 92 zcmbQBJwtoLXj3#2Kw3qInUNnz%K&KwAT0u<`8H?pYp?+TU27CJ delta 84 zcmbQCJwbcJXb3Y!b~HP`@o91;5f diff --git a/Output/Console/g_core_porta.bin b/Output/Console/g_core_porta.bin index 94a8c550050fe115353594dbf6aa30102dce04d6..0550435ff207335d7be4bc3f72aa7bcf12a07b79 100644 GIT binary patch delta 92 zcmbQBJwtoLXj3#2Kw3qInUNnz%K&KwAT0u<`8H?pYp?+TU27CJ delta 84 zcmbQCJwbcJXb3Y!b~HP`@o91;5f diff --git a/Output/InjectionLists/list_console_core.json b/Output/InjectionLists/list_console_core.json index 63bc27d9..ab58b33e 100644 --- a/Output/InjectionLists/list_console_core.json +++ b/Output/InjectionLists/list_console_core.json @@ -239,7 +239,7 @@ "Tags": "" }, { - "InjectionAddress": "8006B0DC", + "InjectionAddress": "8006B0E0", "Name": "Slippi Recording", "Codetype": "Auto", "Annotation": "Recording/SendGamePreFrame.asm", diff --git a/Output/InjectionLists/list_netplay.json b/Output/InjectionLists/list_netplay.json index 47651a01..16ecdd7f 100644 --- a/Output/InjectionLists/list_netplay.json +++ b/Output/InjectionLists/list_netplay.json @@ -435,7 +435,7 @@ "Tags": "" }, { - "InjectionAddress": "8006B0DC", + "InjectionAddress": "8006B0E0", "Name": "Required: Slippi Recording", "Codetype": "Auto", "Annotation": "Recording/SendGamePreFrame.asm", diff --git a/Output/Netplay/GALE01r2.ini b/Output/Netplay/GALE01r2.ini index 62972ab1..c8980cf2 100644 --- a/Output/Netplay/GALE01r2.ini +++ b/Output/Netplay/GALE01r2.ini @@ -959,7 +959,7 @@ A07F2088 B07D0053 800100E4 382100E0 7C0803A6 8001001C 60000000 00000000 -C206B0DC 0000002C #Recording/SendGamePreFrame.asm +C206B0E0 0000002C #Recording/SendGamePreFrame.asm 7C0802A6 90010004 9421FF20 BE8100B0 3D808000 618C5604 @@ -1003,14 +1003,15 @@ B07D0031 80640030 938DB650 BA8100B0 800100E4 382100E0 7C0803A6 881F2219 -60000000 00000000 -C2005604 0000000A #Recording/ShouldRecord.asm +807F065C 00000000 +C2005604 0000000B #Recording/ShouldRecord.asm 3C608048 80639D30 5463443E 2C030202 -4182002C 2C030302 -41820024 2C030208 -4182001C 2C03010F -41820014 2C030120 +41820034 2C030302 +4182002C 2C030208 +41820024 2C03010F +4182001C 2C030120 +41820014 2C03010E 4182000C 38600000 4800000C 38600001 48000004 4E800020 diff --git a/Output/Netplay/GALJ01r2.ini b/Output/Netplay/GALJ01r2.ini index d4f4dfa2..f2cd8795 100644 --- a/Output/Netplay/GALJ01r2.ini +++ b/Output/Netplay/GALJ01r2.ini @@ -958,7 +958,7 @@ A07F2088 B07D0053 800100E4 382100E0 7C0803A6 8001001C 60000000 00000000 -C206B0DC 0000002C #Recording/SendGamePreFrame.asm +C206B0E0 0000002C #Recording/SendGamePreFrame.asm 7C0802A6 90010004 9421FF20 BE8100B0 3D808000 618C5604 @@ -1002,14 +1002,15 @@ B07D0031 80640030 938DB650 BA8100B0 800100E4 382100E0 7C0803A6 881F2219 -60000000 00000000 -C2005604 0000000A #Recording/ShouldRecord.asm +807F065C 00000000 +C2005604 0000000B #Recording/ShouldRecord.asm 3C608048 80639D30 5463443E 2C030202 -4182002C 2C030302 -41820024 2C030208 -4182001C 2C03010F -41820014 2C030120 +41820034 2C030302 +4182002C 2C030208 +41820024 2C03010F +4182001C 2C030120 +41820014 2C03010E 4182000C 38600000 4800000C 38600001 48000004 4E800020 diff --git a/Output/Playback/GALE01r2.ini b/Output/Playback/GALE01r2.ini index bad30343..9d284da6 100644 --- a/Output/Playback/GALE01r2.ini +++ b/Output/Playback/GALE01r2.ini @@ -126,7 +126,7 @@ $Required: Slippi Playback [Fizzi, UnclePunch, Achilles, tauKhan, Krohnos] C216E9E4 0000001D #Playback/Core/CleanDynamicGeckos.asm 3BC30000 7C0802A6 90010004 9421FF20 -BE8100B0 83CDB64C +BE8100B0 83CDAFC0 83BE0010 3B800000 807D0000 2C030000 41820018 3B9C0001 @@ -157,7 +157,7 @@ C216D298 00000016 #Playback/Core/FetchGameFrame.asm 881F0008 2C000000 408200A0 7C0802A6 90010004 9421FF20 -BE8100B0 806DB64C +BE8100B0 806DAFC0 83630000 38600076 987B0000 806DB654 907B0001 7F63DB78 @@ -182,7 +182,7 @@ C206B0DC 00000049 #Playback/Core/RestoreGameFrame.asm 8BBF000C 7FA3EB78 3D808003 618C1724 7D8903A6 4E800421 -7C7C1B78 832DB64C +7C7C1B78 832DAFC0 83790000 7FE3FB78 3D808000 618C55F8 7D8903A6 4E800421 @@ -250,13 +250,15 @@ C0230044 D0230030 BA8100B0 800100E4 382100E0 7C0803A6 881F2219 00000000 -C216E74C 0000009E #Playback/Core/RestoreGameInfo.asm +C216E748 0000009F #Playback/Core/RestoreGameInfo.asm +3D808022 618C54B8 +7D8903A6 4E800421 7C0802A6 90010004 9421FF20 BE8100B0 386005EC 3D808037 618CF1E4 7D8903A6 4E800421 7C7C1B78 -938DB64C 388005EC +938DAFC0 388005EC 3D808000 618CC160 7D8903A6 4E800421 38600221 3D808037 @@ -347,7 +349,7 @@ C216E74C 0000009E #Playback/Core/RestoreGameInfo.asm 7D8903A6 4E800421 4800013C 4E800021 2C050000 41820018 -80CDB64C 8066000C +80CDAFC0 8066000C 38630008 7C632A14 9066000C 4E800020 4E800021 2C050000 @@ -356,7 +358,7 @@ C216E74C 0000009E #Playback/Core/RestoreGameInfo.asm BE8100B0 7C9E2378 7CBB2B78 80BE0000 54A501FE 64BD8000 -834DB64C 833A0014 +834DAFC0 833A0014 2C030004 41820014 2C030006 41820014 2C0300C2 41820014 @@ -399,7 +401,7 @@ BA8100B0 800100E4 4800004C 4E800021 7C0802A6 90010004 9421FF20 BE8100B0 -806DB64C 83A30000 +806DAFC0 83A30000 887D0002 2C030000 41820010 807D0003 3C80804D 90645F90 @@ -407,10 +409,9 @@ BA8100B0 800100E4 382100E0 7C0803A6 4E800020 BA8100B0 800100E4 382100E0 -7C0803A6 3C608017 -60000000 00000000 +7C0803A6 00000000 C216D304 00000009 #Playback/Core/RestoreLRAStart.asm -806DB64C 80630000 +806DAFC0 80630000 88630000 2C030002 4082002C 3860FFFF 38800007 3D808016 @@ -420,18 +421,18 @@ C216D304 00000009 #Playback/Core/RestoreLRAStart.asm 4E800420 7FE3FB78 60000000 00000000 C216B9C0 00000012 #Playback/Core/RestoreStockSteal.asm -80ADB64C 80A50004 +80ADAFC0 80A50004 38800089 98850000 808DB654 90850001 98650005 7CA32B78 38800006 38A00001 3D808000 618C55F0 7D8903A6 4E800421 -806DB64C 80630004 +806DAFC0 80630004 38800001 38A00000 3D808000 618C55F0 7D8903A6 4E800421 -806DB64C 80630004 +806DAFC0 80630004 88630000 2C030000 41820014 3D808016 618CBA1C 7D8903A6 @@ -446,13 +447,13 @@ C21A501C 0000002A #Playback/Core/FastForward/FastForward.asm 3D80801A 618C45E8 7D8903A6 4E800421 2C030002 41820018 -806DB64C 80630000 +806DAFC0 80630000 88630000 2C030003 41820024 38600001 38800002 3D808002 618C5064 7D8903A6 4E800421 7C1AD800 -480000E0 806DB64C +480000E0 806DAFC0 80630000 88630001 2C030001 4182001C 38600000 38800000 @@ -673,7 +674,7 @@ C238D224 00000015 #Playback/Core/Sounds/AssignSoundInstanceId.asm 2C03010E 40820090 7C0802A6 90010004 9421FF20 BE8100B0 -83EDB64C 3BDF001C +83EDAFC0 3BDF001C 8B9E0000 3C608048 80639D60 809F056B 7C032000 41810028 @@ -699,7 +700,7 @@ C21A5014 00000032 #Playback/Core/Sounds/HandleFrameSoundLog.asm 9421FF20 BE8100B0 3D808034 618C7364 7D8903A6 4E800421 -7C7D1B78 83EDB64C +7C7D1B78 83EDAFC0 3BDF001C 8B9E0000 3F008048 83189D60 3B18FFFF 82FF056B @@ -745,7 +746,7 @@ C2088224 0000001D #Playback/Core/Sounds/NoDestroyVoice.asm 5463443E 2C03010E 408200CC 7C0802A6 90010004 9421FF20 -BE8100B0 83EDB64C +BE8100B0 83EDAFC0 3BBF001C 57DE043E 8B9D0000 3C608048 80639D60 809F056B @@ -775,7 +776,7 @@ C20882B0 0000001D #Playback/Core/Sounds/NoDestroyVoice2.asm 5463443E 2C03010E 408200CC 7C0802A6 90010004 9421FF20 -BE8100B0 83EDB64C +BE8100B0 83EDAFC0 3BBF001C 57DE043E 8B9D0000 3C608048 80639D60 809F056B @@ -805,7 +806,7 @@ C238D0B0 00000027 #Playback/Core/Sounds/PreventDuplicateSounds.asm 5463443E 2C03010E 40820120 7C0802A6 90010004 9421FF20 -BE8100B0 83EDB64C +BE8100B0 83EDAFC0 3BDF001C 3BA00000 3B400000 56FB043E 8B9E0000 3C608048 @@ -922,6 +923,480 @@ C20056A8 00000005 #Common/CompatibilityHooks/RequestSSMLoad.asm 7C83612E 4E800020 60000000 00000000 +$Optional: Slippi Recording [Fizzi, Achilles, UnclePunch, Nikki, jmlee337, Krohnos] +*Allows for outputting new replay data during playback. +*Useful for spectator service or upgrading replay versions. +040679BC 38802600 #Recording/ExtendPlayerBlock.asm +C23219EC 0000001D #Recording/FlushFrameBuffer.asm +7C0802A6 90010004 +9421FF20 BE8100B0 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 418200A8 +806DB64C 83C30000 +83ADB650 7F9EEA14 +2C1D0000 41820090 +3860003C 987C0000 +806DB654 907C0001 +3C608048 80639D30 +5463443E 2C030208 +806DB654 4082003C +80ADB61C 88850010 +2C040000 4082002C +8885000F 2C040000 +40820020 80850909 +3884FF85 80E50916 +7C872050 7C041800 +40800008 7C832378 +907C0005 3BBD0009 +7FC3F378 7FA4EB78 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 38600000 +906DB650 BA8100B0 +800100E4 382100E0 +7C0803A6 8001001C +60000000 00000000 +C216D884 00000030 #Recording/SendGameEnd.asm +7C0802A6 90010004 +9421FF20 BE8100B0 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 41820144 +3F208046 6339B6A0 +8B590008 2C1A0000 +41820130 830DB64C +88780004 2C030000 +40820120 3C608048 +80639D30 5463443E +2C030208 4082001C +2C1A0002 40820014 +806DB61C 8863000F +2C030000 418200F4 +83B80000 38600039 +987D0000 9B5D0001 +2C1A0007 4082000C +88790001 48000008 +3860FFFF 987D0002 +3E808047 62949DA4 +7E83A378 3C808046 +6084B8EC 38A02278 +3D808000 618C31F4 +7D8903A6 4E800421 +3C808046 6084B6A0 +7E83A378 880424D0 +98030006 88040008 +98030004 3D808016 +618C6378 7D8903A6 +4E800421 3AA00000 +7EA3AB78 48000041 +38950003 7C64E9AE +3AB50001 2C150003 +4081FFE8 7FA3EB78 +38800007 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +38600001 98780004 +48000030 3D808047 +618C9DA4 1D6300A8 +7D6B6214 886B0058 +2C030003 4182000C +886B005E 48000008 +3860FFFF 4E800020 +BA8100B0 800100E4 +382100E0 7C0803A6 +819F2514 00000000 +C216E74C 0000010A #Recording/SendGameInfo.asm +7C0802A6 90010004 +9421FF20 BE8100B0 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 41820814 +38600005 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7B1B78 +936DB64C 38800005 +3D808000 618CC160 +7D8903A6 4E800421 +38600770 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7E1B78 +93DB0000 38600000 +906DB650 3C608000 +60635600 80630000 +38630008 38800000 +3D808000 618C55FC +7D8903A6 4E800421 +7C7C1B78 38600035 +987E0000 3860001C +987E0001 38600036 +987E0002 386002F8 +B07E0003 38600037 +987E0005 38600040 +B07E0006 38600038 +987E0008 38600054 +B07E0009 38600039 +987E000B 38600006 +B07E000C 3860003A +987E000E 3860000C +B07E000F 3860003B +987E0011 3860002C +B07E0012 3860003C +987E0014 38600008 +B07E0015 3860003D +987E0017 B39E0018 +38600010 987E001A +38600204 B07E001B +38600036 987E001D +3C600310 60630000 +907E001E 387E0022 +7FE4FB78 38A00138 +3D808000 618C31F4 +7D8903A6 4E800421 +387E0062 3880001C +3D808000 618CC160 +7D8903A6 4E800421 +387E0022 3AA30060 +3A800000 1ED40024 +7ED6AA14 88760001 +2C030000 40820034 +88760000 2C030012 +40820028 3C60804C +606320BC 1C940044 +7C632214 80630000 +546005EF 4182000C +38600013 98760000 +3A940001 2C140004 +4180FFB4 387E0022 +3AA30060 3A800000 +1ED40024 7ED6AA14 +88760001 2C030000 +4082002C 88760000 +3D808016 618C9238 +7D8903A6 4E800421 +88960003 7C041800 +4081000C 38600000 +98760003 3A940001 +2C140004 4180FFBC +3C60804D 80635F90 +907E015A 3A82F228 +3AA00000 3ADE015E +1EF50008 38600001 +7C76B92E 3AF70004 +7C76B92E 3AB50001 +2C150004 4180FFE4 +3A800000 3ABF0060 +3AFE017E 1F140010 +7F18BA14 1ED40024 +7ED6AA14 88760001 +2C030000 40820040 +8876000A 2C030078 +41820034 3D808023 +618C754C 7D8903A6 +4E800421 7C641B78 +7F03C378 38A00010 +3D808000 618C31F4 +7D8903A6 4E800421 +4800001C 7F03C378 +38800010 3D808000 +618CC160 7D8903A6 +4E800421 3A940001 +2C140004 4180FF88 +8862F234 987E01BE +8862F23C 987E01BF +3C608048 80639D30 +5463443E B07E01C0 +3B200000 3C608048 +80639D30 5463443E +2C030208 4082017C +38600000 3D808000 +618C5610 7D8903A6 +4E800421 7C791B78 +3A800000 3ABF0060 +3AFE01C2 3B590034 +1C74001F 7F03BA14 +1ED40024 7ED6AA14 +88760001 2C030000 +40820028 1C74001F +7C83D214 7F03C378 +38A0001F 3D808000 +618C31F4 7D8903A6 +4E800421 4800001C +7F03C378 3880001F +3D808000 618CC160 +7D8903A6 4E800421 +3A940001 2C140004 +4180FFA0 3A800000 +3ABF0060 3AFE023E +3B5900CF 1C74000A +7F03BA14 1ED40024 +7ED6AA14 88760001 +2C030000 40820028 +1C74000A 7C83D214 +7F03C378 38A0000A +3D808000 618C31F4 +7D8903A6 4E800421 +4800001C 7F03C378 +3880000A 3D808000 +618CC160 7D8903A6 +4E800421 3A940001 +2C140004 4180FFA0 +3A800000 3ABF0060 +3AFE0266 3B5900F7 +1C74001D 7F03BA14 +1ED40024 7ED6AA14 +88760001 2C030000 +40820028 1C74001D +7C83D214 7F03C378 +38A0001D 3D808000 +618C31F4 7D8903A6 +4E800421 4800001C +7F03C378 3880001D +3D808000 618CC160 +7D8903A6 4E800421 +3A940001 2C140004 +4180FFA0 4800001C +387E01C2 38800118 +3D808000 618CC160 +7D8903A6 4E800421 +3D808000 618CADF4 +7D8903A6 4E800421 +987E02DA 2C190000 +41820044 387E02DB +38990394 38A00033 +3D808000 618C31F4 +7D8903A6 4E800421 +3C60803D 6063AD40 +80630000 81830088 +A06C0001 907E030E +886C0006 907E0312 +4800001C 387E02DB +3880003B 3D808000 +618CC160 7D8903A6 +4E800421 2C190000 +41820018 7F23CB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +7FC3F378 38800316 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 38600205 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C751B78 3C608000 +60635600 80630000 +3AE30008 38600010 +98750000 3860003D +98750203 38600200 +B0750201 38600000 +98750204 3AC00000 +7C76E050 2C030200 +41810010 B0750201 +38600001 98750204 +38750001 7EE4BB78 +7C84B214 A0B50201 +3D808000 618C31F4 +7D8903A6 4E800421 +7EA3AB78 38800205 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 3AD60200 +7C16E000 4180FFA4 +7EA3AB78 3D808037 +618CF1B0 7D8903A6 +4E800421 38600004 +38800007 38A00000 +3D808039 618C01F0 +7D8903A6 4E800421 +48000021 7C8802A6 +38A00000 3D808038 +618CFD54 7D8903A6 +4E800421 48000070 +4E800021 7C0802A6 +90010004 9421FF20 +BE8100B0 806DB64C +83A30000 838DB650 +7FBDE214 3860003A +987D0000 806DB654 +907D0001 3C60804D +80635F90 907D0005 +3C608048 80639D60 +907D0009 838DB650 +3B9C000D 938DB650 +BA8100B0 800100E4 +382100E0 7C0803A6 +4E800020 38600004 +38800007 38A00000 +3D808039 618C01F0 +7D8903A6 4E800421 +48000021 7C8802A6 +38A0000F 3D808038 +618CFD54 7D8903A6 +4E800421 4800012C +4E800021 7C0802A6 +90010004 9421FF20 +BE8100B0 806DB64C +83E30000 83CDB650 +7FFFF214 3B600000 +806DC18C 83A30024 +2C1D0000 418200E0 +3B7B0001 2C1B000F +418100D4 839D002C +3860003B 987F0000 +806DB654 907F0001 +807C0010 B07F0005 +807C0024 987F0007 +807C002C 907F0008 +807C0040 907F000C +807C0044 907F0010 +807C004C 907F0014 +807C0050 907F0018 +807C0C9C B07F001C +807C0D44 907F001E +807C001C 907F0022 +887C0DD7 987F0026 +887C0DDB 987F0027 +887C0DEB 987F0028 +887C0DEF 987F0029 +807C0518 2C030000 +41820018 8063002C +2C030000 4182000C +8863000C 48000008 +3860FFFF 987F002A +A07C0DA8 B07F002B +83CDB650 3BDE002D +93CDB650 3BFF002D +83BD0008 2C1D0000 +4082FF28 BA8100B0 +800100E4 382100E0 +7C0803A6 4E800020 +BA8100B0 800100E4 +382100E0 7C0803A6 +3C608017 00000000 +C206DA34 00000038 #Recording/SendGamePostFrame.asm +7C0802A6 90010004 +9421FF20 BE8100B0 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 41820180 +887F221F 546306F7 +40820174 8B7F000C +806DB64C 83A30000 +838DB650 7FBDE214 +38600038 987D0000 +806DB654 907D0001 +9B7D0005 7FE3FB78 +3D808000 618C55F8 +7D8903A6 4E800421 +987D0006 807F0004 +987D0007 807F0010 +B07D0008 807F00B0 +907D000A 807F00B4 +907D000E 807F002C +907D0012 807F1830 +907D0016 807F1998 +907D001A 807F208C +987D001E A07F2090 +987D001F 807F18C4 +987D0020 7F63DB78 +3D808003 618C3BD8 +7D8903A6 4E800421 +987D0021 807F0894 +907D0022 887F2218 +987D0026 887F221A +987D0027 887F221B +987D0028 887F221C +987D0029 887F221F +987D002A 807F2340 +907D002B 807F00E0 +987D002F 807F083C +B07D0030 887F1968 +809F0168 7C632050 +987D0032 887F25FF +987D0033 807F1988 +2C030000 40820008 +807F198C 987D0034 +807F0080 907D0035 +807F0084 907D0039 +807F008C 907D003D +807F0090 907D0041 +807F00EC 907D0045 +807F195C 907D0049 +807F0014 907D004D +A07F18EC B07D0051 +A07F2088 B07D0053 +838DB650 3B9C0055 +938DB650 BA8100B0 +800100E4 382100E0 +7C0803A6 8001001C +60000000 00000000 +C206B0E0 0000002C #Recording/SendGamePreFrame.asm +7C0802A6 90010004 +9421FF20 BE8100B0 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 41820120 +8B7F000C 806DB64C +83A30000 838DB650 +7FBDE214 38600037 +987D0000 806DB654 +907D0001 9B7D0005 +7FE3FB78 3D808000 +618C55F8 7D8903A6 +4E800421 987D0006 +3C60804D 80635F90 +907D0007 807F0010 +B07D000B 807F00B0 +907D000D 807F00B4 +907D0011 807F002C +907D0015 807F0620 +907D0019 807F0624 +907D001D 807F0638 +907D0021 807F063C +907D0025 807F0650 +907D0029 807F065C +907D002D 3C60804C +60631FAC 1C9B0044 +7C832214 A0640002 +B07D0031 80640030 +907D0033 80640034 +907D0037 3C608046 +6063B108 3C80804C +60841F78 88840001 +3884FFFF 2C040000 +40A00008 38840005 +1C840030 7C632214 +1C9B000C 7C832214 +88640002 987D003B +88640003 987D0040 +807F1830 907D003C +838DB650 3B9C0041 +938DB650 BA8100B0 +800100E4 382100E0 +7C0803A6 881F2219 +807F065C 00000000 +C2005604 0000000B #Recording/ShouldRecord.asm +3C608048 80639D30 +5463443E 2C030202 +41820034 2C030302 +4182002C 2C030208 +41820024 2C03010F +4182001C 2C030120 +41820014 2C03010E +4182000C 38600000 +4800000C 38600001 +48000004 4E800020 +60000000 00000000 +C208D698 00000005 #Recording/GetLCancelStatus/GetLCancelStatus.asm +7C050000 4080000C +38E00001 48000008 +38E00002 8103002C +98E825FF 7C050000 +60000000 00000000 +C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm +38600000 987E25FF +807E00B0 00000000 + $Optional: Show Player Names [Fizzi, UnclePunch, Enzyme, jmlee337] *Show players' Slippi Online display names as HUD elements when available C216E9B4 0000009A #Playback/Show Player Names/InitInGame.asm @@ -972,7 +1447,7 @@ C1C07AE1 3C6F34D7 3D80803A 618C611C 7D8903A6 4E800421 7C7F1B78 4BFFFE91 -7F8802A6 834DB64C +7F8802A6 834DAFC0 3A800000 3EA0804A 62B50FF0 7E83A378 3D808003 618C241C diff --git a/Output/Playback/GALJ01r2.ini b/Output/Playback/GALJ01r2.ini index d3d3f783..73f888aa 100644 --- a/Output/Playback/GALJ01r2.ini +++ b/Output/Playback/GALJ01r2.ini @@ -125,7 +125,7 @@ $Required: Slippi Playback [Fizzi, UnclePunch, Achilles, tauKhan, Krohnos] C216E9E4 0000001D #Playback/Core/CleanDynamicGeckos.asm 3BC30000 7C0802A6 90010004 9421FF20 -BE8100B0 83CDB64C +BE8100B0 83CDAFC0 83BE0010 3B800000 807D0000 2C030000 41820018 3B9C0001 @@ -156,7 +156,7 @@ C216D298 00000016 #Playback/Core/FetchGameFrame.asm 881F0008 2C000000 408200A0 7C0802A6 90010004 9421FF20 -BE8100B0 806DB64C +BE8100B0 806DAFC0 83630000 38600076 987B0000 806DB654 907B0001 7F63DB78 @@ -181,7 +181,7 @@ C206B0DC 00000049 #Playback/Core/RestoreGameFrame.asm 8BBF000C 7FA3EB78 3D808003 618C1724 7D8903A6 4E800421 -7C7C1B78 832DB64C +7C7C1B78 832DAFC0 83790000 7FE3FB78 3D808000 618C55F8 7D8903A6 4E800421 @@ -249,13 +249,15 @@ C0230044 D0230030 BA8100B0 800100E4 382100E0 7C0803A6 881F2219 00000000 -C216E74C 0000009E #Playback/Core/RestoreGameInfo.asm +C216E748 0000009F #Playback/Core/RestoreGameInfo.asm +3D808022 618C54B8 +7D8903A6 4E800421 7C0802A6 90010004 9421FF20 BE8100B0 386005EC 3D808037 618CF1E4 7D8903A6 4E800421 7C7C1B78 -938DB64C 388005EC +938DAFC0 388005EC 3D808000 618CC160 7D8903A6 4E800421 38600221 3D808037 @@ -346,7 +348,7 @@ C216E74C 0000009E #Playback/Core/RestoreGameInfo.asm 7D8903A6 4E800421 4800013C 4E800021 2C050000 41820018 -80CDB64C 8066000C +80CDAFC0 8066000C 38630008 7C632A14 9066000C 4E800020 4E800021 2C050000 @@ -355,7 +357,7 @@ C216E74C 0000009E #Playback/Core/RestoreGameInfo.asm BE8100B0 7C9E2378 7CBB2B78 80BE0000 54A501FE 64BD8000 -834DB64C 833A0014 +834DAFC0 833A0014 2C030004 41820014 2C030006 41820014 2C0300C2 41820014 @@ -398,7 +400,7 @@ BA8100B0 800100E4 4800004C 4E800021 7C0802A6 90010004 9421FF20 BE8100B0 -806DB64C 83A30000 +806DAFC0 83A30000 887D0002 2C030000 41820010 807D0003 3C80804D 90645F90 @@ -406,10 +408,9 @@ BA8100B0 800100E4 382100E0 7C0803A6 4E800020 BA8100B0 800100E4 382100E0 -7C0803A6 3C608017 -60000000 00000000 +7C0803A6 00000000 C216D304 00000009 #Playback/Core/RestoreLRAStart.asm -806DB64C 80630000 +806DAFC0 80630000 88630000 2C030002 4082002C 3860FFFF 38800007 3D808016 @@ -419,18 +420,18 @@ C216D304 00000009 #Playback/Core/RestoreLRAStart.asm 4E800420 7FE3FB78 60000000 00000000 C216B9C0 00000012 #Playback/Core/RestoreStockSteal.asm -80ADB64C 80A50004 +80ADAFC0 80A50004 38800089 98850000 808DB654 90850001 98650005 7CA32B78 38800006 38A00001 3D808000 618C55F0 7D8903A6 4E800421 -806DB64C 80630004 +806DAFC0 80630004 38800001 38A00000 3D808000 618C55F0 7D8903A6 4E800421 -806DB64C 80630004 +806DAFC0 80630004 88630000 2C030000 41820014 3D808016 618CBA1C 7D8903A6 @@ -445,13 +446,13 @@ C21A501C 0000002A #Playback/Core/FastForward/FastForward.asm 3D80801A 618C45E8 7D8903A6 4E800421 2C030002 41820018 -806DB64C 80630000 +806DAFC0 80630000 88630000 2C030003 41820024 38600001 38800002 3D808002 618C5064 7D8903A6 4E800421 7C1AD800 -480000E0 806DB64C +480000E0 806DAFC0 80630000 88630001 2C030001 4182001C 38600000 38800000 @@ -672,7 +673,7 @@ C238D224 00000015 #Playback/Core/Sounds/AssignSoundInstanceId.asm 2C03010E 40820090 7C0802A6 90010004 9421FF20 BE8100B0 -83EDB64C 3BDF001C +83EDAFC0 3BDF001C 8B9E0000 3C608048 80639D60 809F056B 7C032000 41810028 @@ -698,7 +699,7 @@ C21A5014 00000032 #Playback/Core/Sounds/HandleFrameSoundLog.asm 9421FF20 BE8100B0 3D808034 618C7364 7D8903A6 4E800421 -7C7D1B78 83EDB64C +7C7D1B78 83EDAFC0 3BDF001C 8B9E0000 3F008048 83189D60 3B18FFFF 82FF056B @@ -744,7 +745,7 @@ C2088224 0000001D #Playback/Core/Sounds/NoDestroyVoice.asm 5463443E 2C03010E 408200CC 7C0802A6 90010004 9421FF20 -BE8100B0 83EDB64C +BE8100B0 83EDAFC0 3BBF001C 57DE043E 8B9D0000 3C608048 80639D60 809F056B @@ -774,7 +775,7 @@ C20882B0 0000001D #Playback/Core/Sounds/NoDestroyVoice2.asm 5463443E 2C03010E 408200CC 7C0802A6 90010004 9421FF20 -BE8100B0 83EDB64C +BE8100B0 83EDAFC0 3BBF001C 57DE043E 8B9D0000 3C608048 80639D60 809F056B @@ -804,7 +805,7 @@ C238D0B0 00000027 #Playback/Core/Sounds/PreventDuplicateSounds.asm 5463443E 2C03010E 40820120 7C0802A6 90010004 9421FF20 -BE8100B0 83EDB64C +BE8100B0 83EDAFC0 3BDF001C 3BA00000 3B400000 56FB043E 8B9E0000 3C608048 @@ -921,6 +922,480 @@ C20056A8 00000005 #Common/CompatibilityHooks/RequestSSMLoad.asm 7C83612E 4E800020 60000000 00000000 +$Optional: Slippi Recording [Fizzi, Achilles, UnclePunch, Nikki, jmlee337, Krohnos] +*Allows for outputting new replay data during playback. +*Useful for spectator service or upgrading replay versions. +040679BC 38802600 #Recording/ExtendPlayerBlock.asm +C23219EC 0000001D #Recording/FlushFrameBuffer.asm +7C0802A6 90010004 +9421FF20 BE8100B0 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 418200A8 +806DB64C 83C30000 +83ADB650 7F9EEA14 +2C1D0000 41820090 +3860003C 987C0000 +806DB654 907C0001 +3C608048 80639D30 +5463443E 2C030208 +806DB654 4082003C +80ADB61C 88850010 +2C040000 4082002C +8885000F 2C040000 +40820020 80850909 +3884FF85 80E50916 +7C872050 7C041800 +40800008 7C832378 +907C0005 3BBD0009 +7FC3F378 7FA4EB78 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 38600000 +906DB650 BA8100B0 +800100E4 382100E0 +7C0803A6 8001001C +60000000 00000000 +C216D884 00000030 #Recording/SendGameEnd.asm +7C0802A6 90010004 +9421FF20 BE8100B0 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 41820144 +3F208046 6339B6A0 +8B590008 2C1A0000 +41820130 830DB64C +88780004 2C030000 +40820120 3C608048 +80639D30 5463443E +2C030208 4082001C +2C1A0002 40820014 +806DB61C 8863000F +2C030000 418200F4 +83B80000 38600039 +987D0000 9B5D0001 +2C1A0007 4082000C +88790001 48000008 +3860FFFF 987D0002 +3E808047 62949DA4 +7E83A378 3C808046 +6084B8EC 38A02278 +3D808000 618C31F4 +7D8903A6 4E800421 +3C808046 6084B6A0 +7E83A378 880424D0 +98030006 88040008 +98030004 3D808016 +618C6378 7D8903A6 +4E800421 3AA00000 +7EA3AB78 48000041 +38950003 7C64E9AE +3AB50001 2C150003 +4081FFE8 7FA3EB78 +38800007 38A00001 +3D808000 618C55F0 +7D8903A6 4E800421 +38600001 98780004 +48000030 3D808047 +618C9DA4 1D6300A8 +7D6B6214 886B0058 +2C030003 4182000C +886B005E 48000008 +3860FFFF 4E800020 +BA8100B0 800100E4 +382100E0 7C0803A6 +819F2514 00000000 +C216E74C 0000010A #Recording/SendGameInfo.asm +7C0802A6 90010004 +9421FF20 BE8100B0 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 41820814 +38600005 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7B1B78 +936DB64C 38800005 +3D808000 618CC160 +7D8903A6 4E800421 +38600770 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7E1B78 +93DB0000 38600000 +906DB650 3C608000 +60635600 80630000 +38630008 38800000 +3D808000 618C55FC +7D8903A6 4E800421 +7C7C1B78 38600035 +987E0000 3860001C +987E0001 38600036 +987E0002 386002F8 +B07E0003 38600037 +987E0005 38600040 +B07E0006 38600038 +987E0008 38600054 +B07E0009 38600039 +987E000B 38600006 +B07E000C 3860003A +987E000E 3860000C +B07E000F 3860003B +987E0011 3860002C +B07E0012 3860003C +987E0014 38600008 +B07E0015 3860003D +987E0017 B39E0018 +38600010 987E001A +38600204 B07E001B +38600036 987E001D +3C600310 60630000 +907E001E 387E0022 +7FE4FB78 38A00138 +3D808000 618C31F4 +7D8903A6 4E800421 +387E0062 3880001C +3D808000 618CC160 +7D8903A6 4E800421 +387E0022 3AA30060 +3A800000 1ED40024 +7ED6AA14 88760001 +2C030000 40820034 +88760000 2C030012 +40820028 3C60804C +606320BC 1C940044 +7C632214 80630000 +546005EF 4182000C +38600013 98760000 +3A940001 2C140004 +4180FFB4 387E0022 +3AA30060 3A800000 +1ED40024 7ED6AA14 +88760001 2C030000 +4082002C 88760000 +3D808016 618C9238 +7D8903A6 4E800421 +88960003 7C041800 +4081000C 38600000 +98760003 3A940001 +2C140004 4180FFBC +3C60804D 80635F90 +907E015A 3A82F228 +3AA00000 3ADE015E +1EF50008 38600001 +7C76B92E 3AF70004 +7C76B92E 3AB50001 +2C150004 4180FFE4 +3A800000 3ABF0060 +3AFE017E 1F140010 +7F18BA14 1ED40024 +7ED6AA14 88760001 +2C030000 40820040 +8876000A 2C030078 +41820034 3D808023 +618C754C 7D8903A6 +4E800421 7C641B78 +7F03C378 38A00010 +3D808000 618C31F4 +7D8903A6 4E800421 +4800001C 7F03C378 +38800010 3D808000 +618CC160 7D8903A6 +4E800421 3A940001 +2C140004 4180FF88 +8862F234 987E01BE +8862F23C 987E01BF +3C608048 80639D30 +5463443E B07E01C0 +3B200000 3C608048 +80639D30 5463443E +2C030208 4082017C +38600000 3D808000 +618C5610 7D8903A6 +4E800421 7C791B78 +3A800000 3ABF0060 +3AFE01C2 3B590034 +1C74001F 7F03BA14 +1ED40024 7ED6AA14 +88760001 2C030000 +40820028 1C74001F +7C83D214 7F03C378 +38A0001F 3D808000 +618C31F4 7D8903A6 +4E800421 4800001C +7F03C378 3880001F +3D808000 618CC160 +7D8903A6 4E800421 +3A940001 2C140004 +4180FFA0 3A800000 +3ABF0060 3AFE023E +3B5900CF 1C74000A +7F03BA14 1ED40024 +7ED6AA14 88760001 +2C030000 40820028 +1C74000A 7C83D214 +7F03C378 38A0000A +3D808000 618C31F4 +7D8903A6 4E800421 +4800001C 7F03C378 +3880000A 3D808000 +618CC160 7D8903A6 +4E800421 3A940001 +2C140004 4180FFA0 +3A800000 3ABF0060 +3AFE0266 3B5900F7 +1C74001D 7F03BA14 +1ED40024 7ED6AA14 +88760001 2C030000 +40820028 1C74001D +7C83D214 7F03C378 +38A0001D 3D808000 +618C31F4 7D8903A6 +4E800421 4800001C +7F03C378 3880001D +3D808000 618CC160 +7D8903A6 4E800421 +3A940001 2C140004 +4180FFA0 4800001C +387E01C2 38800118 +3D808000 618CC160 +7D8903A6 4E800421 +3D808000 618CADF4 +7D8903A6 4E800421 +987E02DA 2C190000 +41820044 387E02DB +38990394 38A00033 +3D808000 618C31F4 +7D8903A6 4E800421 +3C60803D 6063AD40 +80630000 81830088 +A06C0001 907E030E +886C0006 907E0312 +4800001C 387E02DB +3880003B 3D808000 +618CC160 7D8903A6 +4E800421 2C190000 +41820018 7F23CB78 +3D808037 618CF1B0 +7D8903A6 4E800421 +7FC3F378 38800316 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 38600205 +3D808037 618CF1E4 +7D8903A6 4E800421 +7C751B78 3C608000 +60635600 80630000 +3AE30008 38600010 +98750000 3860003D +98750203 38600200 +B0750201 38600000 +98750204 3AC00000 +7C76E050 2C030200 +41810010 B0750201 +38600001 98750204 +38750001 7EE4BB78 +7C84B214 A0B50201 +3D808000 618C31F4 +7D8903A6 4E800421 +7EA3AB78 38800205 +38A00001 3D808000 +618C55F0 7D8903A6 +4E800421 3AD60200 +7C16E000 4180FFA4 +7EA3AB78 3D808037 +618CF1B0 7D8903A6 +4E800421 38600004 +38800007 38A00000 +3D808039 618C01F0 +7D8903A6 4E800421 +48000021 7C8802A6 +38A00000 3D808038 +618CFD54 7D8903A6 +4E800421 48000070 +4E800021 7C0802A6 +90010004 9421FF20 +BE8100B0 806DB64C +83A30000 838DB650 +7FBDE214 3860003A +987D0000 806DB654 +907D0001 3C60804D +80635F90 907D0005 +3C608048 80639D60 +907D0009 838DB650 +3B9C000D 938DB650 +BA8100B0 800100E4 +382100E0 7C0803A6 +4E800020 38600004 +38800007 38A00000 +3D808039 618C01F0 +7D8903A6 4E800421 +48000021 7C8802A6 +38A0000F 3D808038 +618CFD54 7D8903A6 +4E800421 4800012C +4E800021 7C0802A6 +90010004 9421FF20 +BE8100B0 806DB64C +83E30000 83CDB650 +7FFFF214 3B600000 +806DC18C 83A30024 +2C1D0000 418200E0 +3B7B0001 2C1B000F +418100D4 839D002C +3860003B 987F0000 +806DB654 907F0001 +807C0010 B07F0005 +807C0024 987F0007 +807C002C 907F0008 +807C0040 907F000C +807C0044 907F0010 +807C004C 907F0014 +807C0050 907F0018 +807C0C9C B07F001C +807C0D44 907F001E +807C001C 907F0022 +887C0DD7 987F0026 +887C0DDB 987F0027 +887C0DEB 987F0028 +887C0DEF 987F0029 +807C0518 2C030000 +41820018 8063002C +2C030000 4182000C +8863000C 48000008 +3860FFFF 987F002A +A07C0DA8 B07F002B +83CDB650 3BDE002D +93CDB650 3BFF002D +83BD0008 2C1D0000 +4082FF28 BA8100B0 +800100E4 382100E0 +7C0803A6 4E800020 +BA8100B0 800100E4 +382100E0 7C0803A6 +3C608017 00000000 +C206DA34 00000038 #Recording/SendGamePostFrame.asm +7C0802A6 90010004 +9421FF20 BE8100B0 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 41820180 +887F221F 546306F7 +40820174 8B7F000C +806DB64C 83A30000 +838DB650 7FBDE214 +38600038 987D0000 +806DB654 907D0001 +9B7D0005 7FE3FB78 +3D808000 618C55F8 +7D8903A6 4E800421 +987D0006 807F0004 +987D0007 807F0010 +B07D0008 807F00B0 +907D000A 807F00B4 +907D000E 807F002C +907D0012 807F1830 +907D0016 807F1998 +907D001A 807F208C +987D001E A07F2090 +987D001F 807F18C4 +987D0020 7F63DB78 +3D808003 618C3BD8 +7D8903A6 4E800421 +987D0021 807F0894 +907D0022 887F2218 +987D0026 887F221A +987D0027 887F221B +987D0028 887F221C +987D0029 887F221F +987D002A 807F2340 +907D002B 807F00E0 +987D002F 807F083C +B07D0030 887F1968 +809F0168 7C632050 +987D0032 887F25FF +987D0033 807F1988 +2C030000 40820008 +807F198C 987D0034 +807F0080 907D0035 +807F0084 907D0039 +807F008C 907D003D +807F0090 907D0041 +807F00EC 907D0045 +807F195C 907D0049 +807F0014 907D004D +A07F18EC B07D0051 +A07F2088 B07D0053 +838DB650 3B9C0055 +938DB650 BA8100B0 +800100E4 382100E0 +7C0803A6 8001001C +60000000 00000000 +C206B0E0 0000002C #Recording/SendGamePreFrame.asm +7C0802A6 90010004 +9421FF20 BE8100B0 +3D808000 618C5604 +7D8903A6 4E800421 +2C030000 41820120 +8B7F000C 806DB64C +83A30000 838DB650 +7FBDE214 38600037 +987D0000 806DB654 +907D0001 9B7D0005 +7FE3FB78 3D808000 +618C55F8 7D8903A6 +4E800421 987D0006 +3C60804D 80635F90 +907D0007 807F0010 +B07D000B 807F00B0 +907D000D 807F00B4 +907D0011 807F002C +907D0015 807F0620 +907D0019 807F0624 +907D001D 807F0638 +907D0021 807F063C +907D0025 807F0650 +907D0029 807F065C +907D002D 3C60804C +60631FAC 1C9B0044 +7C832214 A0640002 +B07D0031 80640030 +907D0033 80640034 +907D0037 3C608046 +6063B108 3C80804C +60841F78 88840001 +3884FFFF 2C040000 +40A00008 38840005 +1C840030 7C632214 +1C9B000C 7C832214 +88640002 987D003B +88640003 987D0040 +807F1830 907D003C +838DB650 3B9C0041 +938DB650 BA8100B0 +800100E4 382100E0 +7C0803A6 881F2219 +807F065C 00000000 +C2005604 0000000B #Recording/ShouldRecord.asm +3C608048 80639D30 +5463443E 2C030202 +41820034 2C030302 +4182002C 2C030208 +41820024 2C03010F +4182001C 2C030120 +41820014 2C03010E +4182000C 38600000 +4800000C 38600001 +48000004 4E800020 +60000000 00000000 +C208D698 00000005 #Recording/GetLCancelStatus/GetLCancelStatus.asm +7C050000 4080000C +38E00001 48000008 +38E00002 8103002C +98E825FF 7C050000 +60000000 00000000 +C206C324 00000002 #Recording/GetLCancelStatus/ResetLCancelStatus.asm +38600000 987E25FF +807E00B0 00000000 + $Optional: Show Player Names [Fizzi, UnclePunch, Enzyme, jmlee337] *Show players' Slippi Online display names as HUD elements when available C216E9B4 0000009A #Playback/Show Player Names/InitInGame.asm @@ -971,7 +1446,7 @@ C1C07AE1 3C6F34D7 3D80803A 618C611C 7D8903A6 4E800421 7C7F1B78 4BFFFE91 -7F8802A6 834DB64C +7F8802A6 834DAFC0 3A800000 3EA0804A 62B50FF0 7E83A378 3D808003 618C241C diff --git a/Playback/Core/CleanDynamicGeckos.asm b/Playback/Core/CleanDynamicGeckos.asm index 7000ce9b..739af7e4 100644 --- a/Playback/Core/CleanDynamicGeckos.asm +++ b/Playback/Core/CleanDynamicGeckos.asm @@ -16,7 +16,7 @@ addi r30, r3, 0 backup -lwz REG_DirectoryBuffer, primaryDataBuffer(r13) +lwz REG_DirectoryBuffer, playbackDataBuffer(r13) #################################################################################################### # Step 1: First we need to count how many items there are so we can allocate a buffer diff --git a/Playback/Core/FastForward/FastForward.asm b/Playback/Core/FastForward/FastForward.asm index 467de7bd..c088421f 100644 --- a/Playback/Core/FastForward/FastForward.asm +++ b/Playback/Core/FastForward/FastForward.asm @@ -29,7 +29,7 @@ beq PreviousCodeLine # check status for fast forward - lwz r3,primaryDataBuffer(r13) # directory address + lwz r3,playbackDataBuffer(r13) # directory address lwz r3,PDB_EXI_BUF_ADDR(r3) # EXI buf address lbz r3,(BufferStatus_Start)+(BufferStatus_Status)(r3) cmpwi r3, CONST_FrameFetchResult_FastForward @@ -49,7 +49,7 @@ FastForward: #li r3,1 #branchl r12,VISetBlack # mute music and SFX - lwz r3,primaryDataBuffer(r13) # directory address + lwz r3,playbackDataBuffer(r13) # directory address lwz r3,PDB_EXI_BUF_ADDR(r3) # EXI buf address lbz r3,(RBStatus_Start)+(RBStatus_Status)(r3) cmpwi r3, 1 diff --git a/Playback/Core/FastForward/SkipCameraAdjustmentOnFFW.s b/Playback/Core/FastForward/SkipCameraAdjustmentOnFFW.s index 365ac8b4..c8f20771 100644 --- a/Playback/Core/FastForward/SkipCameraAdjustmentOnFFW.s +++ b/Playback/Core/FastForward/SkipCameraAdjustmentOnFFW.s @@ -9,7 +9,7 @@ .include "Playback/Playback.s" # check status for fast forward -lwz r11,primaryDataBuffer(r13) # directory address +lwz r11,playbackDataBuffer(r13) # directory address lwz r11,PDB_EXI_BUF_ADDR(r11) # EXI buf address lbz r11,(RBStatus_Start)+(RBStatus_Status)(r11) cmpwi r11, 0 diff --git a/Playback/Core/FastForward/SkipCameraAdjustmentOnFFW2.s b/Playback/Core/FastForward/SkipCameraAdjustmentOnFFW2.s index aed217d6..0453b764 100644 --- a/Playback/Core/FastForward/SkipCameraAdjustmentOnFFW2.s +++ b/Playback/Core/FastForward/SkipCameraAdjustmentOnFFW2.s @@ -9,7 +9,7 @@ .include "Playback/Playback.s" # check status for fast forward -lwz r11,primaryDataBuffer(r13) # directory address +lwz r11,playbackDataBuffer(r13) # directory address lwz r11,PDB_EXI_BUF_ADDR(r11) # EXI buf address lbz r11,(RBStatus_Start)+(RBStatus_Status)(r11) cmpwi r11, 0 diff --git a/Playback/Core/FetchGameFrame.asm b/Playback/Core/FetchGameFrame.asm index d0e741fb..8948e6bd 100644 --- a/Playback/Core/FetchGameFrame.asm +++ b/Playback/Core/FetchGameFrame.asm @@ -40,7 +40,7 @@ FetchGameFrame: backup -lwz r3,primaryDataBuffer(r13) +lwz r3,playbackDataBuffer(r13) lwz BufferPointer,PDB_EXI_BUF_ADDR(r3) FetchFrameInfo_REQUEST_DATA: diff --git a/Playback/Core/RestoreGameFrame.asm b/Playback/Core/RestoreGameFrame.asm index 9320ea27..07544da7 100644 --- a/Playback/Core/RestoreGameFrame.asm +++ b/Playback/Core/RestoreGameFrame.asm @@ -32,7 +32,7 @@ mr PlayerDataStatic,r3 # get buffer pointer - lwz REG_PDB_ADDR,primaryDataBuffer(r13) + lwz REG_PDB_ADDR,playbackDataBuffer(r13) lwz BufferPointer,PDB_EXI_BUF_ADDR(REG_PDB_ADDR) #Check if this player is a follower diff --git a/Playback/Core/RestoreGameInfo.asm b/Playback/Core/RestoreGameInfo.asm index b2552f6e..3d9899f5 100644 --- a/Playback/Core/RestoreGameInfo.asm +++ b/Playback/Core/RestoreGameInfo.asm @@ -1,9 +1,9 @@ ################################################################################ -# Address: 8016e74c +# Address: 8016e748 ################################################################################ ################################################################################ -# Inject at address 8016e74c +# Inject at address 8016e748 # Function is StartMelee and we are loading game information right before # it gets read to initialize the match ################################################################################ @@ -16,6 +16,8 @@ .set REG_GeckoBuffer,29 .set REG_DirectoryBuffer,28 +branchl r12, 0x802254b8 # Replaced codeline, call function + ################################################################################ # subroutine: gameInfoLoad # description: reads game info from slippi and loads those into memory @@ -28,7 +30,7 @@ li r3, PDB_SIZE branchl r12, HSD_MemAlloc mr REG_DirectoryBuffer, r3 - stw REG_DirectoryBuffer, primaryDataBuffer(r13) # Store directory buffer location + stw REG_DirectoryBuffer, playbackDataBuffer(r13) # Store directory buffer location li r4, PDB_SIZE branchl r12, Zero_AreaLength @@ -265,7 +267,7 @@ blrl cmpwi r5, 0 # If size is 0, either we don't support this codetype or theres nothing to replace beq Callback_CalculateSize_End - lwz r6, primaryDataBuffer(r13) + lwz r6, playbackDataBuffer(r13) lwz r3, PDB_RESTORE_BUF_SIZE(r6) addi r3, r3, 8 # For each new code, we need a target address and length add r3, r3, r5 # Add size of the replacement to the total length @@ -298,7 +300,7 @@ blrl rlwinm r5, r5, 0, 0x01FFFFFF oris REG_TargetDataPtr, r5, 0x8000 # Injection Address - lwz REG_DirectoryBuffer2, primaryDataBuffer(r13) + lwz REG_DirectoryBuffer2, playbackDataBuffer(r13) lwz REG_RestoreBufPos, PDB_RESTORE_BUF_WRITE_POS(REG_DirectoryBuffer2) # r3 contains the codetype, do a switch statement on it to prepare for memcpys @@ -391,4 +393,3 @@ GECKO_CLEANUP: Injection_Exit: restore -lis r3, 0x8017 #execute replaced code line diff --git a/Playback/Core/RestoreInitialRNG.s b/Playback/Core/RestoreInitialRNG.s index b54b2eb9..403ceddd 100644 --- a/Playback/Core/RestoreInitialRNG.s +++ b/Playback/Core/RestoreInitialRNG.s @@ -37,7 +37,7 @@ blrl backup # check status of initial RNG - lwz r3,primaryDataBuffer(r13) + lwz r3,playbackDataBuffer(r13) lwz REG_Buffer,PDB_EXI_BUF_ADDR(r3) lbz r3,(InitialRNG_Start)+(InitialRNG_Status)(REG_Buffer) cmpwi r3,0 diff --git a/Playback/Core/RestoreLRAStart.asm b/Playback/Core/RestoreLRAStart.asm index 75c5bfad..deae4af2 100644 --- a/Playback/Core/RestoreLRAStart.asm +++ b/Playback/Core/RestoreLRAStart.asm @@ -12,7 +12,7 @@ # Check status of frame received. If a terminate result is received, that means # we need to end the game immediately - lwz r3,primaryDataBuffer(r13) + lwz r3,playbackDataBuffer(r13) lwz r3,PDB_EXI_BUF_ADDR(r3) lbz r3,(BufferStatus_Start)+(BufferStatus_Status)(r3) cmpwi r3, CONST_FrameFetchResult_Terminate diff --git a/Playback/Core/RestoreStockSteal.asm b/Playback/Core/RestoreStockSteal.asm index 06a5315a..c424fef5 100644 --- a/Playback/Core/RestoreStockSteal.asm +++ b/Playback/Core/RestoreStockSteal.asm @@ -11,7 +11,7 @@ .include "Playback/Playback.s" # Setup buffer - lwz r5,primaryDataBuffer(r13) + lwz r5,playbackDataBuffer(r13) lwz r5,PDB_SECONDARY_EXI_BUF_ADDR(r5) #Get secondary DMA buffer alloc li r4,CMD_IS_STOCK_STEAL stb r4,0x0(r5) #Store stock steal cmd ID @@ -24,14 +24,14 @@ li r5,CONST_ExiWrite branchl r12,FN_EXITransferBuffer # Receive buffer over DMA - lwz r3,primaryDataBuffer(r13) + lwz r3,playbackDataBuffer(r13) lwz r3,PDB_SECONDARY_EXI_BUF_ADDR(r3) #Get secondary DMA buffer alloc li r4,0x1 li r5,CONST_ExiRead branchl r12,FN_EXITransferBuffer # Check if this player requested a stock steal on this frame - lwz r3,primaryDataBuffer(r13) + lwz r3,playbackDataBuffer(r13) lwz r3,PDB_SECONDARY_EXI_BUF_ADDR(r3) #Get secondary DMA buffer alloc lbz r3,0x0(r3) cmpwi r3,0x0 diff --git a/Playback/Core/Sounds/AssignSoundInstanceId.asm b/Playback/Core/Sounds/AssignSoundInstanceId.asm index 58286fae..cf9a0a18 100644 --- a/Playback/Core/Sounds/AssignSoundInstanceId.asm +++ b/Playback/Core/Sounds/AssignSoundInstanceId.asm @@ -20,7 +20,7 @@ bne EXIT backup -lwz REG_PDB_ADDRESS, primaryDataBuffer(r13) # data buffer address +lwz REG_PDB_ADDRESS, playbackDataBuffer(r13) # data buffer address addi REG_SFXDB_ADDRESS, REG_PDB_ADDRESS, PDB_SFXDB_START lbz REG_WRITE_INDEX, SFXDB_WRITE_INDEX(REG_SFXDB_ADDRESS) diff --git a/Playback/Core/Sounds/HandleFrameSoundLog.asm b/Playback/Core/Sounds/HandleFrameSoundLog.asm index 1e918d26..90ac52bd 100644 --- a/Playback/Core/Sounds/HandleFrameSoundLog.asm +++ b/Playback/Core/Sounds/HandleFrameSoundLog.asm @@ -33,7 +33,7 @@ backup branchl r12, OSDisableInterrupts # Not backing up r3 output, don't use r3 in body mr REG_INTERRUPT_IDX, r3 -lwz REG_PDB_ADDRESS, primaryDataBuffer(r13) # data buffer address +lwz REG_PDB_ADDRESS, playbackDataBuffer(r13) # data buffer address addi REG_SFXDB_ADDRESS, REG_PDB_ADDRESS, PDB_SFXDB_START lbz REG_SOUND_WRITE_INDEX, SFXDB_WRITE_INDEX(REG_SFXDB_ADDRESS) diff --git a/Playback/Core/Sounds/NoDestroyVoice.asm b/Playback/Core/Sounds/NoDestroyVoice.asm index 2c947926..be8236cc 100644 --- a/Playback/Core/Sounds/NoDestroyVoice.asm +++ b/Playback/Core/Sounds/NoDestroyVoice.asm @@ -17,7 +17,7 @@ bne EXIT backup -lwz REG_PDB_ADDRESS, primaryDataBuffer(r13) # data buffer address +lwz REG_PDB_ADDRESS, playbackDataBuffer(r13) # data buffer address addi REG_SFXDB_ADDRESS, REG_PDB_ADDRESS, PDB_SFXDB_START rlwinm REG_SOUND_ID, REG_SOUND_ID, 0, 0xFFFF # extract half word ID diff --git a/Playback/Core/Sounds/NoDestroyVoice2.asm b/Playback/Core/Sounds/NoDestroyVoice2.asm index f3b71fed..6963c36c 100644 --- a/Playback/Core/Sounds/NoDestroyVoice2.asm +++ b/Playback/Core/Sounds/NoDestroyVoice2.asm @@ -23,7 +23,7 @@ bne EXIT backup -lwz REG_PDB_ADDRESS, primaryDataBuffer(r13) # data buffer address +lwz REG_PDB_ADDRESS, playbackDataBuffer(r13) # data buffer address addi REG_SFXDB_ADDRESS, REG_PDB_ADDRESS, PDB_SFXDB_START rlwinm REG_SOUND_ID, REG_SOUND_ID, 0, 0xFFFF # extract half word ID diff --git a/Playback/Core/Sounds/PreventDuplicateSounds.asm b/Playback/Core/Sounds/PreventDuplicateSounds.asm index c75fe816..13f4bffb 100644 --- a/Playback/Core/Sounds/PreventDuplicateSounds.asm +++ b/Playback/Core/Sounds/PreventDuplicateSounds.asm @@ -22,7 +22,7 @@ bne EXIT backup -lwz REG_PDB_ADDRESS, primaryDataBuffer(r13) # data buffer address +lwz REG_PDB_ADDRESS, playbackDataBuffer(r13) # data buffer address addi REG_SFXDB_ADDRESS, REG_PDB_ADDRESS, PDB_SFXDB_START li REG_IS_SOUND_ACTIVE, 0 li REG_SOUND_INSTANCE_ID, 0 diff --git a/Playback/Show Player Names/InitInGame.asm b/Playback/Show Player Names/InitInGame.asm index 26c4481b..f54849de 100644 --- a/Playback/Show Player Names/InitInGame.asm +++ b/Playback/Show Player Names/InitInGame.asm @@ -134,7 +134,7 @@ bl DATA_BLRL mflr REG_DATA_ADDR # get PDB -lwz REG_PDB_ADDR, primaryDataBuffer(r13) +lwz REG_PDB_ADDR, playbackDataBuffer(r13) ########################## ## Display Player Names ## diff --git a/Recording/SendGamePreFrame.asm b/Recording/SendGamePreFrame.asm index cdc4ae67..12585f73 100644 --- a/Recording/SendGamePreFrame.asm +++ b/Recording/SendGamePreFrame.asm @@ -1,5 +1,5 @@ ################################################################################ -# Address: 8006b0dc +# Address: 8006b0e0 ################################################################################ .include "Common/Common.s" .include "Recording/Recording.s" @@ -125,4 +125,5 @@ CONTINUE_RAW_X: Injection_Exit: restore - lbz r0, 0x2219(r31) #execute replaced code line + lbz r0, 0x2219(r31) # reload r0 from previous line + lwz r3, 0x065C(r31) # replaced code line \ No newline at end of file diff --git a/Recording/ShouldRecord.asm b/Recording/ShouldRecord.asm index 1d043ca6..2d36eb1a 100644 --- a/Recording/ShouldRecord.asm +++ b/Recording/ShouldRecord.asm @@ -16,6 +16,8 @@ beq ReturnTrue cmpwi r3, SCENE_HOMERUN_IN_GAME beq ReturnTrue + cmpwi r3, SCENE_PLAYBACK_IN_GAME + beq ReturnTrue ReturnFalse: li r3,0 diff --git a/playback.json b/playback.json index 0adf8a71..96f9e9c1 100644 --- a/playback.json +++ b/playback.json @@ -133,6 +133,29 @@ } ] }, + { + "name": "Optional: Slippi Recording", + "authors": [ + "Fizzi", + "Achilles", + "UnclePunch", + "Nikki", + "jmlee337", + "Krohnos" + ], + "description": [ + "Allows for outputting new replay data during playback.", + "Useful for spectator service or upgrading replay versions." + ], + "build": [ + { + "type": "injectFolder", + "sourceFolder": "Recording", + "isRecursive": true, + "annotation": "Slippi Recording [Fizzi, Achilles, UnclePunch, Nikki, jmlee337]" + } + ] + }, { "name": "Optional: Show Player Names", "authors": [