- Audit pass covering ten numbered issues (#29-#38):
- Rewrote
real_addressso the result is always within VRAM (0x04000000-0x041FFFFF) or the configured[address_start, address_end]window; moved to a sharedaddr.hheader. - Fixed a scroll-window pointer bug in
get_print_start_end. language_loadnow clamps the firmware language id before indexing.language_process_bufferis now bounds-checked and falls back to built-in English on a truncated/malformed language file.- Fixed an undefined-behavior overlapping
snprintfsrc/dst in the on-screen keyboard. fileIoWritenow flushes before the buffered write can overflow its heap buffer (previously only flushed past 8128 bytes, allowing writes up to ~16319 bytes into an 8192-byte buffer).- Cheat file loading now caps
.db/.txtfiles at 32MB and validates PSPAR game/item headers before trusting their counts.
- Rewrote
- Config validation/recovery (checksum + field clamping) is now shared between the plugin and a
new host-side test suite via
config_core.h. - Consolidated
makefile_psp/makefile_liteinto one parameterizedsrc/makefile(VARIANT=psp|lite); the old makefile names remain as thin shims. - Added host-side unit tests (
tests/) that compile and exercise the real shared address/config logic without needing the PSP SDK, wired into CI.
- Crash recovery: a kernel plugin can't know a game crashed in the moment, but it can tell the
previous session didn't exit cleanly (a clean exit unloads the plugin via
module_stop; a crash doesn't). A lifecycle marker file is now set when a game session starts and cleared on clean exit. If the marker is still set at boot, all always-on and selected cheats are automatically disabled and saved, and a crash-safe notice is shown briefly on the cheat list.
- Fixed a crash in GTA: Liberty City Stories at asset load, caused by a memory allocator bug introduced in 1.65: the partition-selection loop iterated one past the end of a 2-element array, occasionally reading a garbage stack value that resolved to the wrong system memory partition. Under memory pressure this could allocate from the game's own partitions instead of the plugin's, stealing RAM the game needed at its asset-load peak. Restored the original 3-partition allocation list and made the allocator fail closed (return NULL) instead of falling back to an unrestricted allocation when its preferred partitions are exhausted.
config_loadno longer wipes user settings back to defaults on a checksum mismatch against a pre-v1.70 config file (which has no checksum field) — it now heals the checksum and memory range in place instead, preventing an unconditional settings reset and cheat database truncation.- Widened the valid memory range for
memory_copy, the PSPAR 0x0E patch code type, andpatch_applyto the PSP's actual writable footprint (VRAM through main RAM), which had previously silently rejected legitimate VRAM cheat targets.
- Fixed issue with button presses not functioning on credits tab (thanks to mgood7123).
- Fixed compilation errors (and many warnings) with latest version of pspsdk.
- Added support for PSX GameShark codes.
- Added support for loading codes from PSPAR .bin files (checksum not validated).
- Added support for loading codes from NitePR .txt files (converted to PSPAR on load).
- User can now change the maximum number of cheats/code lines which can be loaded.
- Added new code types:
- 0xC1 (PSPAR Extended): call function with arguments.
- 0xC2 (PSPAR Extended): run code from cheat list.
- 0xC4 (PSPAR Extended): safe data store.
- 0xC5 (PSPAR Extended): counter.
- Can add search results in CWCheat format by pressing SQUARE on the search result.
- Added HB blacklist file to disable HB Game ID generation in certain games. This is useful for shells such as Xplora, Prometheus ISO Launcher, etc.
- Added PSP Utilities application which contains various cheat helper functionality (requires Java).
- Added option to swap functionality of CROSS and CIRCLE buttons in the TempAR menu.
- Added multi-lingual support for the interface.
- Japanese translation by HARO.
- Portuguese-BR translation by Hiei-YYH.
- French translation by Rahim-US.
- Added support for sub-folders using 0xCF code type.
- Added support for inserting cheats anywhere in the cheat list, using the L/R trigger it is also possible to change the amount of lines a cheat has.
- Removed thread list and module list from lite version to reduce size.
- Removed copy to text file from disassembler.
- Removed old PC tools since the functionality they offered is now integrated into TempAR.
- Fixes to the conditional code types and 0xD0 code type. (thanks to HARO)
- Temporary data buffers are only allocated when needed to reduce memory usage.
- Rewrote cheat.db file parser to make it ~1/3 faster.
- Old Parser: 62 seconds (58.9MB)
- New Parser: 42 seconds (58.9MB)
- Removed auto-off version, auto-off functionality is merged with both tempar.prx and tempar_lite.prx. To enable auto-off change "Enable Autooff" from False to True in the [PRX] tab, save settings and reboot the game.
- Pressing LTRIGGER in cheat menu now toggles cheat engine between active/deactive.
- Rewrote function used to get home screen frame buffer. Should now work with homebrew which doesn't use the Sony exit screen and no longer has to allocate RAM for custom framebuffer in PSX games.
- Changed default menu key to HOME + RTRIGGER (the same as the official PSPAR).
- No longer need to press HOME twice to start using TempAR. Home menu is also restored to its default appearance when the cheat menu is closed.
- Fixed a off by one error with the toggling of cheats in a radio folder.
- Fixed a bug with the CWCheat multi-write pointer code type.
- Fixed some bugs where codes where not disabled correctly with tempar_autooff.prx.
- Fixed single character Japanese text not being loaded correctly for text viewer/cheats.
- Fixed blue screen on resume if menu was open when the PSP went into standby mode on 6.20+.
- Other minor bug fixes and changes.
- tempar_autooff.prx is now based off of tempar_lite.prx which has some features removed to help reduce memory usage.
- Fixed value search speed is almost twice as fast.
- Added tempar_autooff.prx. This plugin will revert normal 8/16/32-bit constant write codes to their original values when the cheat is deactivated. This is so ASM codes don't require a separate off code. If the constant write codes are within a conditional or are influenced by another code type their values will not be restored.
- Fixed some random bugs.
- Added better support for homebrew, now uses unique Game IDs which are the same as those generated by CWCheat. Big thanks to HARO for the help.
- Single select folders are now supported.
- Rewrote search function, now it is much faster (average 100x faster) and has less wear on the memory stick.
- Added option to change how many search results can be found before the search is terminated. Using the default will cause TempAR to find all results.
- Can now save cheats. Cheats are saved to an individual file in ms0:/seplugins/TempAR/cheats/{game-id}.db. You can load these cheats by selecting the appropriate load cheat file options.
- Added cheat delete function.
- Pressing triangle on a cheat now shows a menu which allows the user to edit, rename, delete or copy the cheat.
- All loaded search results can now be added with a single click.
- Added support for custom 8x8 fonts. If you wish to use a custom font place it at ms0:/seplugins/TempAR/font.bin.
- Added a text viewer. The text viewer can be triggered by going to the last tab. If a text file exists at ms0:/seplugins/TempAR/text/{game-id}.txt it will be loaded.
- Added support for FreeCheat patch files. Only one patch file can be used per game and should be placed in ms0:/seplugins/TempAR/patch/{game-id}.pat. Then select "Load Memory Patch" from the PRX tab.
- Menu display key no longer interferes with menu options.
- Copy cheat now actually copies the code lines instead of just the code name.
- Due to internal changes the config.bin files must be deleted if they exist. If they are not deleted there may be issues using the disassembler and browser functions.
- Renamed POPS version to lite as it now works in game mode as well, not just POPS. The only difference the lite version has to the normal version is lack of USB support.
- Optimized the source, reduced uncompressed PRX size by ~25KB.
- PSPAR folders can now be collapsed and expanded, use the 0xCF code type to specify a folder or comment.
- Folder and comment colors are now user customizable in the color files.
- If the Game ID can't be retrieved normally TempAR will attempt to read the Game ID from disc0:/UMD_DATA.BIN (for PSP games), or a section of memory (for POPS games).
- Minor bug fixes and changes.
- Added support for the qqq part of CWCheat pointer codes for multi-write and copy byte pointer codes, thanks to HARO for the information.
- If cheats are available for the loaded game the game name can be shown by pressing VOLDOWN at the cheat selection screen.
- PSPAR Loop codes which don't have a terminator line at the end should now work correctly.
- Rewrote the cheat database loading code. Now cheat files are loaded 2-3 times faster then before.
- Rewrote the PC converter tool.
- Other minor additions, changes and fixed.
- Added support for the 0xC6 PSPAR code type. This will fix problems with the "generic" codes in the official PSPAR cheat database not working.
- Added support for the 0x0C CWCheat code type. This should make the Yu-Gi-Oh CWCheat codes work in the same way as they do with CWCheat.
- Added support for loading the same codes for multiple Game IDs to reduce the database size where different regions can use the same codes. To do this simply place all "_S" lines after each other with no codes in-between.
- Added support for Japanese characters to the font so now the cheats in the official PSPAR cheat DB should be shown correctly for Japanese games.
- Added new line type "_N". These lines are executed with an enhanced version of the PSPAR cheat engine. The reason for not merging the enhanced PSPAR engine with the main PSPAR engine is to maintain the best possible compatibility with the official PSPAR for testing purposes, whilst also offering additional functionality.
- Added support for extra data register operations using the 0xD4 code type to the enhanced PSPAR engine.
- Added support for address+offset if conditionals to the enhanced PSPAR engine. If the lowest bit of the address is set the value at address+offset is used in the conditional.
- The PSPAR cheat engine execution status is now cleared at the end of each loop.
- Fixed a bug in the CWCheat cheat engine where the second character in the address part of the code was accidentally removed when it was applied by the cheat engine.
- Fixed bugs with the 0x06 multi-write code type.
- Hopefully fixed the unknown search bug which was in the original source. It was partially fixed in 1.2 but it is so long and complex I couldn't work out how to fix it properly. Hopefully it should be working properly now.
- Please refer to "docs\readme.html" for information relating to the newly added code types.
- Upper bits of fake addresses can now be retrieved. eg. Use 0x0A000002 to read the kernel mode buttons using the 16-bit PSPAR code types.
- Added an option to hijack the PSPAR button codes. This option if enabled will change PSPAR codes with code types 0x09 and 0x0A and an address of 0x09F00000 or higher to be treated as a button joker code. This makes codes such as the GTA: VCS moonjump code work without altering the code.
- Menu key, trigger key and screenshot key can now be configured under PRX.
- The POPS version now uses a different config file to the PSP version.
- Added PC CWCheatPOPS to PSPAR code converter.
- Fixed problem copying address from codelist to the Browser/Decoder.
- Button press prompt is no longer displayed on load. This should fix display problems with PSP Filer and probably some other homebrew/games.
- Fixed the 0x08 CWCheat code type.
- Codes which attempt to write a 16-bit value to 8-bit address or a 32-bit value to 8/16-bit address will no longer crash the PSP.
- MAC address patch is off by default to fix networking problems while plugin is enabled. User must remove config.bin for this change to take effect.
- Added POPS and homebrew support, thanks to Davee for information on getting the Game ID without the need for the daunting task of parsing the PARAM.SFO. Please note that homebrew PARAM.SFO files need to be patched so the Game ID isn't the same for all homebrew. Also keep in mind that CWCheat POPS files are not compatible. The codes need to be in either PSPAR or CWCheat PSP format.
- Settings can now be saved so there is no time to re-configure on each load!
- Added support for loading from different cheat.db files.
- Added PC NitePR to PSPAR code converter.
- Added comment mode paramater to the PSPAR bin converter. Use 0 to prepend all comments with a # or 1 to prepend folders with _C1 and comments with _C2.
- Codes which have no code lines are highlighted and have no Y/N before their name. This is to allow for in-game comments.
- Fixed problem loading the colours from a file.
- Fixed screenshot option, forgot to set the option in the makefile, whoops.
- Fixed the 0xD1 PSPAR code type.
- Offset is only added to PSPAR conditional codes if the address used is 0.
- Added an aditional check to CWCheat pointer codes to help prevent a crash with bad codes and uninitialized pointers.
- Cheat device is now known as "TempAR". "Temp" because GBAtemp is my online home and "AR" because it supports "AR" codes. To further expand on this the Temp is what CW is to CWCheat and AR I guess is what PR is to NitePR. Plus it can be pronounced temper woot! (thanks to xist for the suggestion).
- Added support for a _C2 code name line. _C2 codes are active irrespective of the cheat engine status.
- Can now insert a new CWCheat code from menu under PRX by pressing SQUARE.
- Added support for the remaining CWCheat pointer code types.
- Fixed the 0x0E PSPAR code type.
- Various bug fixes.
- Added support for single pointer CWCheat code type.
- Fixed issue loading codes when end of read buffer is reached.
- Added tool to convert the PSPAR.com pspar_codes1.bin file to a format compatible with this cheat device.
- Implemented some CWCheat code types (very untested).
- Codes are loaded from a single cheat.db file.
- Problem loading and storing 8/16-bit values.
- Added PSPAR Code Type Support (note: May Have Some Buggy Code Types).
- Removed NitePR Code Type Support.
- Removed the SOCOM stuff.
- Removed the off value function.
- Cheat Hz changed from 0 to 15 by default.
- Real address mode active by default for browser and decoder.
- Real addresses should be used for codes as PSPAR uses real addresses.