From cf4880627613a4e24b2f63542f5eabe7d2c6f364 Mon Sep 17 00:00:00 2001 From: Jeremy Lee Date: Sat, 30 Jan 2021 16:49:07 +0900 Subject: [PATCH 1/6] receive display names from dolphin --- Playback/Playback.s | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Playback/Playback.s b/Playback/Playback.s index 687a2a0c..90fe2708 100644 --- a/Playback/Playback.s +++ b/Playback/Playback.s @@ -127,16 +127,16 @@ lwz \reg, -0x62A0(\reg) .set PALBool_Length,0x1 .set PSPreloadBool,0x19E .set PSPreloadBool_Length,0x1 - .set PSPreloadBool,0x19E - .set PSPreloadBool_Length,0x1 .set FrozenPSBool,0x19F .set FrozenPSBool_Length,0x1 .set ShouldResyncBool,0x1A0 .set ShouldResyncBool_Length,0x1 - .set GeckoListSize,0x1A1 + .set DisplayNameData,0x1A1 + .set DisplayNameData_Length,0x7C + .set GeckoListSize,0x21D .set GeckoListSize_Length,0x4 - .set GameInfoLength, SuccessBool_Length + InfoRNGSeed_Length + MatchStruct_Length + UCFToggles_Length + NametagData_Length + PALBool_Length + PSPreloadBool_Length + FrozenPSBool_Length + ShouldResyncBool_Length + GeckoListSize_Length + .set GameInfoLength, SuccessBool_Length + InfoRNGSeed_Length + MatchStruct_Length + UCFToggles_Length + NametagData_Length + PALBool_Length + PSPreloadBool_Length + FrozenPSBool_Length + ShouldResyncBool_Length + DisplayNameData_Length + GeckoListSize_Length .if GameInfoLength > Buffer_Length .set EXIBufferLength, GameInfoLength From 11f191805150ecd6b5370f4c912b103b260de7c8 Mon Sep 17 00:00:00 2001 From: Jeremy Lee Date: Sat, 30 Jan 2021 16:50:06 +0900 Subject: [PATCH 2/6] copy InitInGame.asm to playback wholesale to produce helpful diff while modifying for adaptation --- Playback/Core/InitInGame.asm | 460 +++++++++++++++++++++++++++++++++++ 1 file changed, 460 insertions(+) create mode 100644 Playback/Core/InitInGame.asm diff --git a/Playback/Core/InitInGame.asm b/Playback/Core/InitInGame.asm new file mode 100644 index 00000000..56d25e62 --- /dev/null +++ b/Playback/Core/InitInGame.asm @@ -0,0 +1,460 @@ +################################################################################ +# Address: 0x8016e9b4 +################################################################################ + +.include "Common/Common.s" +.include "Online/Online.s" + +# Ensure that this is an online in-game +getMinorMajor r3 +cmpwi r3, SCENE_ONLINE_IN_GAME +bne EXIT # If not online in game + +b CODE_START + +.set STRING_BUF_LEN, 14 + +DATA_BLRL: +blrl +.set DOFST_TEXT_BASE_Z, 0 +.float 0 +.set DOFST_TEXT_BASE_CANVAS_SCALING, DOFST_TEXT_BASE_Z + 4 +.float 0.1 + +# delay values +.set DOFST_TEXT_X_POS, DOFST_TEXT_BASE_CANVAS_SCALING + 4 +.float 270 +.set DOFST_TEXT_Y_POS, DOFST_TEXT_X_POS + 4 +.float 207 +.set DOFST_TEXT_SIZE, DOFST_TEXT_Y_POS + 4 +.float 0.33 + +# BG values +.set DOFST_PLAYERBG_OPA, DOFST_TEXT_SIZE + 4 +.float 0.33 +.set DOFST_PLAYERBG_COLOR, DOFST_PLAYERBG_OPA + 4 +.byte 0,0,0,255 +.set DOFST_PLAYERBG_YSCALE, DOFST_PLAYERBG_COLOR + 4 +.float 0.62 +.set DOFST_PLAYERBG_XOFST, DOFST_PLAYERBG_YSCALE + 4 +.float 0.775 +.set DOFST_PLAYERBG_YOFST, DOFST_PLAYERBG_XOFST + 4 +.float -24.06 +# BG X scale per letter +.set DOFST_PLAYERBG_XSCALEMULT, DOFST_PLAYERBG_YOFST + 4 +.float 0.0146 + +.set DOFST_PLAYERTEXT_XPOS, DOFST_PLAYERBG_XSCALEMULT + 4 +.float 0.8 #higher values = right +.set DOFST_PLAYERTEXT_YPOS, DOFST_PLAYERTEXT_XPOS + 4 +.float 20.64 #higher values = down +.set DOFST_PLAYERTEXT_ZPOS, DOFST_PLAYERTEXT_YPOS + 4 +.float 0 +.set DOFST_PLAYERTEXT_CANVASSCALE, DOFST_PLAYERTEXT_ZPOS + 4 +.float 0.06 #0.0521 +.set DOFST_PLAYERTEXT_WIDTH, DOFST_PLAYERTEXT_CANVASSCALE + 4 +.float 150 +.set DOFST_PLAYERTEXT_SIZE, DOFST_PLAYERTEXT_WIDTH + 4 +.float 0.54 + +.set DOFST_FLOAT_ZERO, DOFST_PLAYERTEXT_SIZE + 4 +.float 0 + +# strings +.set DOFST_TEXT_DELAYSTRING, DOFST_FLOAT_ZERO + 4 +.string "Delay: %df" +.align 2 + +######################################### +COBJ_CB: +blrl +.set REG_GOBJ,31 + +backup + +mr REG_GOBJ, r3 + +/* +# Check if paused +li r3,1 +branchl r12,0x801a45e8 +cmpwi r3,2 +beq COBJ_CB_Exit +*/ +# Check if paused +lbz r0, -0x4934 (r13) +cmpwi r0,1 +beq COBJ_CB_Exit + +# Draw camera +mr r3, REG_GOBJ +branchl r12,0x803910d8 + +COBJ_CB_Exit: +restore +blr +######################################### + +CODE_START: +backup + +# CObj stuff +.set COBJ_GXPRI, 8 +.set TEXT_GXPRI, 80 +.set TEXT_GXLINK, 12 + +.set REG_Canvas,31 +.set REG_COBJ,30 +.set REG_GOBJ,29 + +# Get HUD CObjDesc +load r3, 0x804d6d5c +lwz r3, 0x0 (r3) +load r4, 0x803f94d0 +branchl r12,0x80380358 +# Create CObj +lwz r3,0x4(r3) +lwz r3,0x0(r3) +branchl r12,0x8036a590 +mr REG_COBJ,r3 +# Create GObj +li r3,19 +li r4,20 +li r5,0 +branchl r12,0x803901f0 +mr REG_GOBJ,r3 +# Add object +mr r3,REG_GOBJ +lbz r4,-0x3E55(r13) +mr r5,REG_COBJ +branchl r12,0x80390a70 +# Init camera +mr r3,REG_GOBJ +bl COBJ_CB +mflr r4 +li r5, COBJ_GXPRI +branchl r12,0x8039075c +# Store COBJs GXLinks +load r3, 1 << TEXT_GXLINK +stw r3, 0x24 (REG_GOBJ) + +# Create canvas +li r3,2 +mr r4,REG_GOBJ +li r5, 9 +li r6, 13 +li r7, 0 +li r8, TEXT_GXLINK +li r9, TEXT_GXPRI +li r10, COBJ_GXPRI +branchl r12, 0x803a611c +mr REG_Canvas, r3 + + +.set REG_ODB_ADDRESS, 30 +.set REG_TEXT_STRUCT, 29 +.set REG_DATA_ADDR, 28 +.set REG_STRING_BUF, 27 +.set REG_MSRB_ADDR,26 + +lwz REG_ODB_ADDRESS, OFST_R13_ODB_ADDR(r13) # data buffer address + +# Write HUD canvas to ODB +stw REG_Canvas, ODB_HUD_CANVAS(REG_ODB_ADDRESS) + +bl DATA_BLRL +mflr REG_DATA_ADDR + +# Get player names +li r3, 0 +branchl r12, FN_LoadMatchState +mr REG_MSRB_ADDR, r3 + +# Start prepping text struct +li r3, 2 +mr r4,REG_Canvas +branchl r12, Text_CreateStruct +mr REG_TEXT_STRUCT, r3 + +# Set text kerning to close +li r4, 0x1 +stb r4, 0x49(REG_TEXT_STRUCT) +# Set text to align right +li r4, 0x2 +stb r4, 0x4A(REG_TEXT_STRUCT) + +# Store Base Z Offset +lfs f1, DOFST_TEXT_BASE_Z(REG_DATA_ADDR) #Z offset +stfs f1, 0x8(REG_TEXT_STRUCT) + +# Scale Canvas Down +lfs f1, DOFST_TEXT_BASE_CANVAS_SCALING(REG_DATA_ADDR) +stfs f1, 0x24(REG_TEXT_STRUCT) +stfs f1, 0x28(REG_TEXT_STRUCT) + +# Initialize header +lfs f1, DOFST_TEXT_X_POS(REG_DATA_ADDR) +lfs f2, DOFST_TEXT_Y_POS(REG_DATA_ADDR) +mr r3, REG_TEXT_STRUCT +addi r4, REG_DATA_ADDR, DOFST_TEXT_DELAYSTRING +lbz r5, ODB_DELAY_FRAMES(REG_ODB_ADDRESS) +branchl r12, Text_InitializeSubtext + +# Set header text size +mr r3, REG_TEXT_STRUCT +li r4, 0 +# Scale text X based on Aspect Ratio +lfs f1, DOFST_TEXT_SIZE(REG_DATA_ADDR) +lfs f2, DOFST_TEXT_SIZE(REG_DATA_ADDR) +branchl r12, Text_UpdateSubtextSize + +########################## +## Display Player Names ## +########################## + +# Display all player names +.set REG_COUNT, 20 +.set REG_TAG_BUFFER, 21 +.set REG_TAG_SIZE, 22 +.set REG_TAG_ALLOC, 23 +.set REG_HUDPOS, 21 +.set REG_BG_JOBJ, 22 +.set REG_BG_GOBJ, 23 +li REG_COUNT, 0 +load REG_HUDPOS, 0x804a0ff0 +DISPLAY_NAME_LOOP: +#Check if player exists +mr r3, REG_COUNT +branchl r12, 0x8003241c +cmpwi r3, 3 +beq DISPLAY_NAME_INC_LOOP + +# Calculate X Position +#Get HUD Position +mr r3,REG_COUNT +branchl r12,0x802f3424 +# HUD X +lfs f1, 0x0(r3) +stfs f1, 0x70 (sp) + + +# Start prepping player text struct +li r3, 2 +mr r4, REG_Canvas +branchl r12, Text_CreateStruct +mr REG_TEXT_STRUCT, r3 + +li r4, 0x1 +stb r4, 0x48(REG_TEXT_STRUCT) # Fixed Width +stb r4, 0x4A(REG_TEXT_STRUCT) # Set text to align center +stb r4, 0x4C(REG_TEXT_STRUCT) # Unk? +stb r4, 0x49(REG_TEXT_STRUCT) # kerning? + +# Scale Canvas Down +lfs f1, DOFST_PLAYERTEXT_CANVASSCALE(REG_DATA_ADDR) +stfs f1, 0x24(REG_TEXT_STRUCT) +stfs f1, 0x28(REG_TEXT_STRUCT) + +# Set struct position +lfs f1, 0x70 (sp) +lfs f2, DOFST_PLAYERTEXT_XPOS (REG_DATA_ADDR) +fadds f1,f1,f2 +stfs f1, 0x0(REG_TEXT_STRUCT) # X pos +lfs f1, DOFST_PLAYERTEXT_YPOS (REG_DATA_ADDR) +stfs f1, 0x4(REG_TEXT_STRUCT) # Y pos +lfs f1, DOFST_PLAYERTEXT_ZPOS (REG_DATA_ADDR) +stfs f1, 0x8(REG_TEXT_STRUCT) # Z pos + +# Set max width for text +lfs f1, DOFST_PLAYERTEXT_WIDTH(REG_DATA_ADDR) +stfs f1, 0xC(REG_TEXT_STRUCT) # Write width +stfs f1, 0x10(REG_TEXT_STRUCT) # I think this is height but I don't think it does anything + +############################# +## Create Player Name Text ## +############################# +# Initialize header +crset 6 # Dunno if this does anything? +lfs f1, DOFST_FLOAT_ZERO(REG_DATA_ADDR) +lfs f2, DOFST_FLOAT_ZERO(REG_DATA_ADDR) +mr r3, REG_TEXT_STRUCT +addi r4, REG_MSRB_ADDR, MSRB_P1_NAME +mulli r5, REG_COUNT, 31 +add r4, r4, r5 +branchl r12, Text_InitializeSubtext + +# Set header text size +mr r3, REG_TEXT_STRUCT +li r4, 0 +# Scale text X based on Aspect Ratio +lfs f1, DOFST_PLAYERTEXT_SIZE(REG_DATA_ADDR) +lfs f2, DOFST_PLAYERTEXT_SIZE(REG_DATA_ADDR) +branchl r12, Text_UpdateSubtextSize + +############################ +## Create Text Background ## +############################ + +#Create gobj +li r3,14 +li r4,15 +li r5,0 +branchl r12,0x803901f0 +mr REG_BG_GOBJ,r3 +#Create Background +load r3,0x804a1ed0 +lwz r3,0x0(r3) +branchl r12,0x80370e44 +mr REG_BG_JOBJ,r3 +# Add as object +mr r3,REG_BG_GOBJ +lbz r4, -0x3E57 (r13) +mr r5,REG_BG_JOBJ +branchl r12,0x80390a70 +# Add GX Link +mr r3,REG_BG_GOBJ +load r4,0x80391070 +li r5, TEXT_GXLINK +li r6,0 +branchl r12,0x8039069c + +# Get HUD pos +mr r3,REG_COUNT +branchl r12,0x802f3424 +# Set bg position +lfs f1,0x0 (r3) +lfs f2, DOFST_PLAYERBG_XOFST (REG_DATA_ADDR) +fadds f1,f1,f2 +stfs f1,0x38 (REG_BG_JOBJ) +lfs f1, DOFST_PLAYERBG_YOFST (REG_DATA_ADDR) +stfs f1,0x3C (REG_BG_JOBJ) +# Adjust scale +lfs f1, DOFST_PLAYERBG_YSCALE (REG_DATA_ADDR) +stfs f1, 0x30 (REG_BG_JOBJ) +# Get JOBJ 1 +mr r3,REG_BG_JOBJ +addi r4,sp,0x80 +li r5,1 +li r6,-1 +branchl r12,0x80011e24 +# Z transform = 0 +lwz r3,0x80(sp) +li r4,0 +stw r4,0x40(r3) +# Remove unneccessary dobjs +lwz r3,0x80(sp) +lwz r3,0x18(r3) #first dobj +lwz r4,0x14(r3) +ori r4,r4,0x1 +stw r4,0x14(r3) +lwz r3,0x4(r3) #next dobj +lwz r4,0x14(r3) +ori r4,r4,0x1 +stw r4,0x14(r3) +# Adjust opacity of BG +lwz r3,0x4(r3) #next dobj +lwz r3,0x8(r3) #mobj +lwz r3,0xC(r3) #material +lfs f1, DOFST_PLAYERBG_OPA (REG_DATA_ADDR) +stfs f1, 0xC(r3) +# Adjust color of BG +lwz r4, DOFST_PLAYERBG_COLOR (REG_DATA_ADDR) +stw r4, 0x4(r3) + +# Get total width of characters used in tag +.set CHAR_WIDTH_MAX, 20 +.set TAG_WIDTH_MIN, 60 +.set TAG_WIDTH_MAX, 144 +.set TEXTHEADER_SIZE, 15 +.set REG_WIDTH, 25 +.set REG_CURR, 10 +.set REG_WIDTH_INTERNAL, 12 +.set REG_WIDTH_EXTERNAL, 11 + +li REG_WIDTH,0 +# Get subtext contents +lwz r3, 0x5C(REG_TEXT_STRUCT) +li r4, 0 +branchl r12, 0x803a6fec # Text_GetSubtext +addi REG_CURR, r3, TEXTHEADER_SIZE #skip past header +load REG_WIDTH_INTERNAL, 0x8040cb00 +lbz r3,0x4F(REG_TEXT_STRUCT) +mulli r3,r3,4 +load r4,0x804d1124 +lwzx r3, r3, r4 +lwz REG_WIDTH_EXTERNAL, 0x4 (r3) +DISPLAY_NAME_COUNT_LOOP: +lbz r3,0x0(REG_CURR) +# Check if null character +cmpwi r3,0x0B +beq DISPLAY_NAME_COUNT_NULL +# Check if internal character +cmpwi r3,0x20 +beq DISPLAY_NAME_COUNT_INTERNAL +# Check if external character +cmpwi r3,0x40 +beq DISPLAY_NAME_COUNT_EXTERNAL +# Check if end of text +lbz r3,0x0(REG_CURR) +cmpwi r3,0x0F +beq DISPLAY_NAME_COUNT_EXIT +b DISPLAY_NAME_COUNT_NULL + +DISPLAY_NAME_COUNT_INTERNAL: +lbz r3,0x1(REG_CURR) +mulli r3,r3,2 +lbzx r3,r3,REG_WIDTH_INTERNAL +li r4,CHAR_WIDTH_MAX +sub r3,r4,r3 +add REG_WIDTH,REG_WIDTH,r3 +addi REG_CURR,REG_CURR,2 +b DISPLAY_NAME_COUNT_LOOP +DISPLAY_NAME_COUNT_EXTERNAL: +lbz r3,0x1(REG_CURR) +mulli r3,r3,2 +lbzx r3,r3,REG_WIDTH_EXTERNAL +li r4,CHAR_WIDTH_MAX +sub r3,r4,r3 +add REG_WIDTH,REG_WIDTH,r3 +addi REG_CURR,REG_CURR,2 +b DISPLAY_NAME_COUNT_LOOP + +DISPLAY_NAME_COUNT_NULL: +addi REG_CURR,REG_CURR,1 +b DISPLAY_NAME_COUNT_LOOP +DISPLAY_NAME_COUNT_EXIT: + +# Check if tag is min width +cmpwi REG_WIDTH, TAG_WIDTH_MIN +bge 0x8 +li REG_WIDTH, TAG_WIDTH_MIN +cmpwi REG_WIDTH, TAG_WIDTH_MAX +ble 0x8 +li REG_WIDTH, TAG_WIDTH_MAX +# Cast to float +lis r0, 0x4330 +lfd f2, -0x6758 (rtoc) +xoris r3, REG_WIDTH,0x8000 +stw r0,0x80(sp) +stw r3,0x84(sp) +lfd f1,0x80(sp) +fsubs f1,f1,f2 #Convert To Float +# Multiply width by X to get background size +lfs f2, DOFST_PLAYERBG_XSCALEMULT (REG_DATA_ADDR) +fmuls f1,f1,f2 +stfs f1, 0x2C (REG_BG_JOBJ) + +DISPLAY_NAME_INC_LOOP: +addi REG_COUNT, REG_COUNT, 1 +cmpwi REG_COUNT, 6 +blt DISPLAY_NAME_LOOP + +# Free buffer +mr r3,REG_MSRB_ADDR +branchl r12,HSD_Free + +CODE_END: +restore + +EXIT: +lwz r0, 0x001C (sp) From e65412e4bdfa06b1740636eec5b945e43170dedb Mon Sep 17 00:00:00 2001 From: Jeremy Lee Date: Sun, 31 Jan 2021 00:29:54 +0900 Subject: [PATCH 3/6] adapt copied InitInGame.asm to playback and store player display names in PDB --- Output/Playback/GALE01r2.ini | 323 ++++++++++++++++++++++-------- Output/Playback/GALJ01r2.ini | 323 ++++++++++++++++++++++-------- Playback/Core/InitInGame.asm | 91 +-------- Playback/Core/RestoreGameInfo.asm | 6 + Playback/Playback.s | 4 +- playback.json | 3 +- 6 files changed, 498 insertions(+), 252 deletions(-) diff --git a/Output/Playback/GALE01r2.ini b/Output/Playback/GALE01r2.ini index d3f4179f..2d59b1c0 100644 --- a/Output/Playback/GALE01r2.ini +++ b/Output/Playback/GALE01r2.ini @@ -107,7 +107,7 @@ C216DED4 00000039 #Common/CostumeBoundCheck/main.asm 7C0803A6 8001001C 60000000 00000000 -$Required: Slippi Playback [Fizzi, UnclePunch, Achilles, tauKhan] +$Required: Slippi Playback [Fizzi, UnclePunch, Achilles, tauKhan, jmlee337] *Used to play back a .slp file *Will play replay configured in playback.txt C216E9E4 00000010 #Playback/Core/CleanDynamicGeckos.asm @@ -150,6 +150,157 @@ BE810008 806DB64C BA810008 800100B4 382100B0 7C0803A6 881F0008 00000000 +C216E9B4 00000096 #Playback/Core/InitInGame.asm +48000088 4E800021 +3EA8F5C3 000000FF +3F1EB852 3F466666 +C1C07AE1 3C6F34D7 +3F4CCCCD 41A51EB8 +00000000 3D75C28F +43160000 3F0A3D71 +00000000 4E800021 +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 880DB6CC +2C000001 41820018 +7FE3FB78 3D808039 +618C10D8 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +3C60804D 60636D5C +80630000 3C80803F +608494D0 3D808038 +618C0358 7D8903A6 +4E800421 80630004 +80630000 3D808036 +618CA590 7D8903A6 +4E800421 7C7E1B78 +38600013 38800014 +38A00000 3D808039 +618C01F0 7D8903A6 +4E800421 7C7D1B78 +7FA3EB78 888DC1AB +7FC5F378 3D808039 +618C0A70 7D8903A6 +4E800421 7FA3EB78 +4BFFFF25 7C8802A6 +38A00008 3D808039 +618C075C 7D8903A6 +4E800421 3C600000 +60631000 907D0024 +38600002 7FA4EB78 +38A00009 38C0000D +38E00000 3900000C +39200050 39400008 +3D80803A 618C611C +7D8903A6 4E800421 +7C7F1B78 4BFFFE91 +7F8802A6 834DB64C +3A800000 3EA0804A +62B50FF0 7E83A378 +3D808003 618C241C +7D8903A6 4E800421 +2C030003 418202E8 +7E83A378 3D80802F +618C3424 7D8903A6 +4E800421 C0230000 +D0210070 38600002 +7FE4FB78 3D80803A +618C6754 7D8903A6 +4E800421 7C7D1B78 +38800001 989D0048 +989D004A 989D004C +989D0049 C03C0024 +D03D0024 D03D0028 +C0210070 C05C0018 +EC21102A D03D0000 +C03C001C D03D0004 +C03C0020 D03D0008 +C03C0028 D03D000C +D03D0010 4CC63242 +C03C0030 C05C0030 +7FA3EB78 389A0570 +1CB4001F 7C842A14 +3D80803A 618C6B98 +7D8903A6 4E800421 +7FA3EB78 38800000 +C03C002C C05C002C +3D80803A 618C7548 +7D8903A6 4E800421 +3860000E 3880000F +38A00000 3D808039 +618C01F0 7D8903A6 +4E800421 7C771B78 +3C60804A 60631ED0 +80630000 3D808037 +618C0E44 7D8903A6 +4E800421 7C761B78 +7EE3BB78 888DC1A9 +7EC5B378 3D808039 +618C0A70 7D8903A6 +4E800421 7EE3BB78 +3C808039 60841070 +38A0000C 38C00000 +3D808039 618C069C +7D8903A6 4E800421 +7E83A378 3D80802F +618C3424 7D8903A6 +4E800421 C0230000 +C05C000C EC21102A +D0360038 C03C0010 +D036003C C03C0008 +D0360030 7EC3B378 +38810080 38A00001 +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610080 +38800000 90830040 +80610080 80630018 +80830014 60840001 +90830014 80630004 +80830014 60840001 +90830014 80630004 +80630008 8063000C +C03C0000 D023000C +809C0004 90830004 +3B200000 807D005C +38800000 3D80803A +618C6FEC 7D8903A6 +4E800421 3943000F +3D808040 618CCB00 +887D004F 1C630004 +3C80804D 60841124 +7C63202E 81630004 +886A0000 2C03000B +41820064 2C030020 +4182001C 2C030040 +41820034 886A0000 +2C03000F 41820050 +48000044 886A0001 +1C630002 7C6360AE +38800014 7C632050 +7F391A14 394A0002 +4BFFFFB8 886A0001 +1C630002 7C6358AE +38800014 7C632050 +7F391A14 394A0002 +4BFFFF98 394A0001 +4BFFFF90 2C19003C +40800008 3B20003C +2C190090 40810008 +3B200090 3C004330 +C84298A8 6F238000 +90010080 90610084 +C8210080 EC211028 +C05C0014 EC2100B2 +D036002C 3A940001 +2C140006 4180FCF8 +BA810008 800100B4 +382100B0 7C0803A6 +8001001C 00000000 C206B0DC 00000046 #Playback/Core/RestoreGameFrame.asm 7C0802A6 90010004 9421FF50 BE810008 @@ -221,16 +372,16 @@ D0230030 3D808002 800100B4 382100B0 7C0803A6 881F2219 60000000 00000000 -C216E74C 0000009A #Playback/Core/RestoreGameInfo.asm +C216E74C 0000009E #Playback/Core/RestoreGameInfo.asm 7C0802A6 90010004 9421FF50 BE810008 -38600570 3D808037 +386005EC 3D808037 618CF1E4 7D8903A6 4E800421 7C7C1B78 -938DB64C 38800570 +938DB64C 388005EC 3D808000 618CC160 7D8903A6 4E800421 -386001A5 3D808037 +38600221 3D808037 618CF1E4 7D8903A6 4E800421 7C7E1B78 93DC0000 38600040 @@ -244,7 +395,7 @@ C216E74C 0000009A #Playback/Core/RestoreGameInfo.asm 3880000D 38A00001 3D808000 618C55F0 7D8903A6 4E800421 -7FC3F378 388001A5 +7FC3F378 38800221 38A00000 3D808000 618C55F0 7D8903A6 4E800421 887E0000 @@ -289,93 +440,97 @@ C216E74C 0000009A #Playback/Core/RestoreGameInfo.asm 9862F234 887E019E 9862F238 887E019F 9862F23C 887E01A0 -987C056F 807E01A1 -3D808037 618CF1E4 +987C056F 387C0570 +389E01A1 38A0007C +3D808000 618C31F4 7D8903A6 4E800421 -7C7D1B78 93BC0008 -3860008A 987D0000 -7FA3EB78 38800001 -38A00001 3D808000 -618C55F0 7D8903A6 -4E800421 7FA3EB78 -809E01A1 38A00000 +807E021D 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7D1B78 +93BC0008 3860008A +987D0000 7FA3EB78 +38800001 38A00001 3D808000 618C55F0 7D8903A6 4E800421 -38800004 909C000C -7FA3EB78 48000055 -7C8802A6 3D808000 -618C55FC 7D8903A6 -4E800421 807C000C -3D808037 618CF1E4 +7FA3EB78 809E021D +38A00000 3D808000 +618C55F0 7D8903A6 +4E800421 38800004 +909C000C 7FA3EB78 +48000055 7C8802A6 +3D808000 618C55FC 7D8903A6 4E800421 -907C0010 907C0014 -7FA3EB78 48000041 -7C8802A6 3D808000 -618C55FC 7D8903A6 -4E800421 4800013C +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 -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 +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 -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 -809E01A1 3D808032 -618C8F50 7D8903A6 -4E800421 38600004 -38800007 38A00000 -3D808039 618C01F0 +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 -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 +4E800020 38600000 +809C0014 90640000 +7FA3EB78 809E021D +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 +60000000 00000000 C216D304 00000009 #Playback/Core/RestoreLRAStart.asm 806DB64C 80630000 88630000 2C030002 diff --git a/Output/Playback/GALJ01r2.ini b/Output/Playback/GALJ01r2.ini index d8a5894d..02b5d636 100644 --- a/Output/Playback/GALJ01r2.ini +++ b/Output/Playback/GALJ01r2.ini @@ -107,7 +107,7 @@ C216DED4 00000039 #Common/CostumeBoundCheck/main.asm 7C0803A6 8001001C 60000000 00000000 -$Required: Slippi Playback [Fizzi, UnclePunch, Achilles, tauKhan] +$Required: Slippi Playback [Fizzi, UnclePunch, Achilles, tauKhan, jmlee337] *Used to play back a .slp file *Will play replay configured in playback.txt C216E9E4 00000010 #Playback/Core/CleanDynamicGeckos.asm @@ -150,6 +150,157 @@ BE810008 806DB64C BA810008 800100B4 382100B0 7C0803A6 881F0008 00000000 +C216E9B4 00000096 #Playback/Core/InitInGame.asm +48000088 4E800021 +3EA8F5C3 000000FF +3F1EB852 3F466666 +C1C07AE1 3C6F34D7 +3F4CCCCD 41A51EB8 +00000000 3D75C28F +43160000 3F0A3D71 +00000000 4E800021 +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 880DB6CC +2C000001 41820018 +7FE3FB78 3D808039 +618C10D8 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +3C60804D 60636D5C +80630000 3C80803F +608494D0 3D808038 +618C0358 7D8903A6 +4E800421 80630004 +80630000 3D808036 +618CA590 7D8903A6 +4E800421 7C7E1B78 +38600013 38800014 +38A00000 3D808039 +618C01F0 7D8903A6 +4E800421 7C7D1B78 +7FA3EB78 888DC1AB +7FC5F378 3D808039 +618C0A70 7D8903A6 +4E800421 7FA3EB78 +4BFFFF25 7C8802A6 +38A00008 3D808039 +618C075C 7D8903A6 +4E800421 3C600000 +60631000 907D0024 +38600002 7FA4EB78 +38A00009 38C0000D +38E00000 3900000C +39200050 39400008 +3D80803A 618C611C +7D8903A6 4E800421 +7C7F1B78 4BFFFE91 +7F8802A6 834DB64C +3A800000 3EA0804A +62B50FF0 7E83A378 +3D808003 618C241C +7D8903A6 4E800421 +2C030003 418202E8 +7E83A378 3D80802F +618C3424 7D8903A6 +4E800421 C0230000 +D0210070 38600002 +7FE4FB78 3D80803A +618C6754 7D8903A6 +4E800421 7C7D1B78 +38800001 989D0048 +989D004A 989D004C +989D0049 C03C0024 +D03D0024 D03D0028 +C0210070 C05C0018 +EC21102A D03D0000 +C03C001C D03D0004 +C03C0020 D03D0008 +C03C0028 D03D000C +D03D0010 4CC63242 +C03C0030 C05C0030 +7FA3EB78 389A0570 +1CB4001F 7C842A14 +3D80803A 618C6B98 +7D8903A6 4E800421 +7FA3EB78 38800000 +C03C002C C05C002C +3D80803A 618C7548 +7D8903A6 4E800421 +3860000E 3880000F +38A00000 3D808039 +618C01F0 7D8903A6 +4E800421 7C771B78 +3C60804A 60631ED0 +80630000 3D808037 +618C0E44 7D8903A6 +4E800421 7C761B78 +7EE3BB78 888DC1A9 +7EC5B378 3D808039 +618C0A70 7D8903A6 +4E800421 7EE3BB78 +3C808039 60841070 +38A0000C 38C00000 +3D808039 618C069C +7D8903A6 4E800421 +7E83A378 3D80802F +618C3424 7D8903A6 +4E800421 C0230000 +C05C000C EC21102A +D0360038 C03C0010 +D036003C C03C0008 +D0360030 7EC3B378 +38810080 38A00001 +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610080 +38800000 90830040 +80610080 80630018 +80830014 60840001 +90830014 80630004 +80830014 60840001 +90830014 80630004 +80630008 8063000C +C03C0000 D023000C +809C0004 90830004 +3B200000 807D005C +38800000 3D80803A +618C6FEC 7D8903A6 +4E800421 3943000F +3D808040 618CCB00 +887D004F 1C630004 +3C80804D 60841124 +7C63202E 81630004 +886A0000 2C03000B +41820064 2C030020 +4182001C 2C030040 +41820034 886A0000 +2C03000F 41820050 +48000044 886A0001 +1C630002 7C6360AE +38800014 7C632050 +7F391A14 394A0002 +4BFFFFB8 886A0001 +1C630002 7C6358AE +38800014 7C632050 +7F391A14 394A0002 +4BFFFF98 394A0001 +4BFFFF90 2C19003C +40800008 3B20003C +2C190090 40810008 +3B200090 3C004330 +C84298A8 6F238000 +90010080 90610084 +C8210080 EC211028 +C05C0014 EC2100B2 +D036002C 3A940001 +2C140006 4180FCF8 +BA810008 800100B4 +382100B0 7C0803A6 +8001001C 00000000 C206B0DC 00000046 #Playback/Core/RestoreGameFrame.asm 7C0802A6 90010004 9421FF50 BE810008 @@ -221,16 +372,16 @@ D0230030 3D808002 800100B4 382100B0 7C0803A6 881F2219 60000000 00000000 -C216E74C 0000009A #Playback/Core/RestoreGameInfo.asm +C216E74C 0000009E #Playback/Core/RestoreGameInfo.asm 7C0802A6 90010004 9421FF50 BE810008 -38600570 3D808037 +386005EC 3D808037 618CF1E4 7D8903A6 4E800421 7C7C1B78 -938DB64C 38800570 +938DB64C 388005EC 3D808000 618CC160 7D8903A6 4E800421 -386001A5 3D808037 +38600221 3D808037 618CF1E4 7D8903A6 4E800421 7C7E1B78 93DC0000 38600040 @@ -244,7 +395,7 @@ C216E74C 0000009A #Playback/Core/RestoreGameInfo.asm 3880000D 38A00001 3D808000 618C55F0 7D8903A6 4E800421 -7FC3F378 388001A5 +7FC3F378 38800221 38A00000 3D808000 618C55F0 7D8903A6 4E800421 887E0000 @@ -289,93 +440,97 @@ C216E74C 0000009A #Playback/Core/RestoreGameInfo.asm 9862F234 887E019E 9862F238 887E019F 9862F23C 887E01A0 -987C056F 807E01A1 -3D808037 618CF1E4 +987C056F 387C0570 +389E01A1 38A0007C +3D808000 618C31F4 7D8903A6 4E800421 -7C7D1B78 93BC0008 -3860008A 987D0000 -7FA3EB78 38800001 -38A00001 3D808000 -618C55F0 7D8903A6 -4E800421 7FA3EB78 -809E01A1 38A00000 +807E021D 3D808037 +618CF1E4 7D8903A6 +4E800421 7C7D1B78 +93BC0008 3860008A +987D0000 7FA3EB78 +38800001 38A00001 3D808000 618C55F0 7D8903A6 4E800421 -38800004 909C000C -7FA3EB78 48000055 -7C8802A6 3D808000 -618C55FC 7D8903A6 -4E800421 807C000C -3D808037 618CF1E4 +7FA3EB78 809E021D +38A00000 3D808000 +618C55F0 7D8903A6 +4E800421 38800004 +909C000C 7FA3EB78 +48000055 7C8802A6 +3D808000 618C55FC 7D8903A6 4E800421 -907C0010 907C0014 -7FA3EB78 48000041 -7C8802A6 3D808000 -618C55FC 7D8903A6 -4E800421 4800013C +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 -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 +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 -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 -809E01A1 3D808032 -618C8F50 7D8903A6 -4E800421 38600004 -38800007 38A00000 -3D808039 618C01F0 +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 -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 +4E800020 38600000 +809C0014 90640000 +7FA3EB78 809E021D +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 +60000000 00000000 C216D304 00000009 #Playback/Core/RestoreLRAStart.asm 806DB64C 80630000 88630000 2C030002 diff --git a/Playback/Core/InitInGame.asm b/Playback/Core/InitInGame.asm index 56d25e62..6230bb50 100644 --- a/Playback/Core/InitInGame.asm +++ b/Playback/Core/InitInGame.asm @@ -3,34 +3,19 @@ ################################################################################ .include "Common/Common.s" -.include "Online/Online.s" +.include "Playback/Playback.s" -# Ensure that this is an online in-game -getMinorMajor r3 -cmpwi r3, SCENE_ONLINE_IN_GAME -bne EXIT # If not online in game +# Ensure doing playback +#getMinorMajor r3 +#cmpwi r3, SCENE_ONLINE_IN_GAME +#bne EXIT # If not doing playback b CODE_START -.set STRING_BUF_LEN, 14 - DATA_BLRL: blrl -.set DOFST_TEXT_BASE_Z, 0 -.float 0 -.set DOFST_TEXT_BASE_CANVAS_SCALING, DOFST_TEXT_BASE_Z + 4 -.float 0.1 - -# delay values -.set DOFST_TEXT_X_POS, DOFST_TEXT_BASE_CANVAS_SCALING + 4 -.float 270 -.set DOFST_TEXT_Y_POS, DOFST_TEXT_X_POS + 4 -.float 207 -.set DOFST_TEXT_SIZE, DOFST_TEXT_Y_POS + 4 -.float 0.33 - # BG values -.set DOFST_PLAYERBG_OPA, DOFST_TEXT_SIZE + 4 +.set DOFST_PLAYERBG_OPA, 0 .float 0.33 .set DOFST_PLAYERBG_COLOR, DOFST_PLAYERBG_OPA + 4 .byte 0,0,0,255 @@ -60,11 +45,6 @@ blrl .set DOFST_FLOAT_ZERO, DOFST_PLAYERTEXT_SIZE + 4 .float 0 -# strings -.set DOFST_TEXT_DELAYSTRING, DOFST_FLOAT_ZERO + 4 -.string "Delay: %df" -.align 2 - ######################################### COBJ_CB: blrl @@ -150,63 +130,16 @@ li r10, COBJ_GXPRI branchl r12, 0x803a611c mr REG_Canvas, r3 - -.set REG_ODB_ADDRESS, 30 .set REG_TEXT_STRUCT, 29 .set REG_DATA_ADDR, 28 .set REG_STRING_BUF, 27 -.set REG_MSRB_ADDR,26 - -lwz REG_ODB_ADDRESS, OFST_R13_ODB_ADDR(r13) # data buffer address - -# Write HUD canvas to ODB -stw REG_Canvas, ODB_HUD_CANVAS(REG_ODB_ADDRESS) +.set REG_PDB_ADDR, 26 bl DATA_BLRL mflr REG_DATA_ADDR -# Get player names -li r3, 0 -branchl r12, FN_LoadMatchState -mr REG_MSRB_ADDR, r3 - -# Start prepping text struct -li r3, 2 -mr r4,REG_Canvas -branchl r12, Text_CreateStruct -mr REG_TEXT_STRUCT, r3 - -# Set text kerning to close -li r4, 0x1 -stb r4, 0x49(REG_TEXT_STRUCT) -# Set text to align right -li r4, 0x2 -stb r4, 0x4A(REG_TEXT_STRUCT) - -# Store Base Z Offset -lfs f1, DOFST_TEXT_BASE_Z(REG_DATA_ADDR) #Z offset -stfs f1, 0x8(REG_TEXT_STRUCT) - -# Scale Canvas Down -lfs f1, DOFST_TEXT_BASE_CANVAS_SCALING(REG_DATA_ADDR) -stfs f1, 0x24(REG_TEXT_STRUCT) -stfs f1, 0x28(REG_TEXT_STRUCT) - -# Initialize header -lfs f1, DOFST_TEXT_X_POS(REG_DATA_ADDR) -lfs f2, DOFST_TEXT_Y_POS(REG_DATA_ADDR) -mr r3, REG_TEXT_STRUCT -addi r4, REG_DATA_ADDR, DOFST_TEXT_DELAYSTRING -lbz r5, ODB_DELAY_FRAMES(REG_ODB_ADDRESS) -branchl r12, Text_InitializeSubtext - -# Set header text size -mr r3, REG_TEXT_STRUCT -li r4, 0 -# Scale text X based on Aspect Ratio -lfs f1, DOFST_TEXT_SIZE(REG_DATA_ADDR) -lfs f2, DOFST_TEXT_SIZE(REG_DATA_ADDR) -branchl r12, Text_UpdateSubtextSize +# get PDB +lwz REG_PDB_ADDR, primaryDataBuffer(r13) ########################## ## Display Player Names ## @@ -278,7 +211,7 @@ crset 6 # Dunno if this does anything? lfs f1, DOFST_FLOAT_ZERO(REG_DATA_ADDR) lfs f2, DOFST_FLOAT_ZERO(REG_DATA_ADDR) mr r3, REG_TEXT_STRUCT -addi r4, REG_MSRB_ADDR, MSRB_P1_NAME +addi r4, REG_PDB_ADDR, PDB_DISPLAY_NAMES mulli r5, REG_COUNT, 31 add r4, r4, r5 branchl r12, Text_InitializeSubtext @@ -449,10 +382,6 @@ addi REG_COUNT, REG_COUNT, 1 cmpwi REG_COUNT, 6 blt DISPLAY_NAME_LOOP -# Free buffer -mr r3,REG_MSRB_ADDR -branchl r12,HSD_Free - CODE_END: restore diff --git a/Playback/Core/RestoreGameInfo.asm b/Playback/Core/RestoreGameInfo.asm index d1e8016b..035b5af5 100644 --- a/Playback/Core/RestoreGameInfo.asm +++ b/Playback/Core/RestoreGameInfo.asm @@ -197,6 +197,12 @@ RESTORE_GAME_INFO_NAMETAG_INC_LOOP: lbz r3,ShouldResyncBool(BufferPointer) stb r3,PDB_SHOULD_RESYNC(REG_DirectoryBuffer) +# Get player display names + addi r3, REG_DirectoryBuffer, PDB_DISPLAY_NAMES # destination + addi r4, BufferPointer, DisplayNameData # source + li r5, DisplayNameData_Length # length + branchl r12, memcpy + #--------------- Apply Dynamic Gecko Codes --------------------- # Step 1: Grab size of gecko code list and create a buffer to store them # TODO: Make sure that returned size includes the termination sequence (8 bytes) diff --git a/Playback/Playback.s b/Playback/Playback.s index 90fe2708..d53c309c 100644 --- a/Playback/Playback.s +++ b/Playback/Playback.s @@ -63,8 +63,8 @@ lwz \reg, -0x62A0(\reg) .set PDB_SFXDB_START, PDB_RESTORE_C2_BRANCH + 4 # SFXDB_SIZE .set PDB_LATEST_FRAME, PDB_SFXDB_START + SFXDB_SIZE # u32, must follow SFXDB as it is preserved .set PDB_SHOULD_RESYNC, PDB_LATEST_FRAME + 4 # bool - -.set PDB_SIZE, PDB_SHOULD_RESYNC + 1 +.set PDB_DISPLAY_NAMES, PDB_SHOULD_RESYNC + 1 # string (31)[4] +.set PDB_SIZE, PDB_DISPLAY_NAMES + 124 ################################################################################ # Buffer Offsets diff --git a/playback.json b/playback.json index 58d35f68..388e1924 100644 --- a/playback.json +++ b/playback.json @@ -88,7 +88,8 @@ "Fizzi", "UnclePunch", "Achilles", - "tauKhan" + "tauKhan", + "jmlee337" ], "description": [ "Used to play back a .slp file", From b6b3d868fe1a5733ddd01ed5bad2a04cc01b0b6a Mon Sep 17 00:00:00 2001 From: Jeremy Lee Date: Sun, 31 Jan 2021 01:14:30 +0900 Subject: [PATCH 4/6] when showing display names in playback, account for display name not being available --- Output/Playback/GALE01r2.ini | 14 +++++++++----- Output/Playback/GALJ01r2.ini | 14 +++++++++----- Playback/Core/InitInGame.asm | 18 +++++++++++------- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/Output/Playback/GALE01r2.ini b/Output/Playback/GALE01r2.ini index 2d59b1c0..d9d986c1 100644 --- a/Output/Playback/GALE01r2.ini +++ b/Output/Playback/GALE01r2.ini @@ -150,7 +150,7 @@ BE810008 806DB64C BA810008 800100B4 382100B0 7C0803A6 881F0008 00000000 -C216E9B4 00000096 #Playback/Core/InitInGame.asm +C216E9B4 0000009A #Playback/Core/InitInGame.asm 48000088 4E800021 3EA8F5C3 000000FF 3F1EB852 3F466666 @@ -203,7 +203,12 @@ C1C07AE1 3C6F34D7 62B50FF0 7E83A378 3D808003 618C241C 7D8903A6 4E800421 -2C030003 418202E8 +2C030003 41820308 +387A0570 1C94001F +7F032214 7F03C378 +3D808032 618C5B04 +7D8903A6 4E800421 +2C040000 418202E0 7E83A378 3D80802F 618C3424 7D8903A6 4E800421 C0230000 @@ -222,8 +227,7 @@ C03C0020 D03D0008 C03C0028 D03D000C D03D0010 4CC63242 C03C0030 C05C0030 -7FA3EB78 389A0570 -1CB4001F 7C842A14 +7FA3EB78 7F04C378 3D80803A 618C6B98 7D8903A6 4E800421 7FA3EB78 38800000 @@ -297,7 +301,7 @@ C84298A8 6F238000 C8210080 EC211028 C05C0014 EC2100B2 D036002C 3A940001 -2C140006 4180FCF8 +2C140006 4180FCD8 BA810008 800100B4 382100B0 7C0803A6 8001001C 00000000 diff --git a/Output/Playback/GALJ01r2.ini b/Output/Playback/GALJ01r2.ini index 02b5d636..0815d3e6 100644 --- a/Output/Playback/GALJ01r2.ini +++ b/Output/Playback/GALJ01r2.ini @@ -150,7 +150,7 @@ BE810008 806DB64C BA810008 800100B4 382100B0 7C0803A6 881F0008 00000000 -C216E9B4 00000096 #Playback/Core/InitInGame.asm +C216E9B4 0000009A #Playback/Core/InitInGame.asm 48000088 4E800021 3EA8F5C3 000000FF 3F1EB852 3F466666 @@ -203,7 +203,12 @@ C1C07AE1 3C6F34D7 62B50FF0 7E83A378 3D808003 618C241C 7D8903A6 4E800421 -2C030003 418202E8 +2C030003 41820308 +387A0570 1C94001F +7F032214 7F03C378 +3D808032 618C5B04 +7D8903A6 4E800421 +2C040000 418202E0 7E83A378 3D80802F 618C3424 7D8903A6 4E800421 C0230000 @@ -222,8 +227,7 @@ C03C0020 D03D0008 C03C0028 D03D000C D03D0010 4CC63242 C03C0030 C05C0030 -7FA3EB78 389A0570 -1CB4001F 7C842A14 +7FA3EB78 7F04C378 3D80803A 618C6B98 7D8903A6 4E800421 7FA3EB78 38800000 @@ -297,7 +301,7 @@ C84298A8 6F238000 C8210080 EC211028 C05C0014 EC2100B2 D036002C 3A940001 -2C140006 4180FCF8 +2C140006 4180FCD8 BA810008 800100B4 382100B0 7C0803A6 8001001C 00000000 diff --git a/Playback/Core/InitInGame.asm b/Playback/Core/InitInGame.asm index 6230bb50..cb80bbb1 100644 --- a/Playback/Core/InitInGame.asm +++ b/Playback/Core/InitInGame.asm @@ -147,12 +147,10 @@ lwz REG_PDB_ADDR, primaryDataBuffer(r13) # Display all player names .set REG_COUNT, 20 -.set REG_TAG_BUFFER, 21 -.set REG_TAG_SIZE, 22 -.set REG_TAG_ALLOC, 23 .set REG_HUDPOS, 21 .set REG_BG_JOBJ, 22 .set REG_BG_GOBJ, 23 +.set REG_DISPLAY_NAME, 24 li REG_COUNT, 0 load REG_HUDPOS, 0x804a0ff0 DISPLAY_NAME_LOOP: @@ -162,6 +160,15 @@ branchl r12, 0x8003241c cmpwi r3, 3 beq DISPLAY_NAME_INC_LOOP +#Check if player display name exists +addi r3, REG_PDB_ADDR, PDB_DISPLAY_NAMES +mulli r4, REG_COUNT, 31 +add REG_DISPLAY_NAME, r3, r4 +mr r3, REG_DISPLAY_NAME +branchl r12,strlen +cmpwi r4, 0 +beq DISPLAY_NAME_INC_LOOP + # Calculate X Position #Get HUD Position mr r3,REG_COUNT @@ -170,7 +177,6 @@ branchl r12,0x802f3424 lfs f1, 0x0(r3) stfs f1, 0x70 (sp) - # Start prepping player text struct li r3, 2 mr r4, REG_Canvas @@ -211,9 +217,7 @@ crset 6 # Dunno if this does anything? lfs f1, DOFST_FLOAT_ZERO(REG_DATA_ADDR) lfs f2, DOFST_FLOAT_ZERO(REG_DATA_ADDR) mr r3, REG_TEXT_STRUCT -addi r4, REG_PDB_ADDR, PDB_DISPLAY_NAMES -mulli r5, REG_COUNT, 31 -add r4, r4, r5 +mr r4, REG_DISPLAY_NAME branchl r12, Text_InitializeSubtext # Set header text size From cdb3b134e4023fdf7e25faf6aeb55a824dd69c5d Mon Sep 17 00:00:00 2001 From: Jeremy Lee Date: Sun, 31 Jan 2021 01:19:42 +0900 Subject: [PATCH 5/6] remove commented-out check from playback InitInGame.asm --- Playback/Core/InitInGame.asm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Playback/Core/InitInGame.asm b/Playback/Core/InitInGame.asm index cb80bbb1..26c4481b 100644 --- a/Playback/Core/InitInGame.asm +++ b/Playback/Core/InitInGame.asm @@ -5,11 +5,6 @@ .include "Common/Common.s" .include "Playback/Playback.s" -# Ensure doing playback -#getMinorMajor r3 -#cmpwi r3, SCENE_ONLINE_IN_GAME -#bne EXIT # If not doing playback - b CODE_START DATA_BLRL: From c8bd011767e9def2f9063a78db31e9d327636555 Mon Sep 17 00:00:00 2001 From: Jeremy Lee Date: Sun, 31 Jan 2021 02:05:08 +0900 Subject: [PATCH 6/6] make show display names optional in playback it will be enabled by default, however --- Output/Playback/GALE01r2.ini | 316 +++++++++--------- Output/Playback/GALJ01r2.ini | 316 +++++++++--------- .../InitInGame.asm | 0 playback.json | 25 +- 4 files changed, 343 insertions(+), 314 deletions(-) rename Playback/{Core => Show Player Names}/InitInGame.asm (100%) diff --git a/Output/Playback/GALE01r2.ini b/Output/Playback/GALE01r2.ini index d9d986c1..2efaddb3 100644 --- a/Output/Playback/GALE01r2.ini +++ b/Output/Playback/GALE01r2.ini @@ -10,6 +10,7 @@ FastDiscSpeed = True $Required: General Codes $Required: Slippi Playback $Recommended: Normal Lag Reduction +$Optional: Show Player Names [Gecko] $Required: General Codes [Achilles, Dan Salvato, UnclePunch, tauKhan, Ptomerty, Cilan, Datel, Most] @@ -107,7 +108,7 @@ C216DED4 00000039 #Common/CostumeBoundCheck/main.asm 7C0803A6 8001001C 60000000 00000000 -$Required: Slippi Playback [Fizzi, UnclePunch, Achilles, tauKhan, jmlee337] +$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 @@ -150,161 +151,6 @@ BE810008 806DB64C BA810008 800100B4 382100B0 7C0803A6 881F0008 00000000 -C216E9B4 0000009A #Playback/Core/InitInGame.asm -48000088 4E800021 -3EA8F5C3 000000FF -3F1EB852 3F466666 -C1C07AE1 3C6F34D7 -3F4CCCCD 41A51EB8 -00000000 3D75C28F -43160000 3F0A3D71 -00000000 4E800021 -7C0802A6 90010004 -9421FF50 BE810008 -7C7F1B78 880DB6CC -2C000001 41820018 -7FE3FB78 3D808039 -618C10D8 7D8903A6 -4E800421 BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -7C0802A6 90010004 -9421FF50 BE810008 -3C60804D 60636D5C -80630000 3C80803F -608494D0 3D808038 -618C0358 7D8903A6 -4E800421 80630004 -80630000 3D808036 -618CA590 7D8903A6 -4E800421 7C7E1B78 -38600013 38800014 -38A00000 3D808039 -618C01F0 7D8903A6 -4E800421 7C7D1B78 -7FA3EB78 888DC1AB -7FC5F378 3D808039 -618C0A70 7D8903A6 -4E800421 7FA3EB78 -4BFFFF25 7C8802A6 -38A00008 3D808039 -618C075C 7D8903A6 -4E800421 3C600000 -60631000 907D0024 -38600002 7FA4EB78 -38A00009 38C0000D -38E00000 3900000C -39200050 39400008 -3D80803A 618C611C -7D8903A6 4E800421 -7C7F1B78 4BFFFE91 -7F8802A6 834DB64C -3A800000 3EA0804A -62B50FF0 7E83A378 -3D808003 618C241C -7D8903A6 4E800421 -2C030003 41820308 -387A0570 1C94001F -7F032214 7F03C378 -3D808032 618C5B04 -7D8903A6 4E800421 -2C040000 418202E0 -7E83A378 3D80802F -618C3424 7D8903A6 -4E800421 C0230000 -D0210070 38600002 -7FE4FB78 3D80803A -618C6754 7D8903A6 -4E800421 7C7D1B78 -38800001 989D0048 -989D004A 989D004C -989D0049 C03C0024 -D03D0024 D03D0028 -C0210070 C05C0018 -EC21102A D03D0000 -C03C001C D03D0004 -C03C0020 D03D0008 -C03C0028 D03D000C -D03D0010 4CC63242 -C03C0030 C05C0030 -7FA3EB78 7F04C378 -3D80803A 618C6B98 -7D8903A6 4E800421 -7FA3EB78 38800000 -C03C002C C05C002C -3D80803A 618C7548 -7D8903A6 4E800421 -3860000E 3880000F -38A00000 3D808039 -618C01F0 7D8903A6 -4E800421 7C771B78 -3C60804A 60631ED0 -80630000 3D808037 -618C0E44 7D8903A6 -4E800421 7C761B78 -7EE3BB78 888DC1A9 -7EC5B378 3D808039 -618C0A70 7D8903A6 -4E800421 7EE3BB78 -3C808039 60841070 -38A0000C 38C00000 -3D808039 618C069C -7D8903A6 4E800421 -7E83A378 3D80802F -618C3424 7D8903A6 -4E800421 C0230000 -C05C000C EC21102A -D0360038 C03C0010 -D036003C C03C0008 -D0360030 7EC3B378 -38810080 38A00001 -38C0FFFF 3D808001 -618C1E24 7D8903A6 -4E800421 80610080 -38800000 90830040 -80610080 80630018 -80830014 60840001 -90830014 80630004 -80830014 60840001 -90830014 80630004 -80630008 8063000C -C03C0000 D023000C -809C0004 90830004 -3B200000 807D005C -38800000 3D80803A -618C6FEC 7D8903A6 -4E800421 3943000F -3D808040 618CCB00 -887D004F 1C630004 -3C80804D 60841124 -7C63202E 81630004 -886A0000 2C03000B -41820064 2C030020 -4182001C 2C030040 -41820034 886A0000 -2C03000F 41820050 -48000044 886A0001 -1C630002 7C6360AE -38800014 7C632050 -7F391A14 394A0002 -4BFFFFB8 886A0001 -1C630002 7C6358AE -38800014 7C632050 -7F391A14 394A0002 -4BFFFF98 394A0001 -4BFFFF90 2C19003C -40800008 3B20003C -2C190090 40810008 -3B200090 3C004330 -C84298A8 6F238000 -90010080 90610084 -C8210080 EC211028 -C05C0014 EC2100B2 -D036002C 3A940001 -2C140006 4180FCD8 -BA810008 800100B4 -382100B0 7C0803A6 -8001001C 00000000 C206B0DC 00000046 #Playback/Core/RestoreGameFrame.asm 7C0802A6 90010004 9421FF50 BE810008 @@ -1127,6 +973,164 @@ $Recommended: Normal Lag Reduction [Hannes Mann] 043761EC 4800001C 04376238 48000018 +$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 +48000088 4E800021 +3EA8F5C3 000000FF +3F1EB852 3F466666 +C1C07AE1 3C6F34D7 +3F4CCCCD 41A51EB8 +00000000 3D75C28F +43160000 3F0A3D71 +00000000 4E800021 +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 880DB6CC +2C000001 41820018 +7FE3FB78 3D808039 +618C10D8 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +3C60804D 60636D5C +80630000 3C80803F +608494D0 3D808038 +618C0358 7D8903A6 +4E800421 80630004 +80630000 3D808036 +618CA590 7D8903A6 +4E800421 7C7E1B78 +38600013 38800014 +38A00000 3D808039 +618C01F0 7D8903A6 +4E800421 7C7D1B78 +7FA3EB78 888DC1AB +7FC5F378 3D808039 +618C0A70 7D8903A6 +4E800421 7FA3EB78 +4BFFFF25 7C8802A6 +38A00008 3D808039 +618C075C 7D8903A6 +4E800421 3C600000 +60631000 907D0024 +38600002 7FA4EB78 +38A00009 38C0000D +38E00000 3900000C +39200050 39400008 +3D80803A 618C611C +7D8903A6 4E800421 +7C7F1B78 4BFFFE91 +7F8802A6 834DB64C +3A800000 3EA0804A +62B50FF0 7E83A378 +3D808003 618C241C +7D8903A6 4E800421 +2C030003 41820308 +387A0570 1C94001F +7F032214 7F03C378 +3D808032 618C5B04 +7D8903A6 4E800421 +2C040000 418202E0 +7E83A378 3D80802F +618C3424 7D8903A6 +4E800421 C0230000 +D0210070 38600002 +7FE4FB78 3D80803A +618C6754 7D8903A6 +4E800421 7C7D1B78 +38800001 989D0048 +989D004A 989D004C +989D0049 C03C0024 +D03D0024 D03D0028 +C0210070 C05C0018 +EC21102A D03D0000 +C03C001C D03D0004 +C03C0020 D03D0008 +C03C0028 D03D000C +D03D0010 4CC63242 +C03C0030 C05C0030 +7FA3EB78 7F04C378 +3D80803A 618C6B98 +7D8903A6 4E800421 +7FA3EB78 38800000 +C03C002C C05C002C +3D80803A 618C7548 +7D8903A6 4E800421 +3860000E 3880000F +38A00000 3D808039 +618C01F0 7D8903A6 +4E800421 7C771B78 +3C60804A 60631ED0 +80630000 3D808037 +618C0E44 7D8903A6 +4E800421 7C761B78 +7EE3BB78 888DC1A9 +7EC5B378 3D808039 +618C0A70 7D8903A6 +4E800421 7EE3BB78 +3C808039 60841070 +38A0000C 38C00000 +3D808039 618C069C +7D8903A6 4E800421 +7E83A378 3D80802F +618C3424 7D8903A6 +4E800421 C0230000 +C05C000C EC21102A +D0360038 C03C0010 +D036003C C03C0008 +D0360030 7EC3B378 +38810080 38A00001 +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610080 +38800000 90830040 +80610080 80630018 +80830014 60840001 +90830014 80630004 +80830014 60840001 +90830014 80630004 +80630008 8063000C +C03C0000 D023000C +809C0004 90830004 +3B200000 807D005C +38800000 3D80803A +618C6FEC 7D8903A6 +4E800421 3943000F +3D808040 618CCB00 +887D004F 1C630004 +3C80804D 60841124 +7C63202E 81630004 +886A0000 2C03000B +41820064 2C030020 +4182001C 2C030040 +41820034 886A0000 +2C03000F 41820050 +48000044 886A0001 +1C630002 7C6360AE +38800014 7C632050 +7F391A14 394A0002 +4BFFFFB8 886A0001 +1C630002 7C6358AE +38800014 7C632050 +7F391A14 394A0002 +4BFFFF98 394A0001 +4BFFFF90 2C19003C +40800008 3B20003C +2C190090 40810008 +3B200090 3C004330 +C84298A8 6F238000 +90010080 90610084 +C8210080 EC211028 +C05C0014 EC2100B2 +D036002C 3A940001 +2C140006 4180FCD8 +BA810008 800100B4 +382100B0 7C0803A6 +8001001C 00000000 + $Optional: Game Music OFF [UnclePunch] *Keep checked if you want music OFF. Uncheck "Game Music ON". 04023FFC 38800000 diff --git a/Output/Playback/GALJ01r2.ini b/Output/Playback/GALJ01r2.ini index 0815d3e6..863e558c 100644 --- a/Output/Playback/GALJ01r2.ini +++ b/Output/Playback/GALJ01r2.ini @@ -10,6 +10,7 @@ FastDiscSpeed = True $Required: General Codes $Required: Slippi Playback $Recommended: Normal Lag Reduction +$Optional: Show Player Names [Gecko] $Required: General Codes [Achilles, Dan Salvato, UnclePunch, tauKhan, Ptomerty, Cilan, Datel, Most] @@ -107,7 +108,7 @@ C216DED4 00000039 #Common/CostumeBoundCheck/main.asm 7C0803A6 8001001C 60000000 00000000 -$Required: Slippi Playback [Fizzi, UnclePunch, Achilles, tauKhan, jmlee337] +$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 @@ -150,161 +151,6 @@ BE810008 806DB64C BA810008 800100B4 382100B0 7C0803A6 881F0008 00000000 -C216E9B4 0000009A #Playback/Core/InitInGame.asm -48000088 4E800021 -3EA8F5C3 000000FF -3F1EB852 3F466666 -C1C07AE1 3C6F34D7 -3F4CCCCD 41A51EB8 -00000000 3D75C28F -43160000 3F0A3D71 -00000000 4E800021 -7C0802A6 90010004 -9421FF50 BE810008 -7C7F1B78 880DB6CC -2C000001 41820018 -7FE3FB78 3D808039 -618C10D8 7D8903A6 -4E800421 BA810008 -800100B4 382100B0 -7C0803A6 4E800020 -7C0802A6 90010004 -9421FF50 BE810008 -3C60804D 60636D5C -80630000 3C80803F -608494D0 3D808038 -618C0358 7D8903A6 -4E800421 80630004 -80630000 3D808036 -618CA590 7D8903A6 -4E800421 7C7E1B78 -38600013 38800014 -38A00000 3D808039 -618C01F0 7D8903A6 -4E800421 7C7D1B78 -7FA3EB78 888DC1AB -7FC5F378 3D808039 -618C0A70 7D8903A6 -4E800421 7FA3EB78 -4BFFFF25 7C8802A6 -38A00008 3D808039 -618C075C 7D8903A6 -4E800421 3C600000 -60631000 907D0024 -38600002 7FA4EB78 -38A00009 38C0000D -38E00000 3900000C -39200050 39400008 -3D80803A 618C611C -7D8903A6 4E800421 -7C7F1B78 4BFFFE91 -7F8802A6 834DB64C -3A800000 3EA0804A -62B50FF0 7E83A378 -3D808003 618C241C -7D8903A6 4E800421 -2C030003 41820308 -387A0570 1C94001F -7F032214 7F03C378 -3D808032 618C5B04 -7D8903A6 4E800421 -2C040000 418202E0 -7E83A378 3D80802F -618C3424 7D8903A6 -4E800421 C0230000 -D0210070 38600002 -7FE4FB78 3D80803A -618C6754 7D8903A6 -4E800421 7C7D1B78 -38800001 989D0048 -989D004A 989D004C -989D0049 C03C0024 -D03D0024 D03D0028 -C0210070 C05C0018 -EC21102A D03D0000 -C03C001C D03D0004 -C03C0020 D03D0008 -C03C0028 D03D000C -D03D0010 4CC63242 -C03C0030 C05C0030 -7FA3EB78 7F04C378 -3D80803A 618C6B98 -7D8903A6 4E800421 -7FA3EB78 38800000 -C03C002C C05C002C -3D80803A 618C7548 -7D8903A6 4E800421 -3860000E 3880000F -38A00000 3D808039 -618C01F0 7D8903A6 -4E800421 7C771B78 -3C60804A 60631ED0 -80630000 3D808037 -618C0E44 7D8903A6 -4E800421 7C761B78 -7EE3BB78 888DC1A9 -7EC5B378 3D808039 -618C0A70 7D8903A6 -4E800421 7EE3BB78 -3C808039 60841070 -38A0000C 38C00000 -3D808039 618C069C -7D8903A6 4E800421 -7E83A378 3D80802F -618C3424 7D8903A6 -4E800421 C0230000 -C05C000C EC21102A -D0360038 C03C0010 -D036003C C03C0008 -D0360030 7EC3B378 -38810080 38A00001 -38C0FFFF 3D808001 -618C1E24 7D8903A6 -4E800421 80610080 -38800000 90830040 -80610080 80630018 -80830014 60840001 -90830014 80630004 -80830014 60840001 -90830014 80630004 -80630008 8063000C -C03C0000 D023000C -809C0004 90830004 -3B200000 807D005C -38800000 3D80803A -618C6FEC 7D8903A6 -4E800421 3943000F -3D808040 618CCB00 -887D004F 1C630004 -3C80804D 60841124 -7C63202E 81630004 -886A0000 2C03000B -41820064 2C030020 -4182001C 2C030040 -41820034 886A0000 -2C03000F 41820050 -48000044 886A0001 -1C630002 7C6360AE -38800014 7C632050 -7F391A14 394A0002 -4BFFFFB8 886A0001 -1C630002 7C6358AE -38800014 7C632050 -7F391A14 394A0002 -4BFFFF98 394A0001 -4BFFFF90 2C19003C -40800008 3B20003C -2C190090 40810008 -3B200090 3C004330 -C84298A8 6F238000 -90010080 90610084 -C8210080 EC211028 -C05C0014 EC2100B2 -D036002C 3A940001 -2C140006 4180FCD8 -BA810008 800100B4 -382100B0 7C0803A6 -8001001C 00000000 C206B0DC 00000046 #Playback/Core/RestoreGameFrame.asm 7C0802A6 90010004 9421FF50 BE810008 @@ -1127,6 +973,164 @@ $Recommended: Normal Lag Reduction [Hannes Mann] 043761EC 4800001C 04376238 48000018 +$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 +48000088 4E800021 +3EA8F5C3 000000FF +3F1EB852 3F466666 +C1C07AE1 3C6F34D7 +3F4CCCCD 41A51EB8 +00000000 3D75C28F +43160000 3F0A3D71 +00000000 4E800021 +7C0802A6 90010004 +9421FF50 BE810008 +7C7F1B78 880DB6CC +2C000001 41820018 +7FE3FB78 3D808039 +618C10D8 7D8903A6 +4E800421 BA810008 +800100B4 382100B0 +7C0803A6 4E800020 +7C0802A6 90010004 +9421FF50 BE810008 +3C60804D 60636D5C +80630000 3C80803F +608494D0 3D808038 +618C0358 7D8903A6 +4E800421 80630004 +80630000 3D808036 +618CA590 7D8903A6 +4E800421 7C7E1B78 +38600013 38800014 +38A00000 3D808039 +618C01F0 7D8903A6 +4E800421 7C7D1B78 +7FA3EB78 888DC1AB +7FC5F378 3D808039 +618C0A70 7D8903A6 +4E800421 7FA3EB78 +4BFFFF25 7C8802A6 +38A00008 3D808039 +618C075C 7D8903A6 +4E800421 3C600000 +60631000 907D0024 +38600002 7FA4EB78 +38A00009 38C0000D +38E00000 3900000C +39200050 39400008 +3D80803A 618C611C +7D8903A6 4E800421 +7C7F1B78 4BFFFE91 +7F8802A6 834DB64C +3A800000 3EA0804A +62B50FF0 7E83A378 +3D808003 618C241C +7D8903A6 4E800421 +2C030003 41820308 +387A0570 1C94001F +7F032214 7F03C378 +3D808032 618C5B04 +7D8903A6 4E800421 +2C040000 418202E0 +7E83A378 3D80802F +618C3424 7D8903A6 +4E800421 C0230000 +D0210070 38600002 +7FE4FB78 3D80803A +618C6754 7D8903A6 +4E800421 7C7D1B78 +38800001 989D0048 +989D004A 989D004C +989D0049 C03C0024 +D03D0024 D03D0028 +C0210070 C05C0018 +EC21102A D03D0000 +C03C001C D03D0004 +C03C0020 D03D0008 +C03C0028 D03D000C +D03D0010 4CC63242 +C03C0030 C05C0030 +7FA3EB78 7F04C378 +3D80803A 618C6B98 +7D8903A6 4E800421 +7FA3EB78 38800000 +C03C002C C05C002C +3D80803A 618C7548 +7D8903A6 4E800421 +3860000E 3880000F +38A00000 3D808039 +618C01F0 7D8903A6 +4E800421 7C771B78 +3C60804A 60631ED0 +80630000 3D808037 +618C0E44 7D8903A6 +4E800421 7C761B78 +7EE3BB78 888DC1A9 +7EC5B378 3D808039 +618C0A70 7D8903A6 +4E800421 7EE3BB78 +3C808039 60841070 +38A0000C 38C00000 +3D808039 618C069C +7D8903A6 4E800421 +7E83A378 3D80802F +618C3424 7D8903A6 +4E800421 C0230000 +C05C000C EC21102A +D0360038 C03C0010 +D036003C C03C0008 +D0360030 7EC3B378 +38810080 38A00001 +38C0FFFF 3D808001 +618C1E24 7D8903A6 +4E800421 80610080 +38800000 90830040 +80610080 80630018 +80830014 60840001 +90830014 80630004 +80830014 60840001 +90830014 80630004 +80630008 8063000C +C03C0000 D023000C +809C0004 90830004 +3B200000 807D005C +38800000 3D80803A +618C6FEC 7D8903A6 +4E800421 3943000F +3D808040 618CCB00 +887D004F 1C630004 +3C80804D 60841124 +7C63202E 81630004 +886A0000 2C03000B +41820064 2C030020 +4182001C 2C030040 +41820034 886A0000 +2C03000F 41820050 +48000044 886A0001 +1C630002 7C6360AE +38800014 7C632050 +7F391A14 394A0002 +4BFFFFB8 886A0001 +1C630002 7C6358AE +38800014 7C632050 +7F391A14 394A0002 +4BFFFF98 394A0001 +4BFFFF90 2C19003C +40800008 3B20003C +2C190090 40810008 +3B200090 3C004330 +C84298A8 6F238000 +90010080 90610084 +C8210080 EC211028 +C05C0014 EC2100B2 +D036002C 3A940001 +2C140006 4180FCD8 +BA810008 800100B4 +382100B0 7C0803A6 +8001001C 00000000 + $Optional: Game Music OFF [UnclePunch] *Keep checked if you want music OFF. Uncheck "Game Music ON". 04023FFC 38800000 diff --git a/Playback/Core/InitInGame.asm b/Playback/Show Player Names/InitInGame.asm similarity index 100% rename from Playback/Core/InitInGame.asm rename to Playback/Show Player Names/InitInGame.asm diff --git a/playback.json b/playback.json index 388e1924..2c4c0944 100644 --- a/playback.json +++ b/playback.json @@ -15,6 +15,7 @@ "$Required: General Codes", "$Required: Slippi Playback", "$Recommended: Normal Lag Reduction", + "$Optional: Show Player Names", "", "[Gecko]" ] @@ -34,6 +35,7 @@ "$Required: General Codes", "$Required: Slippi Playback", "$Recommended: Normal Lag Reduction", + "$Optional: Show Player Names", "", "[Gecko]" ] @@ -88,8 +90,7 @@ "Fizzi", "UnclePunch", "Achilles", - "tauKhan", - "jmlee337" + "tauKhan" ], "description": [ "Used to play back a .slp file", @@ -143,6 +144,26 @@ } ] }, + { + "name": "Optional: Show Player Names", + "authors": [ + "Fizzi", + "UnclePunch", + "Enzyme", + "jmlee337" + ], + "description": [ + "Show players' Slippi Online display names as HUD elements when available" + ], + "build": [ + { + "type": "injectFolder", + "sourceFolder": "Playback/Show Player Names", + "isRecursive": true, + "annotation": "Show Player Names" + } + ] + }, { "name": "Optional: Game Music OFF", "authors": [