Skip to content

Commit

Permalink
Port Casper's Scare School: Spooky Sports Day dcache hack to PAL
Browse files Browse the repository at this point in the history
It's the same hack as we already have for the NTSC version,
except the instruction we overwrite is at a different location.
  • Loading branch information
JosJuice committed Apr 30, 2019
1 parent d2d8d7c commit 25eca53
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions Data/Sys/GameSettings/RX4PMT.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# RX4PMT - Casper's Scare School: Spooky Sports Day

[OnFrame]
# Work around a dcache issue by preventing the game from doing something pointless.
#
# The game's DVD read function writes 0x87654321 to the entire read buffer and 0x12345678 to the
# last 4 bytes. It then calls DVDReadAsync() and without waiting for the read to complete at all,
# it checks if the last 4 bytes are still 0x12345678. If they are, then the game fails.
#
# The check always passes on console because DVDReadAsync() -> issueCommand() calls
# DCInvalidateRange() (dcbi) on the read buffer.
#
# Dolphin cannot emulate this without an extremely significant performance hit.
#
# .text:80164B8C lis r7, game_dvd_read_callback@ha
# .text:80164B90 stw r0, 0(r17) # write 0x12345678 to the end of the buffer
# .text:80164B94 mr r5, read_length # length
# .text:80164B98 mr r6, read_offset # offset
# .text:80164B9C addi r3, this, file.file_info # file_info
# .text:80164BA0 subi r4, r4, dvd_read_buf@l # addr
# .text:80164BA4 addi r7, r7, game_dvd_read_callback@l # callback
# .text:80164BA8 li r8, 2 # unknown
# .text:80164BAC bl DVDReadAsync
#
$Fix file reads (dcache bypass)
0x80164b90:dword:0x60000000

0 comments on commit 25eca53

Please sign in to comment.