Skip to content

Commit f8ea780

Browse files
Add speedup, small block memory block, gentle dice throw, and 98 stock exploit fixes to CSWT and CSTP, and add board and character unlock codes to CSLT. Also, cleanup modpacks and remove unused files.
1 parent 34cd6dd commit f8ea780

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+172
-52
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ _site/
3232
### cmpres and brstm ###
3333
*.brstm
3434
*.cmpres
35-
!_modpacks/resources/*/*/*.cmpres
35+
!_modpacks/resources/*/*/*/*.cmpres
3636
# exclude arc files but allow them for modpacks
3737
*.arc
3838
!_modpacks/resources/*/*/*.arc
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
+cswtpycsmm
1+
+better_battery_indicator
2+
+cswt
23
+ChangeCurtain
34
+NewTitleScreen
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
+cstppycsmm
1+
+better_battery_indicator
2+
+cstp
23
+ChangeCurtain
34
+NewTitleScreen
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
+cswtpycsmm
1+
+better_battery_indicator
2+
+cswt
23
+ChangeCurtain
34
+NewTitleScreen

_modpacks/resources/cslt/cslt.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,29 @@ def replTitleImages(locale, arcDir, modpackDir):
1414
#print(tplPath, file=sys.stderr)
1515
pycsmm.convertPngToTpl(dirEntry.path, tplPath)
1616

17+
MODID = __name__
18+
1719
class Mod(pycsmm.CSMMMod, pycsmm.GeneralInterface, pycsmm.ArcFileInterface, pycsmm.UiMessageInterface):
1820
def __init__(self):
1921
pycsmm.CSMMMod.__init__(self)
2022
pycsmm.GeneralInterface.__init__(self)
2123
pycsmm.ArcFileInterface.__init__(self)
2224
pycsmm.UiMessageInterface.__init__(self)
25+
2326
def modId(self):
24-
return "cslt"
27+
return MODID
28+
29+
def saveFiles(self, root, gameInstance, modList):
30+
mapper = gameInstance.addressMapper()
31+
with open(os.path.join(root, 'sys/main.dol'), 'rb+') as mainDol:
32+
# unlock all characters
33+
mainDol.seek(mapper.boomToFileAddress(0x80210a4c))
34+
mainDol.write(b'\x3C\x60\xFF\xFF\x60\x63\xFF\xFF\x3C\x80\xFF\xFF\x60\x84\xFF\xFF\x60\x00\x00\x00')
35+
# unlock all boards
36+
mainDol.seek(mapper.boomToFileAddress(0x8020f8d8))
37+
mainDol.write(b'\x38\x60\x00\x01')
38+
mainDol.seek(mapper.boomToFileAddress(0x8020f91c))
39+
mainDol.write(b'\x38\x60\x00\x01')
2540

2641
def modifyArcFile(self):
2742
localeToTitleArcFile = {
@@ -33,10 +48,11 @@ def modifyArcFile(self):
3348
'it': 'files/game/langIT/game_sequence_title_IT.arc',
3449
'uk': 'files/game/langUK/game_sequence_title_UK.arc',
3550
}
36-
return {
37-
arcFile:
38-
lambda root, gameInstance, modList, arcDir, locale=locale, modpackDir=self.modpackDir(): replTitleImages(locale, arcDir, modpackDir)
39-
for locale, arcFile in localeToTitleArcFile.items()
40-
}
51+
52+
return {
53+
arcFile:
54+
lambda root, gameInstance, modList, arcDir, locale=locale, modpackDir=self.modpackDir(): replTitleImages(locale, arcDir, modpackDir)
55+
for locale, arcFile in localeToTitleArcFile.items()
56+
}
4157

4258
mod = Mod()
Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
11
[
2-
{
3-
"from": "common/common_curtain.cmpres",
4-
"to": "files/common/common_curtain.cmpres"
5-
},
6-
{
7-
"from": "common_langDE/common_curtain_DE.cmpres",
8-
"to": "files/common/langDE/common_curtain_DE.cmpres"
9-
},
10-
{
11-
"from": "common_langEN/common_curtain_EN.cmpres",
12-
"to": "files/common/langEN/common_curtain_EN.cmpres"
13-
},
14-
{
15-
"from": "common_langES/common_curtain_ES.cmpres",
16-
"to": "files/common/langES/common_curtain_ES.cmpres"
17-
},
18-
{
19-
"from": "common_langFR/common_curtain_FR.cmpres",
20-
"to": "files/common/langFR/common_curtain_FR.cmpres"
21-
},
22-
{
23-
"from": "common_langIT/common_curtain_IT.cmpres",
24-
"to": "files/common/langIT/common_curtain_IT.cmpres"
25-
},
26-
{
27-
"from": "common_langUK/common_curtain_UK.cmpres",
28-
"to": "files/common/langUK/common_curtain_UK.cmpres"
29-
},
30-
{
31-
"from": "game/game_result.brres",
32-
"to": "files/game/game_result.brres"
33-
}
34-
]
2+
{
3+
"from": "common/common_curtain.cmpres",
4+
"to": "files/common/common_curtain.cmpres"
5+
},
6+
{
7+
"from": "common/langDE/common_curtain_DE.cmpres",
8+
"to": "files/common/langDE/common_curtain_DE.cmpres"
9+
},
10+
{
11+
"from": "common/langEN/common_curtain_EN.cmpres",
12+
"to": "files/common/langEN/common_curtain_EN.cmpres"
13+
},
14+
{
15+
"from": "common/langES/common_curtain_ES.cmpres",
16+
"to": "files/common/langES/common_curtain_ES.cmpres"
17+
},
18+
{
19+
"from": "common/langFR/common_curtain_FR.cmpres",
20+
"to": "files/common/langFR/common_curtain_FR.cmpres"
21+
},
22+
{
23+
"from": "common/langIT/common_curtain_IT.cmpres",
24+
"to": "files/common/langIT/common_curtain_IT.cmpres"
25+
},
26+
{
27+
"from": "common/langUK/common_curtain_UK.cmpres",
28+
"to": "files/common/langUK/common_curtain_UK.cmpres"
29+
},
30+
{
31+
"from": "game/game_result.brres",
32+
"to": "files/game/game_result.brres"
33+
}
34+
]
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
[
2+
{
3+
"from": "common/common_dialog.cmparc",
4+
"to": "files/common/common_dialog.cmparc"
5+
},
6+
{
7+
"from": "common/common_dialog.cmparc",
8+
"to": "files/common/langDE/common_dialog_DE.cmparc"
9+
},
10+
{
11+
"from": "common/common_dialog.cmparc",
12+
"to": "files/common/langEN/common_dialog_EN.cmparc"
13+
},
14+
{
15+
"from": "common/common_dialog.cmparc",
16+
"to": "files/common/langES/common_dialog_ES.cmparc"
17+
},
18+
{
19+
"from": "common/common_dialog.cmparc",
20+
"to": "files/common/langFR/common_dialog_FR.cmparc"
21+
},
22+
{
23+
"from": "common/common_dialog.cmparc",
24+
"to": "files/common/langIT/common_dialog_IT.cmparc"
25+
},
26+
{
27+
"from": "common/common_dialog.cmparc",
28+
"to": "files/common/langUK/common_dialog_UK.cmparc"
29+
}
30+
]
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import pycsmm
2+
import os
3+
import json
4+
import shutil
5+
6+
MODID = __name__
7+
8+
class Mod(pycsmm.CSMMMod, pycsmm.GeneralInterface):
9+
def __init__(self):
10+
pycsmm.CSMMMod.__init__(self)
11+
pycsmm.GeneralInterface.__init__(self)
12+
def modId(self):
13+
return MODID
14+
def saveFiles(self, root, gameInstance, modList):
15+
modpack_dir = self.modpackDir()
16+
with open(os.path.join(modpack_dir, f'{MODID}.json'), 'rb') as config_file:
17+
config = json.load(config_file)
18+
for command in config:
19+
copy_from = os.path.join(modpack_dir, command["from"])
20+
copy_to = os.path.join(root, command["to"])
21+
if os.path.isdir(copy_from):
22+
shutil.copytree(copy_from, copy_to, dirs_exist_ok=True)
23+
else:
24+
shutil.copy(copy_from, copy_to)
25+
26+
mod = Mod()
841 KB
Binary file not shown.

0 commit comments

Comments
 (0)