

Or, if you command MHOLD Health for example, it creates a breakpoint that triggers a callback when a memory location is changed and restores the original value.

Item 2 0x0000 Item 1 0x0000 Item 7 0x0000Ĭheat.py also adds MV (Modify Variable) that takes a variable name (case-sensitive) and hex value to set to the variable, but you can of course take an offset from the field list in the log and do D 0:112da to verify and then SM 0:112da 06 to set memory to a value (keep in mind it’s little-endian). Here’s an example of a game with fields: -(Variable Overview ). One thing though with these premade tables is that pretty much all of them have a different zero address, so thus far I’ve been using this small script to readdress the variables based on one known offset.Įach time a binary file is executed a hash is calculated (using MurmurHash3 algorithm, it’s one of the fastest and most collision resistant hashes) and if cheat.py finds a match for the hash in cheat.db SQLite database it loads the variables to the debugging UI. amt file format versions 2-11 and should parse cheats for the 220 DOS games available from the official site.
Dosbox debugger software#
Since it’d just be silly to start collecting cheats to each game from scratch, I tried to find some software that had an existing library of cheats and try to reuse those.įrom what I gathered from google there seems to be surprisingly few projects still alive, ArtMoney was the simplest to adapt so I wrote this parser for the table files.

MSRCH Search allocated memory for a valueĭebugger commands (enter all values in hex or as register): MLST List previously searched/filtered values MHOLD Watch a memory location and prevent changes (16bit values atm) MFILT Filter previously searched locations with a new value
Dosbox debugger code#
(Output Scroll: home/end )-ĬLST List available code changes for running binary Once the script is loaded into DOSBox, when you break into the debugger and run HELP, you’ll also get the commands that the script supports. Also rudimentary memory scanning/filtering/holding operations are available. configure -enable-debug=heavy -enable-python sudo make installĬurrently the script supports SQLite database for loading/saving variable locations and code change locations. Git clone git:///stt/dosbox-python.git cd dosbox-python
Dosbox debugger download#
To utilize it you need DOSBox Python supportįor Windows there is pre-built installer on the download page Third, I wanted something like the trainers of the past, that’s just ready to go once you load the game. And especially if you’re compiling new versions all the time, keeping the addresses up to date is just silly. Except, they depend on the specific version of the emulator because the base address of the emulated memory changes. Second, there are a few memory scanners also for Linux scanmem (with a GUI called gameconqueror) seems to works just as well as the Windows ones and would normally be the way to go. That’s what I’ve been thinking about anyway, so first, there are a few ways to do memory scanning, for one you might take a MEMDUMPBIN from DOSBox debugger, scan for a value in hexeditor then take a second dump and crossreference changes, but you can see how this just won’t do. And you might find it’d be nice to enable a cheat just to browse around. Nowadays when the retrogaming bug bites it’s easy enough to grab a copy from abandonware site and load it up in DOSBox, but after a few minutes it usually becomes apparent your old favorites ask for way more patience than you’re ready to give in comparison to modern titles.
Dosbox debugger Pc#
If you’re old enough to have seen the PC gaming scene in early nineties, you might remember all the hexediting cheats in game magazines, trainers integrated into pirate copies and all kinds of tools available for download in the local BBSs.
