diff --git a/Common/Common.s b/Common/Common.s index e679ea0f..6fb06a86 100644 --- a/Common/Common.s +++ b/Common/Common.s @@ -322,14 +322,14 @@ lwz \reg, -0x62A0(\reg) load r3, \address lwz r4, 0(r3) # Get branch instruction which contains offset -# Process 3rd byte and extend sign to handle negative branches -rlwinm r5, r4, 16, 0xFF -extsb r5, r5 -rlwinm r5, r5, 16, 0xFFFF0000 - -# Extract last 2 bytes, combine with top half, and then add to base address to get result -rlwinm r4, r4, 0, 0xFFFC # Use 0xFFFC because the last bit is used for link -or r4, r4, r5 +# This extracts the LI portion of the branch instruction and shifts it such +# that the sign bit is all the way left. Then it does a divide instruction to +# shift to the right 6 bits while preserving the sign. After that, add to +# branch instruction location to get result. +# Credit to taukhan for the divw improvement (saves 2 instructions) +rlwinm r5, r4, 6, 0xFFFFFF00 +li r4, 64 +divw r4, r5, r4 add \reg, r3, r4 .endm diff --git a/External/59.94Hz Engine/InGameSpeed.asm b/External/59.94Hz Engine/InGameSpeed.asm new file mode 100644 index 00000000..2fe5f56d --- /dev/null +++ b/External/59.94Hz Engine/InGameSpeed.asm @@ -0,0 +1,5 @@ +################################################################################ +# Address: 0x804DA2A8 +################################################################################ + +.long 0x3C88AB85 \ No newline at end of file diff --git a/External/59.94Hz Engine/MenuSpeed.asm b/External/59.94Hz Engine/MenuSpeed.asm new file mode 100644 index 00000000..10cfb783 --- /dev/null +++ b/External/59.94Hz Engine/MenuSpeed.asm @@ -0,0 +1,5 @@ +################################################################################ +# Address: 0x804DA9E8 +################################################################################ + +.long 0x3C88AB85 \ No newline at end of file diff --git a/External/59.94Hz Engine/SetSpeedOnBoot.asm b/External/59.94Hz Engine/SetSpeedOnBoot.asm new file mode 100644 index 00000000..460a4c38 --- /dev/null +++ b/External/59.94Hz Engine/SetSpeedOnBoot.asm @@ -0,0 +1,5 @@ +################################################################################ +# Address: 0x804D7CA0 +################################################################################ + +.long 0x3C88AB85 \ No newline at end of file diff --git a/External/59.94Hz Engine/SyncPollingOnGameStart.asmtemp b/External/59.94Hz Engine/SyncPollingOnGameStart.asmtemp new file mode 100644 index 00000000..2e16c0c7 --- /dev/null +++ b/External/59.94Hz Engine/SyncPollingOnGameStart.asmtemp @@ -0,0 +1,27 @@ +################################################################################ +# Address: 0x80376a8c +################################################################################ + +.include "Common/Common.s" +.include "Online/Online.s" + +# Check if VS Mode +getMinorMajor r3 +cmpwi r3, 0x0202 +bne EXIT + +load r3, 0x80479d64 +lwz r3, 0x0(r3) # 0x80479d64 - Believed to be some loading state +cmpwi r3, 0 # Loading state should be zero when game starts +bne EXIT + +loadGlobalFrame r3 +cmpwi r3, 1 +bne EXIT + +branchl r12, 0x8034f314 # VIWaitForRetrace + +EXIT: +# Replaced code lines +lbz r0, 0x0002 (r31) +lbz r4, 0x0003 (r31) \ No newline at end of file diff --git a/External/59.94Hz Engine/TrainingModeSpeed.asm b/External/59.94Hz Engine/TrainingModeSpeed.asm new file mode 100644 index 00000000..50e3c519 --- /dev/null +++ b/External/59.94Hz Engine/TrainingModeSpeed.asm @@ -0,0 +1,5 @@ +################################################################################ +# Address: 0x804DA5F8 +################################################################################ + +.long 0x3C88AB85 \ No newline at end of file diff --git a/External/Debug Inputs/DebugInputs.s b/External/Debug Inputs/DebugInputs.s new file mode 100644 index 00000000..088c0cfa --- /dev/null +++ b/External/Debug Inputs/DebugInputs.s @@ -0,0 +1,53 @@ +.ifndef HEADER_DEBUG_INPUTS + +################################################################################ +# Constants +################################################################################ +.set INJ_InitDebugInputs, 0x8016e774 + +.set CIRCULAR_BUFFER_COUNT, 16 + +.set DIB_ACTIVE_STATE, 0 # u8. 0 = starting, 1 = active, 2 = complete +.set DIB_FETCH_INDEX, DIB_ACTIVE_STATE + 1 # u8 +.set DIB_COLOR_KEY_DTEXT_ADDR, DIB_FETCH_INDEX + 1 # u32 +.set DIB_LAG_DISPLAY_DTEXT_ADDR, DIB_COLOR_KEY_DTEXT_ADDR + 4 # u32 +.set DIB_LAST_POLL_TIME, DIB_LAG_DISPLAY_DTEXT_ADDR + 4 # u32 +.set DIB_LAST_FETCH_TIME, DIB_LAST_POLL_TIME + 4 # u32 +.set DIB_CALLBACK_PTR, DIB_LAST_FETCH_TIME + 4 # u32 +.set DIB_CIRCULAR_BUFFER, DIB_CALLBACK_PTR + 4 # u32 * CIRCULAR_BUFFER_COUNT +.set DIB_INPUT_TO_RENDER_US, DIB_CIRCULAR_BUFFER + (4 * CIRCULAR_BUFFER_COUNT) # u32 +.set DIB_POLL_DIFF_MIN_US, DIB_INPUT_TO_RENDER_US + 4 # u32 +.set DIB_POLL_DIFF_MAX_US, DIB_POLL_DIFF_MIN_US + 4 # u32 +.set DIB_FETCH_DIFF_US, DIB_POLL_DIFF_MAX_US + 4 # u32 +.set DIB_POLL_TO_FETCH_US, DIB_FETCH_DIFF_US + 4 # u32 +.set DIB_POLL_TO_ENGINE_US, DIB_POLL_TO_FETCH_US + 4 # u32 +.set DIB_POLL_COUNT, DIB_POLL_TO_ENGINE_US + 4 # u32 +.set DIB_SIZE, DIB_POLL_COUNT + 4 + +################################################################################ +# Macros +################################################################################ + +# Calculates us difference from two ticks +.macro calcDiffUs reg_now, reg_ref +sub r3, \reg_now, \reg_ref # This works even if ticks overflow +mulli r3, r3, 12 +lis r4, 0x8000 +ori r4, r4, 0x00FC +lwz r4, 0(r4) # Grab CPU speed so that this works on Nintendont (729MHz) and GC/Wii (486MHz) +li r5, 1000 +divwu r4, r4, r5 +divwu r4, r4, r5 # Divide by 1000 twice because I can't li 1000000 +divwu r3, r3, r4 +.endm + +.macro calcDiffFromFetchUs reg_dib, reg_idx +branchl r12, 0x8034c408 # OSGetTick +mulli r4, \reg_idx, 4 +addi r4, r4, DIB_CIRCULAR_BUFFER +lwzx r4, \reg_dib, r4 +calcDiffUs r3, r4 +.endm + +.endif +.set HEADER_DEBUG_INPUTS, 1 diff --git a/External/Debug Inputs/InitOnGameStart.asm b/External/Debug Inputs/InitOnGameStart.asm new file mode 100644 index 00000000..e178e148 --- /dev/null +++ b/External/Debug Inputs/InitOnGameStart.asm @@ -0,0 +1,280 @@ +################################################################################ +# Address: INJ_InitDebugInputs +################################################################################ + +.include "Common/Common.s" +.include "./DebugInputs.s" + +b CODE_START + +DATA_BLRL: +blrl +.set DO_DIB_ADDR, 0 +.long 0 # Buffer +.set DO_CS_X_SCALE, DO_DIB_ADDR + 4 +.float 200 +.set DO_CS_Y_SCALE, DO_CS_X_SCALE + 4 +.float 25 +.set DO_CS_COLOR, DO_CS_Y_SCALE + 4 +.byte 0,0,0,255 +.set DO_LD_COLOR, DO_CS_COLOR + 4 +.byte 0,0,0,180 +.set DO_LD_TEXT_COLOR, DO_LD_COLOR + 4 +.byte 0xE2,0xE2,0xE2,0xFF +.set DO_LD_TEXT_X_SCALE, DO_LD_TEXT_COLOR + 4 +.float 10 +.set DO_LD_TEXT_Y_SCALE, DO_LD_TEXT_X_SCALE + 4 +.float 17 +.set DO_LD_STR_LATENCY, DO_LD_TEXT_Y_SCALE + 4 +.string "Total Game Lag: %u us\n\n" +.set DO_LD_STR_POLL_COUNT, DO_LD_STR_LATENCY + 24 +.string "Poll Count: %u\n" +.set DO_LD_STR_MIN_POLL_DIFF, DO_LD_STR_POLL_COUNT + 16 +.string "Min Poll Diff: %u us\n" +.set DO_LD_STR_MAX_POLL_DIFF, DO_LD_STR_MIN_POLL_DIFF + 22 +.string "Max Poll Diff: %u us\n" +.set DO_LD_STR_FETCH_DIFF, DO_LD_STR_MAX_POLL_DIFF + 22 +.string "Fetch-Fetch: %u us\n" +.set DO_LD_STR_FETCH_TO_POLL_DIFF, DO_LD_STR_FETCH_DIFF + 20 +.string "Poll-Fetch: %u us\n" +.set DO_LD_STR_POLL_TO_ENGINE_DIFF, DO_LD_STR_FETCH_TO_POLL_DIFF + 19 +.string "Poll-Engine: %u us\n" +.align 2 + +################################################################################ +# Function: PollingHandler +################################################################################ +FN_BLRL_PollingHandler: +blrl + +# This is only here to trigger the interrupt. The actual logic will happen in LogPollInterrupt.asm +# I modified it to work this way such that the poll time is logged before any poll handlers +# run in case the PadRenewRaw is called is a side effect of a poll handler such as is the case +# with tau's 0.5f lag reduction code +blr + +################################################################################ +# Function: UpdateLagDisplay +################################################################################ +.set REG_DATA, 31 +.set REG_DIB, 30 +.set REG_DEVELOP_TEXT, 29 + +FN_BLRL_UpdateLagDisplay: +blrl +backup + +bl DATA_BLRL +mflr REG_DATA +lwz REG_DIB, DO_DIB_ADDR(REG_DATA) +lwz REG_DEVELOP_TEXT, DIB_LAG_DISPLAY_DTEXT_ADDR(REG_DIB) + +# Only run update if active, if complete, stop updating +lbz r3, DIB_ACTIVE_STATE(REG_DIB) +cmpwi r3, 1 +bne FN_UpdateLagDisplay_EXIT + +mr r3, REG_DEVELOP_TEXT +branchl r12, 0x80302bb0 # DevelopText_EraseAllText +mr r3, REG_DEVELOP_TEXT +li r4, 0 +li r5, 0 +branchl r12, 0x80302a3c # DevelopMode_Text_ResetCursorXY + +#Set Text +mr r3, REG_DEVELOP_TEXT +addi r4, REG_DATA, DO_LD_STR_LATENCY +lwz r5, DIB_INPUT_TO_RENDER_US(REG_DIB) +branchl r12, 0x80302d4c # DevelopText_FormatAndPrint + +mr r3, REG_DEVELOP_TEXT +addi r4, REG_DATA, DO_LD_STR_POLL_COUNT +lwz r5, DIB_POLL_COUNT(REG_DIB) +branchl r12, 0x80302d4c # DevelopText_FormatAndPrint + +mr r3, REG_DEVELOP_TEXT +addi r4, REG_DATA, DO_LD_STR_MIN_POLL_DIFF +lwz r5, DIB_POLL_DIFF_MIN_US(REG_DIB) +branchl r12, 0x80302d4c # DevelopText_FormatAndPrint + +mr r3, REG_DEVELOP_TEXT +addi r4, REG_DATA, DO_LD_STR_MAX_POLL_DIFF +lwz r5, DIB_POLL_DIFF_MAX_US(REG_DIB) +branchl r12, 0x80302d4c # DevelopText_FormatAndPrint + +mr r3, REG_DEVELOP_TEXT +addi r4, REG_DATA, DO_LD_STR_FETCH_DIFF +lwz r5, DIB_FETCH_DIFF_US(REG_DIB) +branchl r12, 0x80302d4c # DevelopText_FormatAndPrint + +mr r3, REG_DEVELOP_TEXT +addi r4, REG_DATA, DO_LD_STR_FETCH_TO_POLL_DIFF +lwz r5, DIB_POLL_TO_FETCH_US(REG_DIB) +branchl r12, 0x80302d4c # DevelopText_FormatAndPrint + +mr r3, REG_DEVELOP_TEXT +addi r4, REG_DATA, DO_LD_STR_POLL_TO_ENGINE_DIFF +lwz r5, DIB_POLL_TO_ENGINE_US(REG_DIB) +branchl r12, 0x80302d4c # DevelopText_FormatAndPrint + +# Check if game over +load r3, 0x8046b6a0 +lbz r3, 0x8(r3) +cmpwi r3, 0 +beq SKIP_GAME_END + +# Here game has ended, so let's do some cleanup. First unregister polling callback +lwz r3, DIB_CALLBACK_PTR(REG_DIB) +branchl r12, 0x80349cbc # SIUnregisterPollingHandler + +# Set active state to game complete +li r3, 2 +stb r3, DIB_ACTIVE_STATE(REG_DIB) +SKIP_GAME_END: + +FN_UpdateLagDisplay_EXIT: +restore +blr + +################################################################################ +# Function: InitColorSquare +################################################################################ +.set REG_DATA, 31 +.set REG_DEVELOP_TEXT, 30 + +FN_InitColorSquare: +backup + +bl DATA_BLRL +mflr REG_DATA + +#Create Rectangle +li r3, 32 +branchl r12, HSD_MemAlloc +mr r8, r3 +li r3, 30 # ID +li r4, -210 # X Pos +li r5, -40 # Y Pos +li r6, 1 +li r7, 1 +branchl r12, 0x80302834 # DevelopText_CreateDataTable +mr REG_DEVELOP_TEXT, r3 +#Activate Text +lwz r3, -0x4884(r13) +mr r4, REG_DEVELOP_TEXT +branchl r12, 0x80302810 # DevelopText_Activate +#Hide blinking cursor +li r3, 0 +stb r3, 0x26(REG_DEVELOP_TEXT) +#Change BG Color +mr r3, REG_DEVELOP_TEXT +addi r4, REG_DATA, DO_CS_COLOR +branchl r12, 0x80302b90 # DevelopText_StoreBGColor +#Set Stretch +lfs f1, DO_CS_X_SCALE(REG_DATA) +stfs f1, 0x8(REG_DEVELOP_TEXT) +lfs f1, DO_CS_Y_SCALE(REG_DATA) +stfs f1, 0xC(REG_DEVELOP_TEXT) +#Store Develop Text Addr +lwz r3, DO_DIB_ADDR(REG_DATA) +stw REG_DEVELOP_TEXT, DIB_COLOR_KEY_DTEXT_ADDR(r3) + +restore +blr + +################################################################################ +# Function: InitLagDisplay +################################################################################ +.set REG_DATA, 31 +.set REG_DEVELOP_TEXT, 30 + +FN_InitLagDisplay: +backup + +bl DATA_BLRL +mflr REG_DATA + +#Create Rectangle +li r3, 1000 +branchl r12, HSD_MemAlloc +mr r8, r3 +li r3, 31 # ID +li r4, 0 # X Pos +li r5, 0 # Y Pos +li r6, 29 # Width +li r7, 9 # Height +branchl r12, 0x80302834 # DevelopText_CreateDataTable +mr REG_DEVELOP_TEXT, r3 +#Activate Text +lwz r3, -0x4884(r13) +mr r4, REG_DEVELOP_TEXT +branchl r12, 0x80302810 # DevelopText_Activate +#Hide blinking cursor +li r3, 0 +stb r3, 0x26(REG_DEVELOP_TEXT) +#Change BG Color +mr r3, REG_DEVELOP_TEXT +addi r4, REG_DATA, DO_LD_COLOR +branchl r12, 0x80302b90 # DevelopText_StoreBGColor +#Store text scale +mr r3, REG_DEVELOP_TEXT +lfs f1, DO_LD_TEXT_X_SCALE(REG_DATA) +lfs f2, DO_LD_TEXT_Y_SCALE(REG_DATA) +branchl r12, 0x80302b10 # DevelopText_StoreTextScale +#Set Text Color +mr r3, REG_DEVELOP_TEXT +addi r4, REG_DATA, DO_LD_TEXT_COLOR +branchl r12, 0x80302b64 # DevelopText_StoreTextColor +#Show text +mr r3, REG_DEVELOP_TEXT +branchl r12, 0x80302af0 # DevelopText_ShowText +#Store Develop Text Addr +lwz r3, DO_LD_DIB_ADDR(REG_DATA) +stw REG_DEVELOP_TEXT, DIB_LAG_DISPLAY_DTEXT_ADDR(r3) + +# Create GObj +li r3, 19 # GObj Type +li r4, 20 +li r5, 0 # some type of priority +branchl r12, GObj_Create + +#Create Proc to update display +bl FN_BLRL_UpdateLagDisplay +mflr r4 # Function +li r5, 7 # Priority +branchl r12, GObj_AddProc + +restore +blr + +CODE_START: + +.set REG_DIB, 30 + +backup +# logf "Init..." + +li r3, DIB_SIZE +branchl r12, HSD_MemAlloc + +bl DATA_BLRL +mflr r4 +stw r3, 0(r4) # Write address to static address +mr REG_DIB, r3 + +li r4, DIB_SIZE +branchl r12, Zero_AreaLength + +bl FN_InitColorSquare +bl FN_InitLagDisplay + +# I thought this would fire twice per frame (same as polling), but it doesn't and idk what it does +bl FN_BLRL_PollingHandler +mflr r3 +stw r3, DIB_CALLBACK_PTR(REG_DIB) # Store so we can unregister later +branchl r12, 0x80349bf0 # SIRegisterPollingHandler + +restore + +EXIT: +lfs f1, -0x5738(rtoc) \ No newline at end of file diff --git a/External/Debug Inputs/LogEngineTime.asm b/External/Debug Inputs/LogEngineTime.asm new file mode 100644 index 00000000..6c69fea0 --- /dev/null +++ b/External/Debug Inputs/LogEngineTime.asm @@ -0,0 +1,70 @@ +################################################################################ +# Address: 0x801a4dec +################################################################################ + +.include "Common/Common.s" +.include "./DebugInputs.s" + +# Check if VS Mode +getMinorMajor r3 +cmpwi r3, 0x0202 +bne EXIT + +loadGlobalFrame r3 +cmpwi r3, 0 +ble EXIT + +.set REG_DIB, 31 +.set REG_INTERRUPTS, 30 +.set REG_DIFF_US, 29 +.set REG_KEY, 28 +.set REG_DEVELOP_TEXT, 27 + +backup + +branchl r12, OSDisableInterrupts +mr REG_INTERRUPTS, r3 + +# Fetch DIB +computeBranchTargetAddress r3, INJ_InitDebugInputs +lwz REG_DIB, 8+0(r3) + +# Check if DIB is ready (poll has happened) +lbz r3, DIB_ACTIVE_STATE(REG_DIB) +cmpwi r3, 0 +beq RESTORE_AND_EXIT + +# Fetch key from controller input and clear d-pad inputs +load r4, 0x804c1fac +lwz r3, 0(r4) +rlwinm REG_KEY, r3, 0, 0xF +rlwinm r3, r3, 0, 0xFFFFFFF0 # clear d-pad inputs +stw r3, 0(r4) + +# Calculate time diff +calcDiffFromFetchUs REG_DIB, REG_KEY +mr REG_DIFF_US, r3 + +stw REG_DIFF_US, DIB_POLL_TO_ENGINE_US(REG_DIB) + +# Adjust develop text BG color +lwz r3, DIB_COLOR_KEY_DTEXT_ADDR(REG_DIB) +stb REG_KEY, BKP_FREE_SPACE_OFFSET+0(sp) +stb REG_KEY, BKP_FREE_SPACE_OFFSET+1(sp) +stb REG_KEY, BKP_FREE_SPACE_OFFSET+2(sp) +lwz r4, BKP_FREE_SPACE_OFFSET(sp) +rlwinm r4, r4, 4, 0xFFFFF000 +ori r4, r4, 0xFF +stw r4, BKP_FREE_SPACE_OFFSET(sp) +addi r4, sp, BKP_FREE_SPACE_OFFSET +branchl r12, 0x80302b90 # DevelopText_StoreBGColor + +RESTORE_AND_EXIT: +# Restore interrupts +mr r3, REG_INTERRUPTS +branchl r12, OSRestoreInterrupts + +restore + +EXIT: +lwz r0, -0x6C98(r13) \ No newline at end of file diff --git a/External/Debug Inputs/LogFetchTime.asm b/External/Debug Inputs/LogFetchTime.asm new file mode 100644 index 00000000..8583bde2 --- /dev/null +++ b/External/Debug Inputs/LogFetchTime.asm @@ -0,0 +1,81 @@ +################################################################################ +# Address: 0x80376a88 +################################################################################ + +.include "Common/Common.s" +.include "./DebugInputs.s" + +# Check if VS Mode +getMinorMajor r3 +cmpwi r3, 0x0202 +bne EXIT + +load r3, 0x80479d64 +lwz r3, 0x0(r3) # 0x80479d64 - Believed to be some loading state +cmpwi r3, 0 # Loading state should be zero when game starts +bne EXIT + +.set CONST_BACKUP_BYTES, 0xE0 # Maybe add this to Common.s +.set P1_PAD_OFFSET, CONST_BACKUP_BYTES + 0x2C + +.set REG_DIB, 31 +.set REG_INTERRUPTS, 30 +.set REG_FETCH_TIME, 29 + +backup + +branchl r12, OSDisableInterrupts +mr REG_INTERRUPTS, r3 + +# Fetch DIB +computeBranchTargetAddress r3, INJ_InitDebugInputs +lwz REG_DIB, 8+0(r3) + +# Store "key" to inputs (sets d-pad inputs) +lwz r3, P1_PAD_OFFSET(sp) # Load P1 inputs +rlwinm r3, r3, 16, 0xFFFFFFF0 # shift inputs to put d-pad lowest, also clear d-pad +lbz r4, DIB_FETCH_INDEX(REG_DIB) +or r3, r3, r4 # set d-pad inputs to key +rlwinm r3, r3, 16, 0xFFFFFFFF # shift inputs back into place +stw r3, P1_PAD_OFFSET(sp) + +# Get and write current tick +lwz r3, DIB_LAST_POLL_TIME(REG_DIB) +lbz r4, DIB_FETCH_INDEX(REG_DIB) +mulli r4, r4, 4 # Get index offset +addi r4, r4, DIB_CIRCULAR_BUFFER +stwx r3, REG_DIB, r4 + +# Increment index +incrementByteInBuf r3, REG_DIB, DIB_FETCH_INDEX, CIRCULAR_BUFFER_COUNT + +# Indicate ready, prevents other functions from running first. Only activate if currently inactive +lbz r3, DIB_ACTIVE_STATE(REG_DIB) +cmpwi r3, 0 +bne SKIP_ACTIVATE +li r3, 1 +stb r3, DIB_ACTIVE_STATE(REG_DIB) +SKIP_ACTIVATE: + +# Store details to print. Start with difference since last fetch +branchl r12, 0x8034c408 # OSGetTick +mr REG_FETCH_TIME, r3 +lwz r4, DIB_LAST_FETCH_TIME(REG_DIB) +stw REG_FETCH_TIME, DIB_LAST_FETCH_TIME(REG_DIB) +calcDiffUs REG_FETCH_TIME, r4 # Calculate difference since last fetch +stw r3, DIB_FETCH_DIFF_US(REG_DIB) + +# Store time since poll +lwz r3, DIB_LAST_POLL_TIME(REG_DIB) +calcDiffUs REG_FETCH_TIME, r3 +stw r3, DIB_POLL_TO_FETCH_US(REG_DIB) + +RESTORE_AND_EXIT: +# Restore interrupts +mr r3, REG_INTERRUPTS +branchl r12, OSRestoreInterrupts + +restore + +EXIT: +lbz r0, 0x0002(r31) # replaced code line \ No newline at end of file diff --git a/External/Debug Inputs/LogPollTime.asm b/External/Debug Inputs/LogPollTime.asm new file mode 100644 index 00000000..de37a00c --- /dev/null +++ b/External/Debug Inputs/LogPollTime.asm @@ -0,0 +1,74 @@ +################################################################################ +# Address: 0x80349a28 # SIInterruptHandler +################################################################################ + +.include "Common/Common.s" +.include "./DebugInputs.s" + +# Check if VS Mode +getMinorMajor r3 +cmpwi r3, 0x0202 +bne EXIT + +load r3, 0x80479d64 +lwz r3, 0x0(r3) # 0x80479d64 - Believed to be some loading state +cmpwi r3, 0 # Loading state should be zero when game starts +bne EXIT + +.set REG_DIB, 31 +.set REG_INTERRUPTS, 30 +.set REG_DIFF_SINCE_LAST, 29 + +backup + +branchl r12, OSDisableInterrupts +mr REG_INTERRUPTS, r3 + +# Fetch DIB +computeBranchTargetAddress r3, INJ_InitDebugInputs +lwz REG_DIB, 8+0(r3) + +lwz r3, DIB_POLL_COUNT(REG_DIB) +addi r3, r3, 1 +stw r3, DIB_POLL_COUNT(REG_DIB) + +# Write poll time +branchl r12, 0x8034c408 # OSGetTick +lwz r4, DIB_LAST_POLL_TIME(REG_DIB) +stw r3, DIB_LAST_POLL_TIME(REG_DIB) +calcDiffUs r3, r4 # Calculate difference since last poll +mr REG_DIFF_SINCE_LAST, r3 + +# Store min/max diff for logging +lwz r3, DIB_POLL_COUNT(REG_DIB) +rlwinm. r3, r3, 0, 0xFF +beq FN_PollingHandler_RESET_MIN_MAX # Reset every 256 polls, 2 seconds? + +lwz r3, DIB_POLL_DIFF_MIN_US(REG_DIB) +cmpw REG_DIFF_SINCE_LAST, r3 +bge FN_PollingHandler_SKIP_ADJUST_MIN +stw REG_DIFF_SINCE_LAST, DIB_POLL_DIFF_MIN_US(REG_DIB) +FN_PollingHandler_SKIP_ADJUST_MIN: + +lwz r3, DIB_POLL_DIFF_MAX_US(REG_DIB) +cmpw REG_DIFF_SINCE_LAST, r3 +ble FN_PollingHandler_SKIP_ADJUST_MAX +stw REG_DIFF_SINCE_LAST, DIB_POLL_DIFF_MAX_US(REG_DIB) +FN_PollingHandler_SKIP_ADJUST_MAX: + +b FN_PollingHandler_MIN_MAX_END + +FN_PollingHandler_RESET_MIN_MAX: +stw REG_DIFF_SINCE_LAST, DIB_POLL_DIFF_MIN_US(REG_DIB) +stw REG_DIFF_SINCE_LAST, DIB_POLL_DIFF_MAX_US(REG_DIB) +FN_PollingHandler_MIN_MAX_END: + +RESTORE_AND_EXIT: +# Restore interrupts +mr r3, REG_INTERRUPTS +branchl r12, OSRestoreInterrupts + +restore + +EXIT: +lwz r5, 0(r24) # Replaced codeline \ No newline at end of file diff --git a/External/Debug Inputs/LogScanoutTime.asm b/External/Debug Inputs/LogScanoutTime.asm new file mode 100644 index 00000000..24aef01a --- /dev/null +++ b/External/Debug Inputs/LogScanoutTime.asm @@ -0,0 +1,110 @@ +################################################################################ +# Address: 0x80375c14 # End of VIPreRetraceCB +################################################################################ + +.include "Common/Common.s" +.include "./DebugInputs.s" + +b CODE_START + +################################################################################ +# Function: GetIndexFromColor +################################################################################ +# Inputs: +# r3 - YUV Color +################################################################################ +# Output: +# r3 - 0-15 or -1 if color does not match +################################################################################ +FN_GetIndexFromColor: +rlwinm r4, r3, 24, 0xFF +rlwinm r3, r3, 8, 0xFF + +cmpw r3, r4 +beq FN_GetIndexFromColor_CALC_INDEX + +li r3, -1 # Color invalid if the two bytes don't match +b FN_GetIndexFromColor_RETURN + +FN_GetIndexFromColor_CALC_INDEX: +# This does some math on the byte to calculate the index from it. See google sheet for examples: +# https://docs.google.com/spreadsheets/d/1EKnVQmAbt5LCipXq_aGCMJ_utsOlPqM_O0UJ3cnWm4c/edit?usp=sharing +subi r3, r3, 15 +mulli r3, r3, 6 +li r4, 5 +divwu r3, r3, r4 +rlwinm r3, r3, 28, 0xF # Extract 4 bits to get key + +FN_GetIndexFromColor_RETURN: +blr + +################################################################################ +# Code start +################################################################################ +CODE_START: +# Check if VS Mode +getMinorMajor r3 +cmpwi r3, 0x0202 +bne EXIT + +load r3, 0x80479d64 +lwz r3, 0x0(r3) # 0x80479d64 - Believed to be some loading state +cmpwi r3, 0 # Loading state should be zero when game starts +bne EXIT + +.set REG_DIB, 31 +.set REG_INTERRUPTS, 30 +.set REG_DIFF_US, 29 +.set REG_KEY, 28 +.set REG_DEVELOP_TEXT, 27 +.set REG_COLOR, 26 + +backup + +branchl r12, OSDisableInterrupts +mr REG_INTERRUPTS, r3 + +# Fetch DIB +computeBranchTargetAddress r3, INJ_InitDebugInputs +lwz REG_DIB, 8+0(r3) + +# Check if DIB is ready (poll has happened) +lbz r3, DIB_ACTIVE_STATE(REG_DIB) +cmpwi r3, 0 +beq RESTORE_AND_EXIT + +# Load ptr to frame that will be scanned out +loadwz r3, 0x804a8b10 # Contains ptr to the current XFB + +# Invalidate the pixel color memory because the GPU will have overwritten it and if that memory +# is still in our cache, we would load a stale color (only on console) +li r4, 0 +dcbi r3, r4 +sync +isync + +# Load 2 pixels and calculate the index from it +lwz REG_COLOR, 0(r3) # Load top left pixels +mr r3, REG_COLOR +bl FN_GetIndexFromColor +cmpwi r3, 0 +blt RESTORE_AND_EXIT # Color is invalid, exit + +mr REG_KEY, r3 + +# Calculate time diff +calcDiffFromFetchUs REG_DIB, REG_KEY +mr REG_DIFF_US, r3 + +# Store latest latency +stw REG_DIFF_US, DIB_INPUT_TO_RENDER_US(REG_DIB) + +RESTORE_AND_EXIT: +# Restore interrupts +mr r3, REG_INTERRUPTS +branchl r12, OSRestoreInterrupts + +restore + +EXIT: +lwz r0, 0x0024(sp) # Replaced codeline \ No newline at end of file diff --git a/External/WidescreenShutters/Add Shutters.asm b/External/WidescreenShutters/Add Shutters.asm index f69f5b5f..719eb258 100644 --- a/External/WidescreenShutters/Add Shutters.asm +++ b/External/WidescreenShutters/Add Shutters.asm @@ -21,7 +21,7 @@ blrl # r3: isLeft # True if this is the left shutter, False if right ################################################################################ .set REG_DATA, 31 -.set REG_DevelopText, 30 +.set REG_DEVELOP_TEXT, 30 .set REG_X_POS, 29 .set REG_ID, 28 @@ -49,23 +49,23 @@ backup li r6,1 li r7,1 branchl r12, 0x80302834 # DevelopText_CreateDataTable - mr REG_DevelopText,r3 + mr REG_DEVELOP_TEXT,r3 #Activate Text lwz r3, -0x4884 (r13) - mr r4,REG_DevelopText + mr r4,REG_DEVELOP_TEXT branchl r12, 0x80302810 # DevelopText_Activate #Hide blinking cursor li r3,0 - stb r3,0x26(REG_DevelopText) + stb r3,0x26(REG_DEVELOP_TEXT) #Change BG Color - mr r3,REG_DevelopText + mr r3,REG_DEVELOP_TEXT addi r4,REG_DATA,DO_COLOR branchl r12, 0x80302b90 # DevelopText_StoreBGColor #Set Stretch lfs f1,DO_X_SCALE(REG_DATA) - stfs f1,0x8(REG_DevelopText) + stfs f1,0x8(REG_DEVELOP_TEXT) lfs f1,DO_Y_SCALE(REG_DATA) - stfs f1,0xC(REG_DevelopText) + stfs f1,0xC(REG_DEVELOP_TEXT) restore blr diff --git a/Online/Online.s b/Online/Online.s index a2eeb0d4..185ab50a 100644 --- a/Online/Online.s +++ b/Online/Online.s @@ -23,7 +23,6 @@ .set OFST_R13_USE_PREMADE_TEXT,-0x5014 # bool, used to make Text_CopyPremadeTextDataToStruct load text data from dolphin .set OFST_R13_ISWIDESCREEN,-0x5020 # bool, used to make Text_CopyPremadeTextDataToStruct load text data from dolphin # r13 offsets used in tournament mode (not sure if completely safe though) -# -0x5040 (r13) # -0x5068 (r13) # -0x7510 (r13) diff --git a/Output/Netplay/GALE01r2.ini b/Output/Netplay/GALE01r2.ini index d377db37..6e2cf55c 100644 --- a/Output/Netplay/GALE01r2.ini +++ b/Output/Netplay/GALE01r2.ini @@ -3116,7 +3116,7 @@ C22600A8 0000000B #Online/Menus/CSS/PreventColorChange.asm 618C028C 7D8903A6 4E800420 3C60803F 60000000 00000000 -C226699C 00000029 #Online/Menus/CSS/SceneLoadCSS.asm +C226699C 00000028 #Online/Menus/CSS/SceneLoadCSS.asm 4800002C 4E800021 C2E00000 41A00000 00000000 3DCCCCCD @@ -3125,7 +3125,7 @@ C2E00000 41A00000 53000000 900DB638 3C608048 80639D30 5463443E 2C030008 -40820100 7C0802A6 +408200F8 7C0802A6 90010004 9421FF20 BE8100B0 4BFFFFB1 7FC802A6 3D808000 @@ -3143,11 +3143,10 @@ BE8100B0 4BFFFFB1 3D808037 618CF1E4 7D8903A6 4E800421 907F0000 886DAFA0 -2C030003 40820030 +2C030003 40820028 3C608026 606352F4 -80830000 5485863E -7CA50774 54A5801E -5484043A 7C842B78 +80830000 5485302E +38800040 7C8523D6 7C632214 88630008 987F001A 387E0010 3D808001 618C6BE0 @@ -3158,7 +3157,7 @@ BE8100B0 4BFFFFB1 BA8100B0 800100E4 382100E0 7C0803A6 60000000 00000000 -C2264118 0000001C #Online/Menus/CSS/SkipReturnToCssSound.asm +C2264118 0000001B #Online/Menus/CSS/SkipReturnToCssSound.asm 7C0802A6 90010004 9421FF00 BC610008 886DAFA3 2C030000 @@ -3168,12 +3167,11 @@ C2264118 0000001C #Online/Menus/CSS/SkipReturnToCssSound.asm 8BC30001 3D808037 618CF1B0 7D8903A6 4E800421 2C1E0000 -40820060 4800007C +40820058 48000074 38600000 986DAFA3 3C608023 6063CCA4 -80830000 5485863E -7CA50774 54A5801E -5484043A 7C842B78 +80830000 5485302E +38800040 7C8523D6 7C632214 83E3000C 807F0006 3D808037 618CF1B0 7D8903A6 @@ -3586,16 +3584,15 @@ BA8100B0 800100E4 7D8903A6 4E800420 60000000 00000000 0423CF9C 2C1B0008 #Online/Menus/CSS/TextEntryScreen/Display8Characters.asm -C223CF80 0000000E #Online/Menus/CSS/TextEntryScreen/HandleAutocompleteText.asm +C223CF80 0000000D #Online/Menus/CSS/TextEntryScreen/HandleAutocompleteText.asm 48000010 4E800021 00000000 8E9196FF 88CDAFA3 2C060000 -4182004C 4BFFFFE9 +41820044 4BFFFFE9 7CC802A6 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7CE32214 +5485302E 38800040 +7C8523D6 7CE32214 80E7000C 88E70004 7C1B3800 4180000C 3BA60004 48000008 @@ -3609,16 +3606,15 @@ C223B3D0 00000006 #Online/Menus/CSS/TextEntryScreen/HandleDescriptionText.asm 48000008 7FE4FB78 60000000 00000000 0423C6C0 4800004C #Online/Menus/CSS/TextEntryScreen/HandleJpSpace.asm -C223E994 00000027 #Online/Menus/CSS/TextEntryScreen/InitNameEntry.asm +C223E994 00000026 #Online/Menus/CSS/TextEntryScreen/InitNameEntry.asm 886DAFA3 2C030000 -41820128 38600001 +41820120 38600001 986DAFCB 48000004 7C0802A6 90010004 9421FF20 BE8100B0 3C608023 6063CCA4 -80830000 5485863E -7CA50774 54A5801E -5484043A 7C842B78 +80830000 5485302E +38800040 7C8523D6 7F232214 3860000A 3D808037 618CF1E4 7D8903A6 4E800421 @@ -3649,26 +3645,24 @@ C223E994 00000027 #Online/Menus/CSS/TextEntryScreen/InitNameEntry.asm 800100E4 382100E0 7C0803A6 48000004 38600000 00000000 -C223C588 0000000C #Online/Menus/CSS/TextEntryScreen/NameEntryThinkOneShot.asm +C223C588 0000000B #Online/Menus/CSS/TextEntryScreen/NameEntryThinkOneShot.asm 886DAFA3 2C030000 -41820050 3C608023 +41820048 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7CC32214 +5485302E 38800040 +7C8523D6 7CC32214 80E6000C 88670005 2C030000 4082001C 38600001 98670005 38660008 7C6903A6 38600003 4E800421 886DB56C 00000000 -C223CD74 00000011 #Online/Menus/CSS/TextEntryScreen/OnBPressAutoComplete.asm +C223CD74 00000010 #Online/Menus/CSS/TextEntryScreen/OnBPressAutoComplete.asm 886DAFA3 2C030000 -41820074 3C608023 +4182006C 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7C632214 +5485302E 38800040 +7C8523D6 7C632214 8083000C 88A40004 2C050000 40810030 38A5FFFF 98A40004 @@ -3684,15 +3678,14 @@ C223CA50 00000003 #Online/Menus/CSS/TextEntryScreen/OnConfirmButtonAPress.asm 3D808023 618CCC14 7D8903A6 4E800420 60000000 00000000 -C223CC14 0000001D #Online/Menus/CSS/TextEntryScreen/OnConfirmButtonHandler.asm +C223CC14 0000001C #Online/Menus/CSS/TextEntryScreen/OnConfirmButtonHandler.asm 886DAFA3 2C030000 -418200D8 7C0802A6 +418200D0 7C0802A6 90010004 9421FF20 BE8100B0 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7C632214 +5485302E 38800040 +7C8523D6 7C632214 83E3000C 887F0004 2C030000 40820038 38600003 3D808002 @@ -3714,13 +3707,12 @@ BA8100B0 800100E4 3D808023 618CCC80 7D8903A6 4E800420 38000000 00000000 -C223C33C 0000000E #Online/Menus/CSS/TextEntryScreen/OnEnterJpText.asm +C223C33C 0000000D #Online/Menus/CSS/TextEntryScreen/OnEnterJpText.asm 886DAFA3 2C030000 -41820054 3C608023 +4182004C 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7C632214 +5485302E 38800040 +7C8523D6 7C632214 8083000C 88A40004 2C050008 4080000C 38A50001 98A40004 @@ -3729,13 +3721,12 @@ C223C33C 0000000E #Online/Menus/CSS/TextEntryScreen/OnEnterJpText.asm 48000014 3D808023 618CCE4C 7D8903A6 4E800421 00000000 -C223C72C 0000000E #Online/Menus/CSS/TextEntryScreen/OnEnterText.asm +C223C72C 0000000D #Online/Menus/CSS/TextEntryScreen/OnEnterText.asm 886DAFA3 2C030000 -41820054 3C608023 +4182004C 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7C632214 +5485302E 38800040 +7C8523D6 7C632214 8083000C 88A40004 2C050008 4080000C 38A50001 98A40004 @@ -3748,37 +3739,34 @@ C223C81C 00000003 #Online/Menus/CSS/TextEntryScreen/OnErasePress.asm 3D808023 618CCD3C 7D8903A6 4E800420 60000000 00000000 -C223CCBC 0000000B #Online/Menus/CSS/TextEntryScreen/OnLPress.asm +C223CCBC 0000000A #Online/Menus/CSS/TextEntryScreen/OnLPress.asm 886DAFA3 2C030000 -41820048 3C608023 +41820040 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7C632214 +5485302E 38800040 +7C8523D6 7C632214 38630008 7C6903A6 38600001 4E800421 3D808023 618CCE38 7D8903A6 4E800420 887C0050 00000000 -C223CCE0 0000000B #Online/Menus/CSS/TextEntryScreen/OnRPress.asm +C223CCE0 0000000A #Online/Menus/CSS/TextEntryScreen/OnRPress.asm 886DAFA3 2C030000 -41820048 3C608023 +41820040 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7C632214 +5485302E 38800040 +7C8523D6 7C632214 38630008 7C6903A6 38600002 4E800421 3D808023 618CCE38 7D8903A6 4E800420 887C0050 00000000 -C223C928 0000000D #Online/Menus/CSS/TextEntryScreen/OnRandomPress.asm +C223C928 0000000C #Online/Menus/CSS/TextEntryScreen/OnRandomPress.asm 886DAFA3 2C030000 -41820048 3C608023 +41820040 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7C632214 +5485302E 38800040 +7C8523D6 7C632214 8083000C 9BA40004 9BBC0058 38830008 7C8903A6 38600003 @@ -6652,25 +6640,24 @@ $Recommended: Normal Lag Reduction [Hannes Mann] $Recommended: Apply Delay to all In-Game Scenes [Fizzi] *Applies online delay to all in-game scenes. *Dolphin netplay is no longer necessary for local practice -C2376A24 00000027 #Common/UseInGameDelay/ApplyInGameDelay.asm +C2376A24 00000026 #Common/UseInGameDelay/ApplyInGameDelay.asm 3D808034 618CDA00 7D8903A6 4E800421 3D808000 618C561C 7D8903A6 4E800421 2C030002 41820014 2C030003 4182000C -2C030004 408200FC +2C030004 408200F4 3C608048 88639D30 -2C030008 418200EC +2C030008 418200E4 3C608047 60639D64 80630000 2C030000 -408200D8 7C0802A6 +408200D0 7C0802A6 90010004 9421FF20 BE8100B0 83A10000 3C60802F 6063666C -80830000 5485863E -7CA50774 54A5801E -5484043A 7C842B78 +80830000 5485302E +38800040 7C8523D6 7C632214 83E30008 887F0000 2C030000 40810080 38610008 diff --git a/Output/Netplay/GALJ01r2.ini b/Output/Netplay/GALJ01r2.ini index 7cfef3f3..5aeebdb0 100644 --- a/Output/Netplay/GALJ01r2.ini +++ b/Output/Netplay/GALJ01r2.ini @@ -3115,7 +3115,7 @@ C22600A8 0000000B #Online/Menus/CSS/PreventColorChange.asm 618C028C 7D8903A6 4E800420 3C60803F 60000000 00000000 -C226699C 00000029 #Online/Menus/CSS/SceneLoadCSS.asm +C226699C 00000028 #Online/Menus/CSS/SceneLoadCSS.asm 4800002C 4E800021 C2E00000 41A00000 00000000 3DCCCCCD @@ -3124,7 +3124,7 @@ C2E00000 41A00000 53000000 900DB638 3C608048 80639D30 5463443E 2C030008 -40820100 7C0802A6 +408200F8 7C0802A6 90010004 9421FF20 BE8100B0 4BFFFFB1 7FC802A6 3D808000 @@ -3142,11 +3142,10 @@ BE8100B0 4BFFFFB1 3D808037 618CF1E4 7D8903A6 4E800421 907F0000 886DAFA0 -2C030003 40820030 +2C030003 40820028 3C608026 606352F4 -80830000 5485863E -7CA50774 54A5801E -5484043A 7C842B78 +80830000 5485302E +38800040 7C8523D6 7C632214 88630008 987F001A 387E0010 3D808001 618C6BE0 @@ -3157,7 +3156,7 @@ BE8100B0 4BFFFFB1 BA8100B0 800100E4 382100E0 7C0803A6 60000000 00000000 -C2264118 0000001C #Online/Menus/CSS/SkipReturnToCssSound.asm +C2264118 0000001B #Online/Menus/CSS/SkipReturnToCssSound.asm 7C0802A6 90010004 9421FF00 BC610008 886DAFA3 2C030000 @@ -3167,12 +3166,11 @@ C2264118 0000001C #Online/Menus/CSS/SkipReturnToCssSound.asm 8BC30001 3D808037 618CF1B0 7D8903A6 4E800421 2C1E0000 -40820060 4800007C +40820058 48000074 38600000 986DAFA3 3C608023 6063CCA4 -80830000 5485863E -7CA50774 54A5801E -5484043A 7C842B78 +80830000 5485302E +38800040 7C8523D6 7C632214 83E3000C 807F0006 3D808037 618CF1B0 7D8903A6 @@ -3585,16 +3583,15 @@ BA8100B0 800100E4 7D8903A6 4E800420 60000000 00000000 0423CF9C 2C1B0008 #Online/Menus/CSS/TextEntryScreen/Display8Characters.asm -C223CF80 0000000E #Online/Menus/CSS/TextEntryScreen/HandleAutocompleteText.asm +C223CF80 0000000D #Online/Menus/CSS/TextEntryScreen/HandleAutocompleteText.asm 48000010 4E800021 00000000 8E9196FF 88CDAFA3 2C060000 -4182004C 4BFFFFE9 +41820044 4BFFFFE9 7CC802A6 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7CE32214 +5485302E 38800040 +7C8523D6 7CE32214 80E7000C 88E70004 7C1B3800 4180000C 3BA60004 48000008 @@ -3608,16 +3605,15 @@ C223B3D0 00000006 #Online/Menus/CSS/TextEntryScreen/HandleDescriptionText.asm 48000008 7FE4FB78 60000000 00000000 0423C6C0 4800004C #Online/Menus/CSS/TextEntryScreen/HandleJpSpace.asm -C223E994 00000027 #Online/Menus/CSS/TextEntryScreen/InitNameEntry.asm +C223E994 00000026 #Online/Menus/CSS/TextEntryScreen/InitNameEntry.asm 886DAFA3 2C030000 -41820128 38600001 +41820120 38600001 986DAFCB 48000004 7C0802A6 90010004 9421FF20 BE8100B0 3C608023 6063CCA4 -80830000 5485863E -7CA50774 54A5801E -5484043A 7C842B78 +80830000 5485302E +38800040 7C8523D6 7F232214 3860000A 3D808037 618CF1E4 7D8903A6 4E800421 @@ -3648,26 +3644,24 @@ C223E994 00000027 #Online/Menus/CSS/TextEntryScreen/InitNameEntry.asm 800100E4 382100E0 7C0803A6 48000004 38600000 00000000 -C223C588 0000000C #Online/Menus/CSS/TextEntryScreen/NameEntryThinkOneShot.asm +C223C588 0000000B #Online/Menus/CSS/TextEntryScreen/NameEntryThinkOneShot.asm 886DAFA3 2C030000 -41820050 3C608023 +41820048 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7CC32214 +5485302E 38800040 +7C8523D6 7CC32214 80E6000C 88670005 2C030000 4082001C 38600001 98670005 38660008 7C6903A6 38600003 4E800421 886DB56C 00000000 -C223CD74 00000011 #Online/Menus/CSS/TextEntryScreen/OnBPressAutoComplete.asm +C223CD74 00000010 #Online/Menus/CSS/TextEntryScreen/OnBPressAutoComplete.asm 886DAFA3 2C030000 -41820074 3C608023 +4182006C 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7C632214 +5485302E 38800040 +7C8523D6 7C632214 8083000C 88A40004 2C050000 40810030 38A5FFFF 98A40004 @@ -3683,15 +3677,14 @@ C223CA50 00000003 #Online/Menus/CSS/TextEntryScreen/OnConfirmButtonAPress.asm 3D808023 618CCC14 7D8903A6 4E800420 60000000 00000000 -C223CC14 0000001D #Online/Menus/CSS/TextEntryScreen/OnConfirmButtonHandler.asm +C223CC14 0000001C #Online/Menus/CSS/TextEntryScreen/OnConfirmButtonHandler.asm 886DAFA3 2C030000 -418200D8 7C0802A6 +418200D0 7C0802A6 90010004 9421FF20 BE8100B0 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7C632214 +5485302E 38800040 +7C8523D6 7C632214 83E3000C 887F0004 2C030000 40820038 38600003 3D808002 @@ -3713,13 +3706,12 @@ BA8100B0 800100E4 3D808023 618CCC80 7D8903A6 4E800420 38000000 00000000 -C223C33C 0000000E #Online/Menus/CSS/TextEntryScreen/OnEnterJpText.asm +C223C33C 0000000D #Online/Menus/CSS/TextEntryScreen/OnEnterJpText.asm 886DAFA3 2C030000 -41820054 3C608023 +4182004C 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7C632214 +5485302E 38800040 +7C8523D6 7C632214 8083000C 88A40004 2C050008 4080000C 38A50001 98A40004 @@ -3728,13 +3720,12 @@ C223C33C 0000000E #Online/Menus/CSS/TextEntryScreen/OnEnterJpText.asm 48000014 3D808023 618CCE4C 7D8903A6 4E800421 00000000 -C223C72C 0000000E #Online/Menus/CSS/TextEntryScreen/OnEnterText.asm +C223C72C 0000000D #Online/Menus/CSS/TextEntryScreen/OnEnterText.asm 886DAFA3 2C030000 -41820054 3C608023 +4182004C 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7C632214 +5485302E 38800040 +7C8523D6 7C632214 8083000C 88A40004 2C050008 4080000C 38A50001 98A40004 @@ -3747,37 +3738,34 @@ C223C81C 00000003 #Online/Menus/CSS/TextEntryScreen/OnErasePress.asm 3D808023 618CCD3C 7D8903A6 4E800420 60000000 00000000 -C223CCBC 0000000B #Online/Menus/CSS/TextEntryScreen/OnLPress.asm +C223CCBC 0000000A #Online/Menus/CSS/TextEntryScreen/OnLPress.asm 886DAFA3 2C030000 -41820048 3C608023 +41820040 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7C632214 +5485302E 38800040 +7C8523D6 7C632214 38630008 7C6903A6 38600001 4E800421 3D808023 618CCE38 7D8903A6 4E800420 887C0050 00000000 -C223CCE0 0000000B #Online/Menus/CSS/TextEntryScreen/OnRPress.asm +C223CCE0 0000000A #Online/Menus/CSS/TextEntryScreen/OnRPress.asm 886DAFA3 2C030000 -41820048 3C608023 +41820040 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7C632214 +5485302E 38800040 +7C8523D6 7C632214 38630008 7C6903A6 38600002 4E800421 3D808023 618CCE38 7D8903A6 4E800420 887C0050 00000000 -C223C928 0000000D #Online/Menus/CSS/TextEntryScreen/OnRandomPress.asm +C223C928 0000000C #Online/Menus/CSS/TextEntryScreen/OnRandomPress.asm 886DAFA3 2C030000 -41820048 3C608023 +41820040 3C608023 6063CCA4 80830000 -5485863E 7CA50774 -54A5801E 5484043A -7C842B78 7C632214 +5485302E 38800040 +7C8523D6 7C632214 8083000C 9BA40004 9BBC0058 38830008 7C8903A6 38600003 @@ -6651,25 +6639,24 @@ $Recommended: Normal Lag Reduction [Hannes Mann] $Recommended: Apply Delay to all In-Game Scenes [Fizzi] *Applies online delay to all in-game scenes. *Dolphin netplay is no longer necessary for local practice -C2376A24 00000027 #Common/UseInGameDelay/ApplyInGameDelay.asm +C2376A24 00000026 #Common/UseInGameDelay/ApplyInGameDelay.asm 3D808034 618CDA00 7D8903A6 4E800421 3D808000 618C561C 7D8903A6 4E800421 2C030002 41820014 2C030003 4182000C -2C030004 408200FC +2C030004 408200F4 3C608048 88639D30 -2C030008 418200EC +2C030008 418200E4 3C608047 60639D64 80630000 2C030000 -408200D8 7C0802A6 +408200D0 7C0802A6 90010004 9421FF20 BE8100B0 83A10000 3C60802F 6063666C -80830000 5485863E -7CA50774 54A5801E -5484043A 7C842B78 +80830000 5485302E +38800040 7C8523D6 7C632214 83E30008 887F0000 2C030000 40810080 38610008 diff --git a/console_lag_pd.json b/console_lag_pd.json index 96593ff1..a7044ae3 100644 --- a/console_lag_pd.json +++ b/console_lag_pd.json @@ -25,4 +25,4 @@ ] } ] -} +} \ No newline at end of file