Skip to content

Commit fc2698c

Browse files
committed
Added support for 3.02D
1 parent 3574d55 commit fc2698c

6 files changed

Lines changed: 32 additions & 1 deletion

File tree

.github/workflows/compile.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ jobs:
2525
mv build/exploit.iso release/exploit_3.02E.iso
2626
./compile.sh 3.02C
2727
mv build/exploit.iso release/exploit_3.02C.iso
28+
./compile.sh 3.02D
29+
mv build/exploit.iso release/exploit_3.02D.iso
2830
2931
- name: Upload ISO Artifact
3032
uses: actions/upload-artifact@v6

compile.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ elif [[ "$1" == "3.02e" || "$1" == "3.02E" ]]; then
1414
elif [[ "$1" == "3.02c" || "$1" == "3.02C" ]]; then
1515
echo "Building for DVD Player v3.02C"
1616
dvd_ver="302C"
17+
elif [[ "$1" == "3.02d" || "$1" == "3.02D" ]]; then
18+
echo "Building for DVD Player v3.02D"
19+
dvd_ver="302D"
1720
else
1821
echo "Building for DVD Player v3.00E/A"
1922
fi

src/code/code.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ static void setup_pointers() {
1414
u32 *video_ts_ifo_300j = (u32 *)0x00684920;
1515
u32 *video_ts_ifo_302e = (u32 *)0x0090c310;
1616
u32 *video_ts_ifo_302c = (u32 *)0x006ee290;
17+
u32 *video_ts_ifo_302d = (u32 *)0x00678410;
1718
if (video_ts_ifo_300e[0] == 0x45444956) {
1819
sceSifSyncIop = (sceSifSyncIop_t)0x00283460;
1920
sceSifResetIop = (sceSifResetIop_t)0x002832f8;
@@ -95,6 +96,22 @@ static void setup_pointers() {
9596
_sceCd_c_cb_sem = (int *)0x004d4430;
9697
_sceCd_cd_ncmd = (void *)0x004d55d0;
9798
_sceCd_ncmd_semid = (int *)0x004d4428;
99+
} else if (video_ts_ifo_302d[0] == 0x45444956) {
100+
sceSifSyncIop = (sceSifSyncIop_t)0x00284d90;
101+
sceSifResetIop = (sceSifResetIop_t)0x00284c28;
102+
sceSifInitRpc = (sceSifInitRpc_t)0x00207ce0;
103+
sceSifExitRpc = (sceSifExitRpc_t)0x00207e80;
104+
sceSifCallRpc = (sceSifCallRpc_t)0x00208520;
105+
sceSifWriteBackDCache = (sceSifWriteBackDCache_t)0x0020a040;
106+
sceCdNCmdDiskReady = (sceCdNCmdDiskReady_t)0x00258ae0;
107+
_sceCd_ncmd_prechk = (_sceCd_ncmd_prechk_t)0x00258970;
108+
_sceCd_cd_read_intr = (_sceCd_cd_read_intr_t)0x00258338;
109+
sceCdSync = (sceCdSync_t)0x00258b78;
110+
sceCdDiskReady = (sceCdDiskReady_t)0x00259078;
111+
sceCdCbfunc_num = (int *)0x004d42d4;
112+
_sceCd_c_cb_sem = (int *)0x004d42b0;
113+
_sceCd_cd_ncmd = (void *)0x004d5450;
114+
_sceCd_ncmd_semid = (int *)0x004d42a8;
98115
}
99116
}
100117

src/injector/injector.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,13 @@ int generate_exploit_pgc(char *out_path, uint32_t off, uint32_t len, uint32_t ea
158158
#define JUMP_POINTER 0x006f31c8
159159
#define CMD_DATA_ADDR 0x01380f30
160160
#define IFO_BUFFER 0x01384780
161+
#elif V302D
162+
#define VM_CMD_PARSER_SWITCH_ADDR 0x00678478
163+
#define VM_ADDR 0x01311140
164+
#define VOB_BUFFER_ADDR 0x01319b40
165+
#define JUMP_POINTER 0x0067d348
166+
#define CMD_DATA_ADDR 0x0130b0b0
167+
#define IFO_BUFFER 0x0130e900
161168
#endif
162169

163170
#define CTRL_DATA_ADDR (VOB_BUFFER_ADDR + 0x0c + 0x629)

src/jump/jump.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#define RBI_ADDR 0x002566d8
1111
#elif V302C
1212
#define RBI_ADDR 0x002566b8
13+
#elif V302D
14+
#define RBI_ADDR 0x002566b8
1315
#endif
1416

1517
typedef int (*readBufferInternal_t)(char *, int, int, void *, int, int);

src/ld/jump.ld

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ BV302A = 0;
2121
BV302E = 0x015ae110;
2222
BV302K = 0;
2323
BV302G = 0;
24-
BV302D = 0;
24+
BV302D = 0x0131a190;
2525
BV302C = 0x01390010;
2626

2727
BASE = (

0 commit comments

Comments
 (0)