|
24 | 24 | </td></tr> |
25 | 25 |
|
26 | 26 | <tr><td class="ticker"> |
27 | | - <marquee behavior="scroll" scrollamount="3">v1.70 is out now - CWCheat + PSPAR in one plugin - favorites & persistence added - works on CFW only, not OFW - searcher up to 253x faster than the old MKUltra code - full changelog inside</marquee> |
| 27 | + <marquee behavior="scroll" scrollamount="3">v1.70.4 is out now - crash recovery added - fixed a memory allocator bug that crashed GTA: Liberty City Stories - config self-heal - CWCheat + PSPAR in one plugin - works on CFW only, not OFW - full changelog inside</marquee> |
28 | 28 | </td></tr> |
29 | 29 |
|
30 | 30 | <tr><td> |
|
87 | 87 | <tr><td class="panelbody"> |
88 | 88 | <p>There's a top-level <tt>makefile</tt> that orchestrates everything, plus per-binary makefiles in <tt>src/</tt> that PSPSDK's own build system (<tt>build.mak</tt>) consumes.</p> |
89 | 89 | <p><b>makefile (repo root):</b></p> |
90 | | -<pre class="code">export RELVER := 1.70 |
| 90 | +<pre class="code">export RELVER := 1.70.4 |
91 | 91 |
|
92 | 92 | release: prep psp lite pack clean |
93 | 93 | release_pr: prep psppr litepr pack clean</pre> |
|
100 | 100 | <tr><td><tt>pack</tt></td><td>Creates <tt>build/temp</tt>, copies <tt>src/resources/*</tt> (the seplugins folder structure users install) and <tt>docs/</tt> (end-user docs) into it, moves the built .prx files into <tt>build/temp/seplugins/TempAR</tt>, then zips the whole thing to <tt>build/tempar-$(RELVER).zip</tt>.</td></tr> |
101 | 101 | <tr class="alt"><td><tt>clean</tt></td><td>Removes build artifacts: .elf/.prx outputs, objects/*.o, generated language headers, build/temp.</td></tr> |
102 | 102 | </table> |
103 | | - <p><tt>release</tt> runs <tt>prep</tt>, builds both <tt>psp</tt> and <tt>lite</tt>, packs, then cleans. <b>RELVER must be bumped by hand</b> in this file for every release — it's also duplicated in <tt>src/include/version.h</tt> (<tt>VER_MAIN</tt>/<tt>VER_SUB</tt>) and must be kept in sync manually.</p> |
| 103 | + <p><tt>release</tt> runs <tt>prep</tt>, builds both <tt>psp</tt> and <tt>lite</tt>, packs, then cleans. <b>RELVER must be bumped by hand</b> in this file for every release — it's also duplicated in <tt>src/include/version.h</tt> (<tt>VER_MAIN</tt>/<tt>VER_SUB</tt>/<tt>VER_PATCH</tt>) and must be kept in sync manually.</p> |
| 104 | + </td></tr> |
| 105 | + </table> |
| 106 | + |
| 107 | + <table class="callout"> |
| 108 | + <tr><td class="callouthead">Makefile consolidation (v1.70.4)</td></tr> |
| 109 | + <tr><td class="calloutbody"> |
| 110 | + <tt>src/makefile_psp</tt> and <tt>src/makefile_lite</tt> are no longer the real build logic |
| 111 | + — both are now thin wrappers around one parameterized <tt>src/makefile</tt>: |
| 112 | +<pre class="code"># src/makefile_psp: |
| 113 | +VARIANT = psp |
| 114 | +include makefile</pre> |
| 115 | + The real makefile is invoked as <tt>make -C src -f makefile VARIANT=psp|lite</tt> (default |
| 116 | + <tt>psp</tt>). The old per-variant names still work unchanged from the top-level makefile's |
| 117 | + perspective — nothing above this layer needed to change. If you're adding a new build |
| 118 | + variant, add it to <tt>src/makefile</tt>'s <tt>VARIANT</tt> branching, not as a fourth |
| 119 | + copy-pasted file. |
104 | 120 | </td></tr> |
105 | 121 | </table> |
106 | 122 |
|
107 | 123 | <table class="panel"> |
108 | 124 | <tr><td class="panelhead">src/makefile_psp and src/makefile_lite</td></tr> |
109 | 125 | <tr><td class="panelbody"> |
110 | | - <p>These are real PSPSDK makefiles (they <tt>include $(PSPSDK)/lib/build.mak</tt> at the bottom, where all the actual compile/link rules live — these files only set variables).</p> |
| 126 | + <p>These are now thin wrappers (see above) around <tt>src/makefile</tt>, which <tt>include $(PSPSDK)/lib/build.mak</tt> at the bottom, where all the actual compile/link rules live.</p> |
111 | 127 | <p>Key variables and what changing them means:</p> |
112 | 128 | <ul> |
113 | 129 | <li><b>TARGET</b> — output PRX name (<tt>tempar</tt> / <tt>tempar_lite</tt>).</li> |
|
149 | 165 | </td></tr> |
150 | 166 | </table> |
151 | 167 |
|
| 168 | + <table class="panel"> |
| 169 | + <tr><td class="panelhead">Host-Side Test Suite (tests/)</td></tr> |
| 170 | + <tr><td class="panelbody"> |
| 171 | + <p> |
| 172 | + As of v1.70.4, address-mapping and config-validation logic lives in shared headers |
| 173 | + (<tt>addr.h</tt>, <tt>config_core.h</tt>) that compile both into the PRX and into standalone |
| 174 | + host binaries — so the real logic can be unit-tested on any machine with a C compiler, |
| 175 | + no PSP SDK or Docker required: |
| 176 | + </p> |
| 177 | +<pre class="code">cd tests |
| 178 | +make run |
| 179 | +# == test_address == |
| 180 | +# == test_config_core ==</pre> |
| 181 | + <p> |
| 182 | + This runs as its own <tt>host-tests</tt> CI job, separate from and before the Docker-based |
| 183 | + PRX build. If you're touching address clamping or config validation, run this locally first |
| 184 | + — it's much faster than a full Docker build cycle. |
| 185 | + </p> |
| 186 | + </td></tr> |
| 187 | + </table> |
| 188 | + |
152 | 189 | <table class="panel"> |
153 | 190 | <tr><td class="panelhead">CI (.github/workflows/build.yml)</td></tr> |
154 | 191 | <tr><td class="panelbody"> |
155 | | - <p>Triggers: push to main/master/feat/*, PRs into main/master, tag pushes (v*), and manual workflow_dispatch.</p> |
| 192 | + <p>Triggers: push to main/master/feat/*, PRs into main/master, tag pushes (v*), and manual workflow_dispatch. Two jobs run: <tt>host-tests</tt> (the suite above) and <tt>build</tt> (the actual PRX build), independently.</p> |
156 | 193 | <ol> |
157 | 194 | <li><tt>docker run ... pspdev/pspdev make prep psp lite</tt> — builds both PRXs (does not run pack here, that's separate).</li> |
158 | 195 | <li><tt>make pack</tt> on the runner directly (installs zip via apt first if missing).</li> |
|
0 commit comments