Skip to content

Commit

Permalink
Merge branch 'main' into cecie-mod
Browse files Browse the repository at this point in the history
  • Loading branch information
bucanero committed Jun 28, 2024
2 parents d7bf0c1 + c75cf88 commit 102d49b
Show file tree
Hide file tree
Showing 12 changed files with 154 additions and 20 deletions.
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,19 @@ All notable changes to the `apollo-ps4` project will be documented in this file.

## [Unreleased]()

## [v1.4.5](https://github.com/bucanero/apollo-ps4/releases/tag/v1.4.5) - 2024-06-29

### Added

* 9.60/10.00/10.01 firmware support (thanks to @BestPig)
- GoldHEN payload is required
* New cheat codes
- Shin Megami Tensei V
* Custom save decryption support
- Shin Megami Tensei V (AES-ECB)
* Custom checksum support
- Shin Megami Tensei V (SHA1)

## [v1.4.4](https://github.com/bucanero/apollo-ps4/releases/tag/v1.4.4) - 2024-05-25

### Added
Expand Down
20 changes: 14 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Package metadata.
TITLE := Apollo Save Tool
VERSION := 01.44
VERSION := 01.45
TITLE_ID := APOL00004
CONTENT_ID := IV0000-APOL00004_00-APOLLO0000000PS4

Expand All @@ -25,13 +25,11 @@ LIBMODULES := $(wildcard sce_module/*)
# Root vars
TOOLCHAIN := $(OO_PS4_TOOLCHAIN)
PROJDIR := source
#COMMONDIR := $(TOOLCHAIN)/samples/_common
INTDIR := build/x64/Debug

# Define objects to build
CFILES := $(wildcard $(PROJDIR)/*.c)
CPPFILES := $(wildcard $(PROJDIR)/*.cpp)
#COMMONFILES := $(wildcard $(COMMONDIR)/*.cpp)
OBJS := $(patsubst $(PROJDIR)/%.c, $(INTDIR)/%.o, $(CFILES)) $(patsubst $(PROJDIR)/%.cpp, $(INTDIR)/%.o, $(CPPFILES))

# Define final C/C++ flags
Expand All @@ -58,7 +56,7 @@ ifeq ($(UNAME_S),Darwin)
CDIR := macos
endif

all: $(CONTENT_ID).pkg
all: $(CONTENT_ID).pkg ## Build the package.

$(CONTENT_ID).pkg: pkg.gp4
$(TOOLCHAIN)/bin/$(CDIR)/PkgTool.Core pkg_build $< .
Expand Down Expand Up @@ -89,13 +87,23 @@ $(INTDIR)/%.o: $(PROJDIR)/%.c
$(INTDIR)/%.o: $(PROJDIR)/%.cpp
$(CCX) $(CXXFLAGS) -o $@ $<

clean:
clean: ## Remove all generated files.
rm -f $(CONTENT_ID).pkg pkg.gp4 sce_sys/param.sfo eboot.bin \
$(INTDIR)/$(PROJDIR).elf $(INTDIR)/$(PROJDIR).oelf $(OBJS)

#---------------------------------------------------------------------------------
createzip:
createzip: ## Download the latest appdata.zip cheat pack.
@echo "Downloading appdata.zip ..."
@[ -d assets/misc ] || mkdir -p assets/misc
@rm -fr assets/misc/appdata.zip
@curl -L "https://bucanero.github.io/apollo-patches/PS4/apollo-ps4-update.zip" > assets/misc/appdata.zip

help: ## Display this help message.
@echo "Usage: make [target]"
@echo ""
@echo "Available targets:"
@echo " all - Build the package."
@echo " clean - Remove all generated files."
@echo " createzip - Download the latest appdata.zip cheat pack."
@echo " help - Display this help message."
@echo ""
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,21 @@ This homebrew app allows you to download, unlock, patch, and resign save-game fi

![image](./docs/screenshots/screenshot-main.jpg)

<details>
<summary>Screenshots Gallery (Click to Expand)</summary>

![image](./docs/screenshots/screenshot-saves.jpg)
---
![image](./docs/screenshots/screenshot-savegame.jpg)
---
![image](./docs/screenshots/screenshot-trophies.jpg)
---
![image](./docs/screenshots/screenshot-settings.jpg)
---
![image](./docs/screenshots/screenshot-xmb.jpg)

</details>

**Comments, ideas, suggestions?** You can [contact me](https://github.com/bucanero/) on [Twitter](https://twitter.com/dparrino) and on [my website](http://www.bucanero.com.ar/).

# Features
Expand Down
10 changes: 10 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,16 @@ This homebrew app allows you to download, unlock, patch, and resign save-game fi

![image](./screenshots/screenshot-main.jpg)

![image](./screenshots/screenshot-saves.jpg)

![image](./screenshots/screenshot-savegame.jpg)

![image](./screenshots/screenshot-trophies.jpg)

![image](./screenshots/screenshot-settings.jpg)

![image](./screenshots/screenshot-xmb.jpg)

**Comments, ideas, suggestions?** You can [contact me](https://github.com/bucanero/) on [Twitter](https://twitter.com/dparrino) and on [my website](http://www.bucanero.com.ar/).

# Features
Expand Down
Binary file added docs/screenshots/screenshot-savegame.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/screenshots/screenshot-saves.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/screenshots/screenshot-settings.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/screenshots/screenshot-trophies.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/screenshots/screenshot-xmb.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
84 changes: 76 additions & 8 deletions include/orbis_patches.h
Original file line number Diff line number Diff line change
Expand Up @@ -148,8 +148,8 @@ const orbis_patch_t scesavedata_patches_900[] = {
const orbis_patch_t scesavedata_patches_1100[] = {
{0x00355E8, "\x00", 1}, // 'sce_' patch
// {0x0034679, "\x00", 1}, // patch commented out as idk WTF it does
{0x0033E49, "\x00", 1},
{0x0035AA6, "\x00", 1},
{0x0033E49, "\x00", 1},
{0x0035AA6, "\x00", 1},
{0x0000FB8, "\x1F", 1}, // sb
{0, NULL, 0},
};
Expand All @@ -166,7 +166,7 @@ const orbis_patch_t shellcore_patches_505[] = {
{0x06A349, "\x90\x90", 2}, // ^
{0x0686AE, "\x90\x90\x90\x90\x90\x90", 6}, // something something patches...
{0x067FCA, "\x90\x90\x90\x90\x90\x90", 6}, // don't even remember doing this
{0x067798, "\x90\x90", 2}, //nevah jump
{0x067798, "\x90\x90", 2}, //nevah jump
{0x0679D5, "\x90\xE9", 2}, //always jump
{0, NULL, 0}
};
Expand All @@ -180,7 +180,7 @@ const orbis_patch_t shellcore_patches_672[] = {
{0x0007379E, "\x90\x90", 2}, // ^
{0x00070C38, "\x90\x90\x90\x90\x90\x90", 6}, // something something patches...
{0x00070855, "\x90\x90\x90\x90\x90\x90", 6}, // don't even remember doing this
{0x00070054, "\x90\x90", 2}, //nevah jump
{0x00070054, "\x90\x90", 2}, //nevah jump
{0x00070260, "\x90\xE9", 2}, //always jump
{0, NULL, 0}
};
Expand All @@ -194,7 +194,7 @@ const orbis_patch_t shellcore_patches_702[] = {
{0x0006FF5F, "\x90\x90", 2}, // ^
{0x0006D058, "\x90\x90\x90\x90\x90\x90", 6}, // something something patches...
{0x0006C971, "\x90\x90\x90\x90\x90\x90", 6}, // don't even remember doing this
{0x0006C1A4, "\x90\x90", 2}, //nevah jump
{0x0006C1A4, "\x90\x90", 2}, //nevah jump
{0x0006C40C, "\x90\xE9", 2}, //always jump
{0, NULL, 0}
};
Expand All @@ -208,7 +208,7 @@ const orbis_patch_t shellcore_patches_75x[] = {
{0x0006D26D, "\x90\x90", 2}, // ^
{0x0006B338, "\x90\x90\x90\x90\x90\x90", 6}, // something something patches...
{0x0006AC2D, "\x90\x90\x90\x90\x90\x90", 6}, // don't even remember doing this
{0x0006A494, "\x90\x90", 2}, //nevah jump
{0x0006A494, "\x90\x90", 2}, //nevah jump
{0x0006A6F0, "\x90\xE9", 2}, //always jump
{0, NULL, 0}
};
Expand All @@ -225,11 +225,79 @@ const orbis_patch_t shellcore_patches_900[] = {
{0x0006defe, "\x90\x90", 2}, // ^ (thanks to GRModSave_Username)
{0x0006C0A8, "\x90\x90\x90\x90\x90\x90", 6}, // something something patches...
{0x0006BA62, "\x90\x90\x90\x90\x90\x90", 6}, // don't even remember doing this
{0x0006B2C4, "\x90\x90", 2}, //nevah jump
{0x0006B2C4, "\x90\x90", 2}, //nevah jump
{0x0006B51E, "\x90\xE9", 2}, //always jump
{0, NULL, 0}
};

/* 9.60 patches by BestPig */
const orbis_patch_t shellcore_patches_960[] = {
{0x0E1BBE9, "\x00", 1}, // 'sce_sdmemory' patch 1
{0x0E1BC28, "\x00", 1}, // 'sce_sdmemory1' patch
{0x0E1BC36, "\x00", 1}, // 'sce_sdmemory2' patch
{0x0E1BC44, "\x00", 1}, // 'sce_sdmemory3' patch
{0x08B0BC0, "\x48\x31\xC0\xC3", 4}, //verify keystone patch
{0x006B610, "\x31\xC0\xC3", 3}, //transfer mount permission patch eg mount foreign saves with write permission
{0x00C6F60, "\x31\xC0\xC3", 3}, //patch psn check to load saves saves foreign to current account
{0x006CF85, "\x90\x90", 2}, // ^ (thanks to GRModSave_Username)
{0x006B157, "\x90\x90\x90\x90\x90\x90", 6}, // something something patches...
{0x006AB12, "\x90\x90\x90\x90\x90\x90", 6}, // don't even remember doing this
{0x006A374, "\x90\x90", 2}, //nevah jump
{0x006A5CE, "\xE9\xC8\x00", 3}, //always jump
{0, NULL, 0}
};

/* 10.00 patches by BestPig */
const orbis_patch_t shellcore_patches_1000[] = {
{0x0E0FE39, "\x00", 1}, // 'sce_sdmemory' patch 1
{0x0E0FE78, "\x00", 1}, // 'sce_sdmemory1' patch
{0x0E0FE86, "\x00", 1}, // 'sce_sdmemory2' patch
{0x0E0FE94, "\x00", 1}, // 'sce_sdmemory3' patch
{0x08A7510, "\x48\x31\xC0\xC3", 4}, //verify keystone patch
{0x006B6A0, "\x31\xC0\xC3", 3}, //transfer mount permission patch eg mount foreign saves with write permission
{0x00C70A0, "\x31\xC0\xC3", 3}, //patch psn check to load saves saves foreign to current account
{0x006D015, "\x90\x90", 2}, // ^ (thanks to GRModSave_Username)
{0x006B1E7, "\x90\x90\x90\x90\x90\x90", 6}, // something something patches...
{0x006AbA2, "\x90\x90\x90\x90\x90\x90", 6}, // don't even remember doing this
{0x006A404, "\x90\x90", 2}, //nevah jump
{0x006A65E, "\xE9\xC8\x00", 3}, //always jump
{0, NULL, 0}
};

/* 10.01 patches by BestPig */
const orbis_patch_t shellcore_patches_1001[] = {
{0x0E0FE59, "\x00", 1}, // 'sce_sdmemory' patch 1
{0x0E0FE98, "\x00", 1}, // 'sce_sdmemory1' patch
{0x0E0FEA6, "\x00", 1}, // 'sce_sdmemory2' patch
{0x0E0FEB4, "\x00", 1}, // 'sce_sdmemory3' patch
{0x08A7520, "\x48\x31\xC0\xC3", 4}, //verify keystone patch
{0x006B6A0, "\x31\xC0\xC3", 3}, //transfer mount permission patch eg mount foreign saves with write permission
{0x00C70A0, "\x31\xC0\xC3", 3}, //patch psn check to load saves saves foreign to current account
{0x006D015, "\x90\x90", 2}, // ^ (thanks to GRModSave_Username)
{0x006B1E7, "\x90\x90\x90\x90\x90\x90", 6}, // something something patches...
{0x006ABA2, "\x90\x90\x90\x90\x90\x90", 6}, // don't even remember doing this
{0x006A404, "\x90\x90", 2}, //nevah jump
{0x006A65E, "\xE9\xC8\x00", 3}, //always jump
{0, NULL, 0}
};

/* 10.50 patches by BestPig */
const orbis_patch_t shellcore_patches_1050[] = {
{0x0E149B9, "\x00", 1}, // 'sce_sdmemory' patch 1
{0x0E149F8, "\x00", 1}, // 'sce_sdmemory1' patch
{0x0E14A06, "\x00", 1}, // 'sce_sdmemory2' patch
{0x0E14A14, "\x00", 1}, // 'sce_sdmemory3' patch
{0x08AAC00, "\x48\x31\xC0\xC3", 4}, //verify keystone patch
{0x006B630, "\x31\xC0\xC3", 3}, //transfer mount permission patch eg mount foreign saves with write permission
{0x00C7060, "\x31\xC0\xC3", 3}, //patch psn check to load saves saves foreign to current account
{0x006CFA5, "\x90\x90", 2}, // ^ (thanks to GRModSave_Username)
{0x006B177, "\x90\x90\x90\x90\x90\x90", 6}, // something something patches...
{0x006AB32, "\x90\x90\x90\x90\x90\x90", 6}, // don't even remember doing this
{0x006a394, "\x90\x90", 2}, //nevah jump
{0x006A5EE, "\xE9\xC8\x00", 3}, //always jump
{0, NULL, 0}
};

/* 11.00 WIP patches by LM and SocraticBliss */
const orbis_patch_t shellcore_patches_1100[] = {
{0x0E26439, "\x00", 1}, // 'sce_sdmemory' patch 1
Expand All @@ -242,7 +310,7 @@ const orbis_patch_t shellcore_patches_1100[] = {
{0x006CFA5, "\x90\x90", 2}, // ^ (thanks to GRModSave_Username)
{0x006B177, "\x90\x90\x90\x90\x90\x90", 6}, // something something patches...
{0x006AB32, "\x90\x90\x90\x90\x90\x90", 6}, // don't even remember doing this
{0x006A394, "\x90\x90", 2}, //nevah jump
{0x006A394, "\x90\x90", 2}, //nevah jump
{0x006A5EE, "\xE9\xC8\x00", 3}, //always jump
{0, NULL, 0}
};
2 changes: 1 addition & 1 deletion include/settings.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#define APOLLO_VERSION "1.4.4" //Apollo PS4 version (about menu)
#define APOLLO_VERSION "1.4.5" //Apollo PS4 version (about menu)

#define MENU_TITLE_OFF 45 //Offset of menu title text from menu mini icon
#define MENU_ICON_OFF 105 //X Offset to start printing menu mini icon
Expand Down
30 changes: 25 additions & 5 deletions source/orbis_jbc.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ int get_firmware_version(void)
{
int fw;

// upd_version >> 16
// upd_version >> 16
// 0x505 0x672 0x702 0x755 etc
if (sysKernelGetUpdVersion(&fw) && sysKernelGetLowerLimitUpdVersion(&fw))
{
Expand Down Expand Up @@ -392,7 +392,7 @@ int patch_save_libraries(void)
savedata_patch = scesavedata_patches_505;
shellcore_patch = shellcore_patches_505;
break;

case 0x672:
savedata_patch = scesavedata_patches_672;
shellcore_patch = shellcore_patches_672;
Expand All @@ -414,8 +414,28 @@ int patch_save_libraries(void)
savedata_patch = scesavedata_patches_900;
shellcore_patch = shellcore_patches_900;
break;

case 0x1100:

case 0x960:
savedata_patch = scesavedata_patches_1100; // 960 have the same offsets as 1100 for libSceSaveData
shellcore_patch = shellcore_patches_960;
break;

case 0x1000:
savedata_patch = scesavedata_patches_1100; // 1000 have the same offsets as 1100 for libSceSaveData
shellcore_patch = shellcore_patches_1000;
break;

case 0x1001:
savedata_patch = scesavedata_patches_1100; // 1001 have the same offsets as 1100 for libSceSaveData
shellcore_patch = shellcore_patches_1001;
break;
/*
case 0x1050:
savedata_patch = scesavedata_patches_1100; // 1050 have the same offsets as 1100 for libSceSaveData
shellcore_patch = shellcore_patches_1050;
break;
*/
case 0x1100:
savedata_patch = scesavedata_patches_1100;
shellcore_patch = shellcore_patches_1100;
break;
Expand Down Expand Up @@ -566,7 +586,7 @@ restart:;
*proc_pid = pid;
break;
}
if (pid == 1)
return 0;
Expand Down

0 comments on commit 102d49b

Please sign in to comment.