@@ -46,12 +46,20 @@ struct SetupPartStack {
4646// Retail budgets were counted at PS2 pointer widths; SetActionScript's stack and call allocations grow on PC. Zero on PS2.
4747#define CHARA_SCRIPT_RUNTIME_DELTA (((sizeof (RS_STACKDATA ) - 8 ) * 0x80 + (sizeof (RS_CALLDATA ) - 12 ) * 0x200 ) / 16 )
4848
49- // Retail sized the model stacks at PS2 pointer widths too; LoadPack's model structures grow on PC, and Max's
50- // dungeon model already fills 68492 of 68500, so a reload after an event overflows. Zero on PS2.
5149#ifdef PORT
52- #define CHARA_MODEL_RUNTIME_DELTA 32768
50+ #include " port_memory_budget.hpp"
51+
52+ static constexpr int CharaMemModelDelta (int row, int col) {
53+ if ((row == CHARA_MEM_LAYOUT_HUMAN && col <= 1 ) || (row == CHARA_MEM_LAYOUT_ROBO && col <= 2 ) ||
54+ (row == CHARA_MEM_LAYOUT_EDIT && col == 0 ) || (row == CHARA_MEM_LAYOUT_MONSTER && col == 0 )) {
55+ return CHARA_MODEL_LOAD_DELTA ;
56+ }
57+ return 0 ;
58+ }
59+
60+ #define MEM_TBL (v, row, col ) ((v) + CharaMemModelDelta(row, col))
5361#else
54- #define CHARA_MODEL_RUNTIME_DELTA 0
62+ #define MEM_TBL ( v, row, col ) (v)
5563#endif
5664
5765/* *
@@ -60,10 +68,12 @@ struct SetupPartStack {
6068 *
6169 */
6270static int mem_table[CHARA_MEM_LAYOUT_NUM ][CHARA_MEM_STACK_NUM ] = {
63- {68500 + CHARA_MODEL_RUNTIME_DELTA , 40000 , 7000 , 4650 , 3000 , 9900 + CHARA_SCRIPT_RUNTIME_DELTA , 4500 + CHARA_SCRIPT_RUNTIME_DELTA },
64- {30000 , 30000 , 60000 , 10000 , 10000 + CHARA_SCRIPT_RUNTIME_DELTA , 0 , 0 },
65- {75000 + CHARA_MODEL_RUNTIME_DELTA , 40000 , 7000 , 4650 , 3000 , 9900 , 0 },
66- {120000 + CHARA_MODEL_RUNTIME_DELTA , 0 , 0 , 0 , 0 , 5500 , 0 }
71+ {MEM_TBL (68500 , CHARA_MEM_LAYOUT_HUMAN , 0 ), MEM_TBL (40000 , CHARA_MEM_LAYOUT_HUMAN , 1 ), 7000 , 4650 , 3000 ,
72+ 9900 + CHARA_SCRIPT_RUNTIME_DELTA , 4500 + CHARA_SCRIPT_RUNTIME_DELTA },
73+ {MEM_TBL (30000 , CHARA_MEM_LAYOUT_ROBO , 0 ), MEM_TBL (30000 , CHARA_MEM_LAYOUT_ROBO , 1 ), MEM_TBL (60000 , CHARA_MEM_LAYOUT_ROBO , 2 ), 10000 ,
74+ 10000 + CHARA_SCRIPT_RUNTIME_DELTA , 0 , 0 },
75+ {MEM_TBL (75000 , CHARA_MEM_LAYOUT_EDIT , 0 ), 40000 , 7000 , 4650 , 3000 , 9900 , 0 },
76+ {MEM_TBL (120000 , CHARA_MEM_LAYOUT_MONSTER , 0 ), 0 , 0 , 0 , 0 , 5500 , 0 }
6777};
6878
6979#ifdef PORT
0 commit comments