corsair91
Sailing Master
Posts: 8201
206645 Gold -
|
Posted: Sun Oct 03, 2021 8:08 pm Post subject: Never Reload! (patch For V1.02) Cannons Info |
|
|
Never Reload! (patch For V1.02)
https://web.archive.org/web/20070905063825/http://www.addictedforums.com/index.php?showtopic=4137
x87bliss
Aug 25 2007,
"ARRR Fire the cannons!" "They not be loaded, Captain!" "ARRR They always be loaded!"
How to patch:
I'm only going to give instructions on how to apply the patch to Pirates!.exe, so it's a permanent cheat that does not require a trainer. Phalzyr's PHTrainer will hopefully include a feature to apply it in memory when he adds that feature. The main difference is that this method is permanent, and requires you to re-edit Pirates!.exe (which means having it closed) to disable it. Having it in Phalzyr's trainer will allow you to more easily enable/disable it at will.
1) Download XVI32 (or use your favorite hex-editor.
2) Copy Pirates!.exe to Pirates!.exe.bak (always keep a backup of the original exe file, in case you mess it up)
3) Open Pirates!.exe in XVI32
4) Goto Address 0x7E2C0 (Ctrl+G, select "Hexadecimal", type 7E2C0 in the edit box, and select "absolute", then hit ok)
5) Read three bytes from where it selected, they should be "75 07 48", if not make sure you're in the right place.
6) Change those three bytes from "75 07 48" to "31 C0 90"
7) Save
How to use:
When you're in battle, the number of cannons loaded will always be the number of cannons you have. However, only that number of cannon balls may be in the air at one point. So you can't just send out infinite shots. You need to wait til your balls hit or sink before you can shoot more.
Warning! Nerd Content:
What exactly did those numbers change?
They changed the code that gets sent to the CPU for calculating the number of cannons reloaded. As opposed to changing a value in memory, we slightly changed the actual program. The game uses a timer, that when it reaches 0, all the cannons are reloaded - the closer to 0, the more cannons are loaded.
Here is the assembly code:
Originally this is executed:
47E2C0 - 75 07 - jne 0047e2c9
(this is a jump that skips decreasing the timer if it is not ready for more cannons to be loaded yet)
47E2C2 - 48 - dec eax
(if more cannons are ready to be loaded, that jump is skipped, and this runs, which decreases EAX (the timer) by 1)
47E2C0 - 31 C0 - xor eax, eax
(we don't need that jump anymore, since we always want the cannons loaded. xor EAX, EAX effectively sets EAX to 0)
47E2C2 - 90 - nop
(nop does nothing at all. It is just a place-holder, since we went from 3 bytes of code to 2) |
|