Add setting to hide seek bar

This commit is contained in:
R2DLiu 2020-07-16 21:00:13 -04:00
commit 646140c38e
11 changed files with 1615 additions and 3640 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,829 @@
# GALE01 - Super Smash Bros. Melee NTSC-U 1.02
[Core]
CPUThread = False
GPUDeterminismMode = fake-completion
PollingMethod = OnSIRead
FastDiscSpeed = True
[Gecko_Enabled]
$Required: General Codes
$Required: Slippi Playback
[Gecko]
$Required: General Codes [Achilles, Dan Salvato, UnclePunch, tauKhan, Ptomerty, Cilan, Datel, Most]
0445BF28 FFFFFFFF #Unlock All Characters and Stages [Datel]
0445BF2C FFFFFFFF
0415D94C 4E800020 #Disable Special Messages [Most]
0415D984 4E800020 #Disable Trophy Messages [Achilles]
C22FCCE8 00000013 #External/Extended Nametag Box/Extended Nametag Box.asm
3C608003 6063556C
7C6803A6 887F0000
4E800021 5460063E
28000078 41820070
3C608045 6063D84F
1C0001A4 7C630214
38800000 8C030001
2C000000 41820018
38840001 2C000080
41A0FFEC 8C030001
4BFFFFE4 2C040005
41800034 3C604080
9061FFF0 C221FFF0
3E404330 CA028C58
9241FFEC 9081FFF0
C9E1FFEC EDEF8028
EDEF8824 807E0010
D1E3002C 807E0010
60000000 00000000
$Required: Slippi Playback [Fizzi, UnclePunch, Achilles, tauKhan]
*Used to play back a .slp file
*Will play replay configured in playback.txt
C216E9E4 00000010 #Playback/Core/CleanDynamicGeckos.asm
3BC30000 7C0802A6
90010004 9421FF50
BE810008 83CDB64C
83BE0010 807D0000
2C030000 41820044
389D0008 80BD0004
3D808000 618C31F4
7D8903A6 4E800421
807D0000 809D0004
3D808032 618C8F50
7D8903A6 4E800421
807D0004 7FBD1A14
3BBD0008 4BFFFFB8
BA810008 800100B4
382100B0 7C0803A6
60000000 00000000
C216D298 00000016 #Playback/Core/FetchGameFrame.asm
881F0008 2C000000
408200A0 7C0802A6
90010004 9421FF50
BE810008 806DB64C
83630000 38600076
987B0000 806DB654
907B0001 7F63DB78
38800005 38A00001
3D808000 618C55F0
7D8903A6 4E800421
7F63DB78 3880018F
38A00000 3D808000
618C55F0 7D8903A6
4E800421 887B0000
2C030000 40820024
3D808034 618CF314
7D8903A6 4E800421
3C60804C 38000000
98031F7B 4BFFFF90
BA810008 800100B4
382100B0 7C0803A6
881F0008 00000000
C206B0DC 00000043 #Playback/Core/RestoreGameFrame.asm
7C0802A6 90010004
9421FF50 BE810008
8BBF000C 7FA3EB78
3D808003 618C1724
7D8903A6 4E800421
7C7C1B78 806DB64C
83630000 7FE3FB78
3D808000 618C55F8
7D8903A6 4E800421
7C741B78 389B0007
88BF000C 1CA50062
7C842A14 1CB40031
7F442A14 3C80804D
807A0000 90645F90
807A0004 907F0620
807A0008 907F0624
807A000C 907F0638
807A0010 907F063C
807A0014 907F0650
807A0018 907F065C
807A001C 907F00B0
807A0020 907F00B4
807A0024 907F002C
807A0028 907F0010
3C608046 6063B108
3C80804C 60841F78
88840001 3884FFFF
2C040000 40A00008
38840005 1C840030
7C632214 889F0618
1C84000C 7E832214
887A002C 98740002
807A002D 2C03FFFF
41820040 90610040
C0210040 C05F1830
EC211028 C0429500
FC011040 41820024
7FE3FB78 C0210040
C05F1830 EC211028
3D808006 618CCC7C
7D8903A6 4E800421
806DB654 2C03FF85
408200AC 7FE3FB78
38800000 C0228874
3D808007 618C592C
7D8903A6 4E800421
807F00B0 907F06F4
907F070C 807F00B4
907F06F8 907F0710
807F00B8 907F06FC
907F0714 C03F00B4
D03F2344 806DAE0C
907F0728 887F000C
889F221F 5484EFFE
38BF00B0 3D808003
618C2828 7D8903A6
4E800421 7FC3F378
3D808007 618C61C8
7D8903A6 4E800421
807F0890 C0230040
D023002C C0230044
D0230030 3D808002
618CF3AC 7D8903A6
4E800421 BA810008
800100B4 382100B0
7C0803A6 881F2219
60000000 00000000
C216E74C 00000099 #Playback/Core/RestoreGameInfo.asm
7C0802A6 90010004
9421FF50 BE810008
3860056F 3D808037
618CF1E4 7D8903A6
4E800421 7C7C1B78
938DB64C 3880056F
3D808000 618CC160
7D8903A6 4E800421
386001A4 3D808037
618CF1E4 7D8903A6
4E800421 7C7E1B78
93DC0000 38600040
3D808037 618CF1E4
7D8903A6 4E800421
907C0004 38600075
987E0000 387C001C
907E0001 38600553
907E0005 38600000
907E0009 7FC3F378
3880000D 38A00001
3D808000 618C55F0
7D8903A6 4E800421
7FC3F378 388001A4
38A00000 3D808000
618C55F0 7D8903A6
4E800421 887E0000
2C030001 41820018
3D808034 618CF314
7D8903A6 4E800421
4BFFFF8C 807E0001
3C80804D 90645F90
7FE3FB78 389E0005
38A00138 3D808000
618C31F4 7D8903A6
4E800421 387F0040
3880001C 3D808000
618CC160 7D8903A6
4E800421 3AE2F22C
3A82F230 3ABE013D
3AC00000 1C960008
7C64A82E 7C76B9AE
38840004 7C64A82E
7C76A1AE 3AD60001
2C160004 4180FFE0
3A800000 3ABF0060
1ED40024 7ED6AA14
88760001 2C030000
40820078 8876000A
2C030078 4182006C
7C771B78 3D808023
618C7A04 7D8903A6
4E800421 7EE3BB78
3D808015 618CCC9C
7D8903A6 4E800421
38630198 389E015D
1CB40010 7C842A14
88A40000 2C050000
40820010 38600078
9876000A 4800001C
38A00010 3D808000
618C31F4 7D8903A6
4E800421 48000004
3A940001 2C140004
4180FF70 887E019D
9862F234 887E019E
9862F238 887E019F
9862F23C 807E01A0
3D808037 618CF1E4
7D8903A6 4E800421
7C7D1B78 93BC0008
3860008A 987D0000
7FA3EB78 38800001
38A00001 3D808000
618C55F0 7D8903A6
4E800421 7FA3EB78
809E01A0 38A00000
3D808000 618C55F0
7D8903A6 4E800421
38800004 909C000C
7FA3EB78 48000055
7C8802A6 3D808000
618C55FC 7D8903A6
4E800421 807C000C
3D808037 618CF1E4
7D8903A6 4E800421
907C0010 907C0014
7FA3EB78 48000041
7C8802A6 3D808000
618C55FC 7D8903A6
4E800421 4800013C
4E800021 2C050000
41820018 80CDB64C
8066000C 38630008
7C632A14 9066000C
4E800020 4E800021
2C050000 41820108
7C0802A6 90010004
9421FF50 BE810008
7C9E2378 7CBB2B78
80BE0000 54A501FE
64BD8000 834DB64C
833A0014 2C030004
41820014 2C030006
41820014 2C0300C2
41820014 3B9E0004
48000048 3B9E0008
48000040 389E0008
7C7D2050 546301BA
64634800 907A0018
3B9A0018 807E0004
1C630008 7C83F214
387D0004 7C641850
546301BA 64634800
3863FFFC 90640004
93B90000 93790004
38790008 7FA4EB78
7F65DB78 3D808000
618C31F4 7D8903A6
4E800421 3B390008
7F39DA14 933A0014
7FA3EB78 7F84E378
7F65DB78 3D808000
618C31F4 7D8903A6
4E800421 7FA3EB78
7F64DB78 3D808032
618C8F50 7D8903A6
4E800421 BA810008
800100B4 382100B0
7C0803A6 4E800020
38600000 809C0014
90640000 7FA3EB78
809E01A0 3D808032
618C8F50 7D8903A6
4E800421 38600004
38800007 38A00000
3D808039 618C01F0
7D8903A6 4E800421
48000021 7C8802A6
38A00000 3D808038
618CFD54 7D8903A6
4E800421 4800004C
4E800021 7C0802A6
90010004 9421FF50
BE810008 806DB64C
83A30000 887D0002
2C030000 41820010
807D0003 3C80804D
90645F90 BA810008
800100B4 382100B0
7C0803A6 4E800020
BA810008 800100B4
382100B0 7C0803A6
3C608017 00000000
C216D304 00000009 #Playback/Core/RestoreLRAStart.asm
806DB64C 80630000
88630000 2C030002
4082002C 3860FFFF
38800007 3D808016
618CCF4C 7D8903A6
4E800421 3D808016
618CD30C 7D8903A6
4E800420 7FE3FB78
60000000 00000000
C216B9C0 00000012 #Playback/Core/RestoreStockSteal.asm
80ADB64C 80A50004
38800089 98850000
808DB654 90850001
98650005 7CA32B78
38800006 38A00001
3D808000 618C55F0
7D8903A6 4E800421
806DB64C 80630004
38800001 38A00000
3D808000 618C55F0
7D8903A6 4E800421
806DB64C 80630004
88630000 2C030000
41820014 3D808016
618CBA1C 7D8903A6
4E800420 3D808016
618CBAC8 7D8903A6
4E800420 00000000
C21A501C 00000029 #Playback/Core/FastForward/FastForward.asm
3C808048 88649D30
2C03000E 40820040
88649D33 2C030001
40820034 38600001
3D80801A 618C45E8
7D8903A6 4E800421
2C030002 41820018
806DB64C 80630000
88630000 2C030003
41820024 38600001
38800002 3D808002
618C5064 7D8903A6
4E800421 7C1AD800
480000DC 806DB64C
80630000 88630001
2C030001 4182001C
38600000 38800000
3D808002 618C5064
7D8903A6 4E800421
3D808003 618C0A50
7D8903A6 4E800421
3D808002 618CA4AC
7D8903A6 4E800421
4800000D 2C0300FF
48000084 7C0802A6
90010004 9421FF50
BE810008 3FE08045
63FF3080 3BC00000
3D808003 618C0A50
7D8903A6 4E800421
80630028 3D808036
618C8458 7D8903A6
4E800421 807F00B0
2C030000 41820014
3D808008 618C6A8C
7D8903A6 4E800421
3BDE0001 3BFF0E90
2C1E0004 4180FFD8
BA810008 800100B4
382100B0 7C0803A6
4E800020 00000000
C2377544 00000002 #Playback/Core/FastForward/IncrementPadIndex.asm
40A2000C 38000001
981E0003 00000000
04376A88 881F0001 #Playback/Core/FastForward/PadAlwaysUseMasterIndex.asm
C21A45A0 00000007 #Playback/Core/Scene/Boot to Playback Scene.asm
48000019 7C6802A6
3C80803D 6084ADA8
90640004 4800001C
4E800021 38600003
3C808047 60849D30
98640003 4E800020
3800000E 00000000
C21A6348 00000070 #Playback/Core/Scene/SceneThink_Playback.asm
3C608047 60639D30
88630000 2C03000E
40820364 3860000D
3880000E 38A00000
3D808039 618C01F0
7D8903A6 4E800421
48000021 7C8802A6
38A00000 3D808038
618CFD54 7D8903A6
4E800421 48000318
4E800021 7C0802A6
90010004 9421FF50
BE810008 48000289
7FC802A6 38600000
3880FFFF 3D80803A
618C6754 7D8903A6
4E800421 7C7C1B78
38800001 989C0049
38800000 989C004A
C03E0008 D03C0008
C03E0010 D03C0024
D03C0028 C03E0000
C05E0004 7F83E378
4800025D 7C8802A6
4800026D 7CA802A6
3D80803A 618C6B98
7D8903A6 4E800421
7C641B78 7F83E378
C03E000C C05E000C
3D80803A 618C7548
7D8903A6 4E800421
C03E0014 C05E0018
7F83E378 4800023D
7C8802A6 3D80803A
618C6B98 7D8903A6
4E800421 7C641B78
7F83E378 C03E000C
C05E000C 3D80803A
618C7548 7D8903A6
4E800421 3C602ECC
606340FF 90610040
7F83E378 38800001
38A10040 3D80803A
618C74F0 7D8903A6
4E800421 38600020
3D808037 618CF1E4
7D8903A6 4E800421
7C7D1B78 3B600000
3D808033 618CC898
7D8903A6 4E800421
3D808033 618CF270
7D8903A6 4E800421
38600000 3D808037
618C5538 7D8903A6
4E800421 8062F240
2C030000 4082001C
38600000 7F84E378
3D80803A 618C84BC
7D8903A6 4E800421
38600000 3D808037
618C61C0 7D8903A6
4E800421 3D808034
618CF314 7D8903A6
4E800421 3B7B0001
2C1B00F0 41800008
3B600000 3860003C
7C7B1B96 48000119
7C8802A6 1C630004
7CC32214 7F83E378
38800000 480000E9
7CA802A6 4CC63182
3D80803A 618C70A0
7D8903A6 4E800421
38600088 987D0000
7FA3EB78 38800001
38A00001 3D808000
618C55F0 7D8903A6
4E800421 7FA3EB78
38800001 38A00000
3D808000 618C55F0
7D8903A6 4E800421
887D0000 2C030001
4082FEF0 7F83E378
3D80803A 618C5CC4
7D8903A6 4E800421
3D808002 618C4F6C
7D8903A6 4E800421
8062F240 2C030000
40820018 38600001
3D808002 618C4030
7D8903A6 4E800421
3D80801A 618C4B60
7D8903A6 4E800421
48000068 4E800021
C33E0000 00000000
00000000 3F800000
3F19999A 43B70000
43AF0000 432A0000
00000000 4E800021
57616974 696E6720
666F7220 67616D65
25730000 4E800021
00000000 2E000000
2E2E0000 2E2E2E00
4E800021 736C6970
70692E67 67000000
BA810008 800100B4
382100B0 7C0803A6
4E800020 3D80801A
618C6368 7D8903A6
4E800420 807F0000
60000000 00000000
041B16A8 801B09C0 #Playback/Core/Scene/Change Debug Result Screen MinorType to Debug Menu/ScenePrep_DebugResult = ScenePrep_DebugMenu.asm
043DDA9C 07000000 #Playback/Core/Scene/Change Debug Result Screen MinorType to Debug Menu/Swap MinorType.asm
C238D224 00000013 #Playback/Core/Sounds/AssignSoundInstanceId.asm
900DC0E8 7C0802A6
90010004 9421FF50
BE810008 83EDB64C
3BDF001C 8B9E0000
3C608048 80639D60
809F056B 7C032000
41810028 3C608048
80639D60 809F056B
7C632050 38630001
8B9E0000 7F83E051
40800008 3B9C0007
1C7C00C2 38DE0001
7CC61A14 88660000
3863FFFF 1C630006
38A60001 7CA51A14
807D000C 90650002
BA810008 800100B4
382100B0 7C0803A6
60000000 00000000
C21A5014 00000030 #Playback/Core/Sounds/HandleFrameSoundLog.asm
41A20014 3D80801A
618C5024 7D8903A6
4E800420 7C0802A6
90010004 9421FF50
BE810008 3D808034
618C7364 7D8903A6
4E800421 7C7D1B78
83EDB64C 3BDF001C
8B9E0000 3F008048
83189D60 3B18FFFF
82FF056B 7C18B800
4181009C 7C78B850
38630001 8B9E0000
7F83E051 40800008
3B9C0007 387E0001
1C9C00C2 7F432214
3B200000 48000060
38DA0000 38E00000
48000028 1C790006
7C651A14 A0630001
1C870006 7C862214
A0840001 7C032000
41820030 38E70001
88660000 2C070003
4180FFD4 1C790006
7C651A14 80630003
3D808002 618C36B8
7D8903A6 4E800421
3B390001 38BA0061
88650000 7C191800
4180FF98 387E0001
1C9C00C2 7F432214
387A0061 389A0000
38A00061 3D808000
618C31F4 7D8903A6
4E800421 387A0000
38800061 3D808000
618CC160 7D8903A6
4E800421 7C18B800
4081001C 931F056B
3B9C0001 2C1C0007
41800008 3B9CFFF9
9B9E0000 7FA3EB78
3D808034 618C738C
7D8903A6 4E800421
BA810008 800100B4
382100B0 7C0803A6
60000000 00000000
C2088224 0000001A #Playback/Core/Sounds/NoDestroyVoice.asm
7C0802A6 90010004
9421FF50 BE810008
83EDB64C 3BBF001C
57DE043E 8B9D0000
3C608048 80639D60
809F056B 7C032000
41810088 3C608048
80639D60 809F056B
7C632050 38630001
8B9D0000 7F83E051
40800008 3B9C0007
1C7C00C2 38DD0062
7CC61A14 39000000
48000020 1C680006
38A60001 7CA51A14
A0650000 7C1E1800
41820018 39080001
88660000 7C081800
4180FFDC 48000024
BA810008 800100B4
382100B0 7C0803A6
3D808008 618C8244
7D8903A6 4E800420
BA810008 800100B4
382100B0 7C0803A6
387F0000 00000000
C20882B0 0000001A #Playback/Core/Sounds/NoDestroyVoice2.asm
7C0802A6 90010004
9421FF50 BE810008
83EDB64C 3BBF001C
57DE043E 8B9D0000
3C608048 80639D60
809F056B 7C032000
41810088 3C608048
80639D60 809F056B
7C632050 38630001
8B9D0000 7F83E051
40800008 3B9C0007
1C7C00C2 38DD0062
7CC61A14 39000000
48000020 1C680006
38A60001 7CA51A14
A0650000 7C1E1800
41820018 39080001
88660000 7C081800
4180FFDC 48000024
BA810008 800100B4
382100B0 7C0803A6
3D808008 618C82D0
7D8903A6 4E800420
BA810008 800100B4
382100B0 7C0803A6
387F0000 00000000
C238D0B0 00000025 #Playback/Core/Sounds/PreventDuplicateSounds.asm
7C0802A6 90010004
9421FF50 BE810008
83EDB64C 3BDF001C
3BA00000 3B400000
56FB043E 8B9E0000
3C608048 80639D60
809F056B 7C032000
41810070 3C608048
80639D60 809F056B
7C632050 38630001
8B9E0000 7F83E051
40800008 3B9C0007
1C7C00C2 38DE0062
7CC61A14 39000000
48000020 1C680006
38A60001 7CA51A14
A0650000 7C1B1800
41820018 39080001
88660000 7C081800
4180FFDC 4800000C
83450002 3BA00001
1C7C00C2 38DE0001
7CC61A14 88660000
2C030010 40800024
1C630006 38A60001
7CA51A14 B3650000
93450002 88660000
38630001 98660000
2C1D0000 41820028
7F43D378 BA810008
800100B4 382100B0
7C0803A6 3D808038
618CD2A0 7D8903A6
4E800420 BA810008
800100B4 382100B0
7C0803A6 2C1A0000
60000000 00000000
C20055F0 0000002C #Common/EXITransferBuffer.asm
7C0802A6 90010004
9421FF50 BE810008
7C7E1B78 7C9D2378
7CBF2B78 3D808034
618C7364 7D8903A6
4E800421 7C7C1B78
7FC3F378 7C9EEA14
2C1F0000 4182001C
7C0018AC 38630020
7C032000 4180FFF4
7C0004AC 4C00012C
38600001 38800000
3D808034 618C64C0
7D8903A6 4E800421
38600001 3D808034
618C6D80 7D8903A6
4E800421 38600001
38800000 38A00005
3D808034 618C6688
7D8903A6 4E800421
38600001 7FC4F378
7FA5EB78 7FE6FB78
38E00000 3D808034
618C5E60 7D8903A6
4E800421 38600001
3D808034 618C5F4C
7D8903A6 4E800421
38600001 3D808034
618C67B4 7D8903A6
4E800421 38600001
3D808034 618C6E74
7D8903A6 4E800421
38600001 3D808034
618C65CC 7D8903A6
4E800421 2C1F0000
4082001C 7C001BAC
38630020 7C032000
4180FFEC 7C0004AC
4C00012C 7F83E378
3D808034 618C738C
7D8903A6 4E800421
BA810008 800100B4
382100B0 7C0803A6
4E800020 00000000
C20055F8 0000000F #Common/GetIsFollower.asm
7C0802A6 90010004
9421FF50 BE810008
7C7E1B78 3BE00000
887E221F 5460EFFF
41820038 887E000C
3D808003 618C2330
7D8903A6 4E800421
3C80803B 6084CDE0
1C030003 7C640214
88030002 2C000000
40820008 3BE00001
7FE3FB78 BA810008
800100B4 382100B0
7C0803A6 4E800020
60000000 00000000
C216D294 00000006 #Common/IncrementFrameIndex.asm
987F0008 3C608048
80639D58 2C030000
40820010 3860FF85
906DB654 48000010
806DB654 38630001
906DB654 00000000
C21C154C 00000004 #Common/Initialize Stage Data/Init Stage Data.asm
38800204 3D808000
618CC160 7D8903A6
4E800421 281A0000
60000000 00000000
C2068EEC 00000006 #Common/Initialize Player Data/Init Player Data.asm
3BC30000 3C808045
60848FD0 80840020
3D808000 618CC160
7D8903A6 4E800421
7FC3F378 3C808046
60000000 00000000
C20055FC 00000022 #Common/Gecko/ProcessCodeList.asm
7C0802A6 90010004
9421FF50 BE810008
7C7D1B78 7C9E2378
3B800000 807D0000
5463463C 3B600008
3B200000 2C0300C0
41820044 2C0300C2
4182004C 2C030004
41820058 2C030006
41820058 2C030008
41820068 807D0000
5463213E 2C03000F
40820010 807D0004
2C030000 4182007C
4800004C 807D0004
1C630008 3B630008
4800003C 807D0004
1C630008 3B630008
3B200004 48000028
3B200004 48000020
807D0004 38630007
54630038 3B630008
833D0004 48000008
3B600010 3B9C0001
2C1E0000 4182001C
807D0000 5463463C
7FA4EB78 7F25CB78
7FC903A6 4E800421
7FBDDA14 4BFFFF38
3C608019 606310E8
7C63E850 BA810008
800100B4 382100B0
7C0803A6 4E800020
60000000 00000000
$Optional: Game Music OFF [UnclePunch]
*Keep checked if you want music OFF. Uncheck "Game Music ON".
04023FFC 38800000
$Optional: Widescreen 16:9 [Dan Salvato, mirrorbender, Achilles1515, UnclePunch]
*Set Aspect Ratio to "Force 16:9" in Graphics for 16:9 monitors -----------------
*Requires all players to have enabled for netplay.
043BB05C 3EB00000 #External/Widescreen/Fix Screen Flash.asm
C236A4A8 00000006 #External/Widescreen/Overwrite CObj Values.asm
C03F0034 4800001D
7C6802A6 C0430000
C0630004 EC2100B2
EC211824 48000010
4E800021 43A00000
435B0000 00000000
044DDB58 3E4CCCCD #External/Widescreen/Adjust Offscreen Scissor/Adjust Bubble Zoom.asm
04086B24 60000000 #External/Widescreen/Adjust Offscreen Scissor/Draw High Poly Models.asm
04030C7C 38000064 #External/Widescreen/Adjust Offscreen Scissor/Left Camera Bound.asm
04030C88 3800021C #External/Widescreen/Adjust Offscreen Scissor/Right Camera Bound.asm
044DDB30 3F666666 #External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Adjust Corner Value 1.asm
044DDB34 BF666666 #External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Adjust Corner Value 2.asm
044DDB2C C3660000 #External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Extend Negative Vertical Bound.asm
044DDB28 43660000 #External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Extend Positive Vertical Bound.asm
044DDB4C 3D916873 #External/Widescreen/Adjust Offscreen Scissor/Fix Bubble Positions/Widen Bubble Region.asm
C22FCFC4 00000004 #External/Widescreen/Nametag Fixes/Adjust Nametag Background X Scale.asm
48000011 7C6802A6
C0030000 4800000C
4E800021 40DC7AE1
60000000 00000000
044DDB84 3E89FEFA #External/Widescreen/Nametag Fixes/Adjust Nametag Text X Scale.asm
$Optional: Disable Screen Shake [Achilles1515]
*Disables all screen shaking
04030E44 4E800020 #External/Disable Screen Shake/Disable Screen Shake.asm
$Optional: Hide HUD [UnclePunch]
*Hides the timer and player percent HUD elements
0416E9A4 60000000 #External/Hide Timer and Player HUD/Hide Timer HUD.asm
0416BA80 48000014 #External/Hide Timer and Player HUD/Hide Percents/Skip Percent Anim During Stock Steal.asm
0416E9B0 60000000 #External/Hide Timer and Player HUD/Hide Percents/Skip Player HUD Creation.asm
$Optional: Hide Waiting For Game [Nikki, UnclePunch]
*Hides the waiting for game text and slippi.gg text and disables the SFX played before a replay starts
*With this enabled, there will be no indication between matches that Melee is still running
044DEC20 00000001 #Playback/Hide Waiting For Game/Hide Waiting For Game.asm
$Optional: Enable Develop Mode [UnclePunch]
*Turns develop (debug) mode on. Allows access to frame advance, hit/hurtbox display, and alternate camera angles
0415FDBC 480000AC #External/Enable Develop Mode/Enable Develop Mode.asm
04089250 48000008 #External/Enable Develop Mode/Enable Stale Moves.asm

View file

@ -261,6 +261,7 @@ void SConfig::SaveSlippiSettings(IniFile& ini)
slippi->Set("SaveReplays", m_slippiSaveReplays);
slippi->Set("ReplayMonthFolders", m_slippiReplayMonthFolders);
slippi->Set("ReplayDir", m_strSlippiReplayDir);
slippi->Set("PlaybackControls", m_slippiEnableSeek);
}
void SConfig::SaveMovieSettings(IniFile& ini)
@ -549,6 +550,7 @@ void SConfig::LoadSlippiSettings(IniFile& ini)
{
IniFile::Section* slippi = ini.GetOrCreateSection("Slippi");
slippi->Get("PlaybackControls", &m_slippiEnableSeek, true);
slippi->Get("OnlineDelay", &m_slippiOnlineDelay, 2);
slippi->Get("SaveReplays", &m_slippiSaveReplays, true);
slippi->Get("ReplayMonthFolders", &m_slippiReplayMonthFolders, false);

View file

@ -149,6 +149,7 @@ struct SConfig
// Slippi
std::string m_strSlippiInput;
int m_slippiOnlineDelay = 2;
bool m_slippiEnableSeek = true;
bool m_slippiSaveReplays = true;
bool m_slippiReplayMonthFolders = false;
std::string m_strSlippiReplayDir;

View file

@ -11,6 +11,7 @@
#include <fmt/format.h>
#include "Core/ConfigManager.h"
#include "Common/Common.h"
#include "Common/CommonTypes.h"
#include "Common/FileUtil.h"
@ -498,27 +499,31 @@ void HotkeyManager::LoadDefaults(const ControllerInterface& ciface)
set_key_expression(HK_UNDO_SAVE_STATE, SHIFT + " & `F12`");
// Slippi Playback
// #ifdef PLAYBACK
#ifdef IS_PLAYBACK
if (SConfig::GetInstance().m_slippiEnableSeek) {
#ifdef _WIN32
set_key_expression(HK_SLIPPI_JUMP_BACK, SHIFT + " & `LEFT`");
set_key_expression(HK_SLIPPI_STEP_BACK, NON + " & `LEFT`");
set_key_expression(HK_FRAME_ADVANCE, NON + " & `PERIOD`");
set_key_expression(HK_PLAY_PAUSE, NON + " & `SPACE`");
set_key_expression(HK_SLIPPI_STEP_FORWARD, NON + " & `RIGHT`");
set_key_expression(HK_SLIPPI_JUMP_FORWARD, SHIFT + " & `RIGHT`");
set_key_expression(HK_SLIPPI_JUMP_BACK, SHIFT + " & `LEFT`");
set_key_expression(HK_SLIPPI_STEP_BACK, NON + " & `LEFT`");
set_key_expression(HK_FRAME_ADVANCE, NON + " & `PERIOD`");
set_key_expression(HK_PLAY_PAUSE, NON + " & `SPACE`");
set_key_expression(HK_SLIPPI_STEP_FORWARD, NON + " & `RIGHT`");
set_key_expression(HK_SLIPPI_JUMP_FORWARD, SHIFT + " & `RIGHT`");
#elif __APPLE__
set_key_expression(HK_SLIPPI_JUMP_BACK, SHIFT + " & `Left Arrow`");
set_key_expression(HK_SLIPPI_JUMP_BACK, NON + " & `Left Arrow`");
set_key_expression(HK_FRAME_ADVANCE, NON + " & `.`");
set_key_expression(HK_PLAY_PAUSE, NON + "& `Space`");
set_key_expression(HK_SLIPPI_STEP_FORWARD, NON + " & `Right Arrow`");
set_key_expression(HK_SLIPPI_JUMP_FORWARD, SHIFT + " & `Right Arrow`");
set_key_expression(HK_SLIPPI_JUMP_BACK, SHIFT + " & `Left Arrow`");
set_key_expression(HK_SLIPPI_JUMP_BACK, NON + " & `Left Arrow`");
set_key_expression(HK_FRAME_ADVANCE, NON + " & `.`");
set_key_expression(HK_PLAY_PAUSE, NON + "& `Space`");
set_key_expression(HK_SLIPPI_STEP_FORWARD, NON + " & `Right Arrow`");
set_key_expression(HK_SLIPPI_JUMP_FORWARD, SHIFT + " & `Right Arrow`");
#else
set_key_expression(HK_SLIPPI_JUMP_BACK, SHIFT + " & `Left`");
set_key_expression(HK_SLIPPI_JUMP_BACK, NON + "Left");
set_key_expression(HK_FRAME_ADVANCE, NON + " & `period`");
set_key_expression(HK_PLAY_PAUSE, NON + "& `space`");
set_key_expression(HK_SLIPPI_STEP_FORWARD, NON + " & `Right`");
set_key_expression(HK_SLIPPI_JUMP_FORWARD, SHIFT + " & `Right`");
set_key_expression(HK_SLIPPI_JUMP_BACK, SHIFT + " & `Left`");
set_key_expression(HK_SLIPPI_JUMP_BACK, NON + "Left");
set_key_expression(HK_FRAME_ADVANCE, NON + " & `period`");
set_key_expression(HK_PLAY_PAUSE, NON + "& `space`");
set_key_expression(HK_SLIPPI_STEP_FORWARD, NON + " & `Right`");
set_key_expression(HK_SLIPPI_JUMP_FORWARD, SHIFT + " & `Right`");
#endif
}
#endif
}

View file

@ -162,7 +162,7 @@ void SlippiPlaybackStatus::SavestateThread()
processInitialState();
inSlippiPlayback = true;
}
else if (!hasStateBeenProcessed && !isStartFrame)
else if (SConfig::GetInstance().m_slippiEnableSeek && !hasStateBeenProcessed && !isStartFrame)
{
INFO_LOG(SLIPPI, "saving diff at frame: %d", fixedFrameNumber);
State::SaveToBuffer(cState);
@ -188,7 +188,7 @@ void SlippiPlaybackStatus::SeekToFrame()
std::unique_lock<std::mutex> ffwLock(ffwMtx);
auto replayCommSettings = g_replayComm->getSettings();
if (replayCommSettings.mode == "queue")
clearWatchSettingsStartEnd();
updateWatchSettingsStartEnd();
auto prevState = Core::GetState();
if (prevState != Core::State::Paused)
@ -208,12 +208,27 @@ void SlippiPlaybackStatus::SeekToFrame()
// If this diff has been processed, load it
if (futureDiffs.count(closestStateFrame) > 0)
{
std::string stateString;
decoder.Decode((char*)iState.data(), iState.size(), futureDiffs[closestStateFrame].get(),
&stateString);
std::vector<u8> stateToLoad(stateString.begin(), stateString.end());
State::LoadFromBuffer(stateToLoad);
};
loadState(closestStateFrame);
}
else if (targetFrameNum < currentPlaybackFrame)
{
s32 closestActualStateFrame = closestStateFrame - FRAME_INTERVAL;
while (closestActualStateFrame > Slippi::PLAYBACK_FIRST_SAVE &&
futureDiffs.count(closestActualStateFrame) == 0)
closestActualStateFrame -= FRAME_INTERVAL;
loadState(closestActualStateFrame);
}
else if (targetFrameNum > currentPlaybackFrame)
{
s32 closestActualStateFrame = closestStateFrame - FRAME_INTERVAL;
while (closestActualStateFrame > currentPlaybackFrame &&
futureDiffs.count(closestActualStateFrame) == 0)
closestActualStateFrame -= FRAME_INTERVAL;
// only load a savestate if we find one past our current frame since we are seeking forwards
if (closestActualStateFrame > currentPlaybackFrame)
loadState(closestActualStateFrame);
}
}
}
@ -239,7 +254,20 @@ void SlippiPlaybackStatus::SeekToFrame()
}
}
void SlippiPlaybackStatus::clearWatchSettingsStartEnd()
void SlippiPlaybackStatus::loadState(s32 closestStateFrame)
{
if (closestStateFrame == Slippi::PLAYBACK_FIRST_SAVE)
State::LoadFromBuffer(iState);
else
{
std::string stateString;
decoder.Decode((char*)iState.data(), iState.size(), futureDiffs[closestStateFrame].get(), &stateString);
std::vector<u8> stateToLoad(stateString.begin(), stateString.end());
State::LoadFromBuffer(stateToLoad);
}
}
void SlippiPlaybackStatus::updateWatchSettingsStartEnd()
{
int startFrame = g_replayComm->current.startFrame;
int endFrame = g_replayComm->current.endFrame;

View file

@ -36,8 +36,9 @@ public:
private:
void SavestateThread(void);
void loadState(s32 closestStateFrame);
void processInitialState();
void clearWatchSettingsStartEnd();
void updateWatchSettingsStartEnd();
std::unordered_map<int32_t, std::shared_future<std::string>>
futureDiffs; // State diffs keyed by frameIndex, processed async

View file

@ -38,6 +38,8 @@ void SlippiPane::CreateLayout()
auto* layout = new QVBoxLayout();
setLayout(layout);
#ifndef IS_PLAYBACK
// Replay Settings
auto* replay_settings = new QGroupBox(tr("Replay Settings"));
auto* replay_settings_layout = new QVBoxLayout();
replay_settings->setLayout(replay_settings_layout);
@ -75,6 +77,7 @@ void SlippiPane::CreateLayout()
replay_folder_layout->addWidget(replay_folder_open, 0, 2);
replay_settings_layout->addLayout(replay_folder_layout);
// Online Settings
auto* online_settings = new QGroupBox(tr("Online Settings"));
auto* online_settings_layout = new QFormLayout();
online_settings->setLayout(online_settings_layout);
@ -90,4 +93,26 @@ void SlippiPane::CreateLayout()
delay_spin->setValue(SConfig::GetInstance().m_slippiOnlineDelay);
connect(delay_spin, qOverload<int>(&QSpinBox::valueChanged), this,
[](int delay) { SConfig::GetInstance().m_slippiOnlineDelay = delay; });
#endif
#ifdef IS_PLAYBACK
//Playback Settings
auto* playback_settings = new QGroupBox(tr("Playback Settings"));
auto* playback_settings_layout = new QVBoxLayout();
playback_settings->setLayout(playback_settings_layout);
layout->addWidget(playback_settings);
auto* enable_playback_seek_checkbox = new QCheckBox(tr("Enable Seekbar"));
char seekbarTooltip[] = "<html><head/><body><p>Enables video player style controls while watching Slippi replays. Uses more cpu resources and can be stuttery. " \
"Space: Pause/Play " \
"Left/Right: Jump 5 seconds back/forward" \
"Shift + Left/Right: Jump 20 seconds back/forward" \
"Period (while paused): Advance one frame";
enable_playback_seek_checkbox->setToolTip(tr(seekbarTooltip));
playback_settings_layout->addWidget(enable_playback_seek_checkbox);
enable_playback_seek_checkbox->setChecked(SConfig::GetInstance().m_slippiEnableSeek);
connect(enable_playback_seek_checkbox, &QCheckBox::toggled, this,
[](bool checked) { SConfig::GetInstance().m_slippiEnableSeek = checked; });
}
#endif

View file

@ -9,24 +9,29 @@
#include <fmt/format.h>
#include <imgui.h>
#include "Common/CommonTypes.h"
#include "Common/Timer.h"
#include "Core/ConfigManager.h"
#include "Core/Slippi/SlippiPlayback.h"
#include "VideoCommon/OnScreenDisplay.h"
#ifdef IS_PLAYBACK
#ifndef IMGUI_DEFINE_MATH_OPERATORS
#define IMGUI_DEFINE_MATH_OPERATORS
#endif
#include <imgui_internal.h>
#include "Common/CommonTypes.h"
#include "Common/Logging/Log.h"
#include "Common/Timer.h"
#include "Core/ConfigManager.h"
#include "Core/Core.h"
#include "Core/Host.h"
#include "Core/Slippi/SlippiPlayback.h"
#include "VideoCommon/OnScreenDisplay.h"
#include "Common/Logging/Log.h"
#include "VideoCommon/IconsFontAwesome4.h"
extern std::unique_ptr<SlippiPlaybackStatus> g_playbackStatus;
#endif
namespace OSD
{
@ -48,21 +53,6 @@ struct Message
static std::multimap<MessageType, Message> s_messages;
static std::mutex s_messages_mutex;
static s32 frame = 0;
static std::string GetTimeForFrame(s32 currFrame) {
int currSeconds = int((currFrame - Slippi::GAME_FIRST_FRAME) / 60);
int currMinutes = (int)(currSeconds / 60);
int currRemainder = (int)(currSeconds % 60);
// Position string (i.e. MM:SS)
char currTime[6];
sprintf(currTime, "%02d:%02d", currMinutes, currRemainder);
return std::string(currTime);
}
u32 idle_tick = Common::Timer::GetTimeMs();
ImVec2 prev_mouse(0,0);
static ImVec4 RGBAToImVec4(const u32 rgba)
{
return ImVec4(static_cast<float>((rgba >> 16) & 0xFF) / 255.0f,
@ -154,6 +144,22 @@ void ClearMessages()
s_messages.clear();
}
#ifdef IS_PLAYBACK
static s32 frame = 0;
static std::string GetTimeForFrame(s32 currFrame) {
int currSeconds = int((currFrame - Slippi::GAME_FIRST_FRAME) / 60);
int currMinutes = (int)(currSeconds / 60);
int currRemainder = (int)(currSeconds % 60);
// Position string (i.e. MM:SS)
char currTime[6];
sprintf(currTime, "%02d:%02d", currMinutes, currRemainder);
return std::string(currTime);
}
u32 idle_tick = Common::Timer::GetTimeMs();
ImVec2 prev_mouse(0, 0);
bool ButtonCustom(const char* label, const ImVec2& size_arg, ImGuiButtonFlags flags = 0)
{
ImGuiWindow* window = ImGui::GetCurrentWindow();
@ -470,4 +476,5 @@ void DrawSlippiPlaybackControls()
}
ImGui::End();
}
#endif
} // namespace OSD

View file

@ -46,5 +46,7 @@ void DrawMessages();
void ClearMessages();
// Draw playback controls when playing Slippi replays
#ifdef IS_PLAYBACK
void DrawSlippiPlaybackControls();
#endif
} // namespace OSD

View file

@ -50,8 +50,7 @@
#include "Core/HW/VideoInterface.h"
#include "Core/Host.h"
#include "Core/Movie.h"
#include "Core/Slippi/SlippiReplayComm.h"
#include "Core/Slippi/SlippiPlayback.h"
#include "InputCommon/ControllerInterface/ControllerInterface.h"
@ -88,8 +87,13 @@
#include "VideoCommon/VideoConfig.h"
#include "VideoCommon/XFMemory.h"
#ifdef IS_PLAYBACK
#include "Core/Slippi/SlippiReplayComm.h"
#include "Core/Slippi/SlippiPlayback.h"
extern std::unique_ptr<SlippiPlaybackStatus> g_playbackStatus;
extern std::unique_ptr<SlippiReplayComm> g_replayComm;
#endif
std::unique_ptr<Renderer> g_renderer;
@ -1262,8 +1266,10 @@ void Renderer::Swap(u32 xfb_addr, u32 fb_width, u32 fb_stride, u32 fb_height, u6
{
auto lock = GetImGuiLock();
if (g_replayComm->getSettings().rollbackDisplayMethod == "off" && g_playbackStatus->inSlippiPlayback)
#ifdef IS_PLAYBACK
if (SConfig::GetInstance().m_slippiEnableSeek && g_replayComm->getSettings().rollbackDisplayMethod == "off" && g_playbackStatus->inSlippiPlayback)
OSD::DrawSlippiPlaybackControls();
#endif
DrawDebugText();
OSD::DrawMessages();