Skip to content

Commit e141208

Browse files
committed
add: Add xfromserv variant of mcserv
1 parent 9521169 commit e141208

7 files changed

Lines changed: 66 additions & 4 deletions

File tree

iop/memorycard/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ SUBDIRS = \
1414
mcserv \
1515
mcserv-1300 \
1616
vmcman \
17-
xfromman
17+
xfromman \
18+
xfromserv
1819

1920
include $(PS2SDKSRC)/Defs.make
2021
include $(PS2SDKSRC)/Rules.make

iop/memorycard/mcserv/Makefile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ IOP_BIN_ALTNAMES ?= mcserv-1400.irx mcserv-2000.irx
1111
# Build the newer version of the memory card server module?
1212
MCMAN_BUILDING_XMCSERV ?= 1
1313

14+
# Build the external flash ROM server module?
15+
MCMAN_BUILDING_XFROMSERV ?= 0
16+
1417
# IOP_CFLAGS += -DSIO_DEBUG -DDEBUG
1518

1619
IOP_IMPORT_INCS += \
@@ -30,6 +33,10 @@ ifneq (x$(MCMAN_BUILDING_XMCSERV),x0)
3033
IOP_CFLAGS += -DBUILDING_XMCSERV
3134
endif
3235

36+
ifneq (x$(MCMAN_BUILDING_XFROMSERV),x0)
37+
IOP_CFLAGS += -DBUILDING_XFROMSERV
38+
endif
39+
3340
include $(PS2SDKSRC)/Defs.make
3441
include $(PS2SDKSRC)/iop/Rules.bin.make
3542
include $(PS2SDKSRC)/iop/Rules.make

iop/memorycard/mcserv/src/exports.tab

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,16 @@
11

2+
#ifdef BUILDING_XFROMSERV
3+
DECLARE_EXPORT_TABLE(xfromsrv, 1, 1)
4+
DECLARE_EXPORT(_start)
5+
DECLARE_EXPORT(_dummy)
6+
DECLARE_EXPORT(_dummy)
7+
DECLARE_EXPORT(_dummy)
8+
DECLARE_EXPORT(_start)
9+
DECLARE_EXPORT(_dummy)
10+
DECLARE_EXPORT(_dummy)
11+
DECLARE_EXPORT(_dummy)
12+
END_EXPORT_TABLE
13+
#else
214
DECLARE_EXPORT_TABLE(mcserv, 1, 1)
315
DECLARE_EXPORT(_start)
416
DECLARE_EXPORT(_dummy)
@@ -9,5 +21,6 @@ DECLARE_EXPORT_TABLE(mcserv, 1, 1)
921
DECLARE_EXPORT(_dummy)
1022
DECLARE_EXPORT(_dummy)
1123
END_EXPORT_TABLE
24+
#endif
1225

1326
void _dummy() {}

iop/memorycard/mcserv/src/imports.lst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ I_CpuResumeIntr
2323
intrman_IMPORTS_end
2424

2525
#ifdef BUILDING_XMCSERV
26+
#ifdef BUILDING_XFROMSERV
27+
xfromman_IMPORTS_start
28+
#else
2629
xmcman_IMPORTS_start
30+
#endif
2731
I_McDetectCard
2832
I_McOpen
2933
I_McClose
@@ -53,7 +57,11 @@ I_McGetFormat
5357
I_McGetEntSpace
5458
I_McGetModuleInfo
5559
I_McCheckBlock
60+
#ifdef BUILDING_XFROMSERV
61+
xfromman_IMPORTS_end
62+
#else
5663
xmcman_IMPORTS_end
64+
#endif
5765
#else
5866
mcman_IMPORTS_start
5967
I_McDetectCard

iop/memorycard/mcserv/src/mcserv.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,15 @@ static mcRpcStat_t rpc_stat __attribute__((aligned(16)));
2828
#define MCSERV_BUFSIZE 8192
2929
static u8 mcserv_buf[MCSERV_BUFSIZE] __attribute__((aligned(16)));
3030

31+
#ifdef BUILDING_XFROMSERV
32+
#define MCSERV_RPC_ID 0x80000480
33+
extern struct irx_export_table _exp_xfromsrv;
34+
#define MCSERV_EXPORT_TABLE (&_exp_xfromsrv)
35+
#else
36+
#define MCSERV_RPC_ID 0x80000400
3137
extern struct irx_export_table _exp_mcserv;
38+
#define MCSERV_EXPORT_TABLE (&_exp_mcserv)
39+
#endif
3240

3341
//--------------------------------------------------------------
3442
int _start(int argc, char *argv[], void *startaddr, ModuleInfo_t *mi)
@@ -56,7 +64,7 @@ int _start(int argc, char *argv[], void *startaddr, ModuleInfo_t *mi)
5664
}
5765

5866
CpuSuspendIntr(&state);
59-
release_res = ReleaseLibraryEntries(&_exp_mcserv);
67+
release_res = ReleaseLibraryEntries(MCSERV_EXPORT_TABLE);
6068
CpuResumeIntr(state);
6169
if (release_res == 0 || release_res == -213)
6270
{
@@ -71,7 +79,7 @@ int _start(int argc, char *argv[], void *startaddr, ModuleInfo_t *mi)
7179

7280
// Register mcserv dummy export table
7381
DPRINTF("registering exports...\n");
74-
if (RegisterLibraryEntries(&_exp_mcserv) != 0)
82+
if (RegisterLibraryEntries(MCSERV_EXPORT_TABLE) != 0)
7583
goto err_out;
7684

7785
CpuEnableIntr();
@@ -111,7 +119,7 @@ void thread_rpc_S_0400(void* arg)
111119

112120
sceSifInitRpc(0);
113121
sceSifSetRpcQueue(&mcserv_qdS_0400, GetThreadId());
114-
sceSifRegisterRpc(&mcserv_sdS_0400, 0x80000400, (void *)cb_rpc_S_0400, &mcserv_rpc_buf, NULL, NULL, &mcserv_qdS_0400);
122+
sceSifRegisterRpc(&mcserv_sdS_0400, MCSERV_RPC_ID, (void *)cb_rpc_S_0400, &mcserv_rpc_buf, NULL, NULL, &mcserv_qdS_0400);
115123
sceSifRpcLoop(&mcserv_qdS_0400);
116124
}
117125

iop/memorycard/mcserv/src/mcserv.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,14 @@
2222

2323
//#define DEBUG
2424

25+
#ifdef BUILDING_XFROMSERV
26+
#define MODNAME "xfrmserv"
27+
// NOTE: feature level is at mcserv 0x208
28+
#define MODVER 0x301
29+
#else
2530
#define MODNAME "mcserv"
2631
#define MODVER 0x208
32+
#endif
2733

2834
#ifdef SIO_DEBUG
2935
#include <sior.h>

iop/memorycard/xfromserv/Makefile

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# _____ ___ ____ ___ ____
2+
# ____| | ____| | | |____|
3+
# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
4+
#-----------------------------------------------------------------------
5+
# Copyright 2001-2004, ps2dev - http://www.ps2dev.org
6+
# Licenced under Academic Free License version 2.0
7+
# Review ps2sdk README & LICENSE files for further details.
8+
9+
IOP_BIN_ALTNAMES = xfromsrv.irx xfrmserv.irx
10+
11+
IOP_SRC_DIR = $(PS2SDKSRC)/iop/memorycard/mcserv/src/
12+
IOP_INC_DIR = $(PS2SDKSRC)/iop/memorycard/mcserv/include/
13+
14+
IOP_BIN ?= xfromserv.irx
15+
16+
MCMAN_BUILDING_XMCSERV ?= 1
17+
MCMAN_BUILDING_XFROMSERV ?= 1
18+
19+
include $(PS2SDKSRC)/iop/memorycard/mcserv/Makefile

0 commit comments

Comments
 (0)