English Amiga Board


Go Back   English Amiga Board > Main > Retrogaming General Discussion

 
 
Thread Tools
Old 04 December 2009, 20:05   #21
MethodGit
Junior Member
MethodGit's Avatar
 
Join Date: Dec 2002
Location: The Streets
Age: 33
Posts: 2,723
Believe me, I've tried those programs. For games like Future Wars, they either provide an external loader program or they patch the original executable, none of which are useful through ScummVM. This is why I was looking for as much info on hardpatching data files as possible. Neverlock et al similarly provide only a loader for Cruise, but it's been confirmed you can patch one of the game's data files to get past the protection and it'll work under ScummVM.


See what I'm getting at?
MethodGit is offline  
AdSense AdSense  
Old 04 December 2009, 20:07   #22
eLowar
Citizen of Elthesh
eLowar's Avatar
 
Join Date: Sep 2003
Location: London, UK
Posts: 949
Sure. Just thought I'd mention them.
eLowar is offline  
Old 05 December 2009, 03:47   #23
adolescent
Powered by Motorola

 
Join Date: Feb 2002
Location: Redondo Beach, CA
Age: 46
Posts: 1,064
Looks like there is a flag to bypass the protection in SCUMMVM but it is disabled by default. I don't have Future Wars or time to compile and test though.

engines\cine\main_loop.cpp:
Code:
       globalVars[VAR_BYPASS_PROTECTION] = 0; // set to 1 to bypass the copy protection
adolescent is offline  
Old 05 December 2009, 14:53   #24
jotd
Cat freak
jotd's Avatar
 
Join Date: Dec 2004
Location: FRANCE
Age: 46
Posts: 1,973
Quote:
Originally Posted by MethodGit View Post
jotd: I took your suggestion of looking at the WHDLoad slave sources but the way it's written I can't quite understand how to translate it into hex offsets. Besides, it seems slaves for all-pre-MI1 games do memory patching. MI1 source is the only one which seems to specifically reference a data file, and Loom/Maniac/Zak don't include any sources.

Surprised you managed to translate your Amiga MI2 hacking code into a match for the PC port though. The Amiga version divides the game data into several files whereas on the PC it's all in one big file. Did you have to extensively search each and every data file for a matching offset?
Most of cracks I have made use a "replay" technique: I store memory when the test is OK, and replay it by hacking the executable => no transposition to ScummVM. Used that for most of my Sierra loaders, Cruise, Zak, Indy III & IV.
Hacked Operation Stealth in a very smart way 15 years ago, so smart I don't remember why I did that and how I came to that solution (replacing a 0x60 by a 0x93 somewhere in the exe). Took me 10+ hours.
For Future Wars, the "replay" technique worked to an extent but there were problems, so I adapted a crack, and I don't know how it works but it works flawlessly even for the Interplay version using a different protection screen.

But for MI2 and Another World, I used datafile patch (not by me!), and I did that also for MI1.
To adapt the patch for PC, don't look for the offset, but for the hex string to be replaced, in the big file. It works (same for MI1).
It's ASM code for the VM and it's the same (but I don't have a clue about how it works )

bye
jotd is offline  
Old 09 December 2009, 21:04   #25
MethodGit
Junior Member
MethodGit's Avatar
 
Join Date: Dec 2002
Location: The Streets
Age: 33
Posts: 2,723
Quote:
Originally Posted by adolescent View Post
Looks like there is a flag to bypass the protection in SCUMMVM but it is disabled by default. I don't have Future Wars or time to compile and test though.

engines\cine\main_loop.cpp:
Code:
       globalVars[VAR_BYPASS_PROTECTION] = 0; // set to 1 to bypass the copy protection
Good find! Now I just better hope it isn't a chore to compile this baby. Cygwin and MinGW have been my sole compiling experiences to date.
MethodGit is offline  
Old 14 December 2009, 21:14   #26
MethodGit
Junior Member
MethodGit's Avatar
 
Join Date: Dec 2002
Location: The Streets
Age: 33
Posts: 2,723
Say, is there an easy way of finding all the copy protection references for each engine in the source code? I wish to see if I can kill it for the Gobliiins games also.
MethodGit is offline  
Old 02 January 2010, 18:35   #27
adolescent
Powered by Motorola

 
Join Date: Feb 2002
Location: Redondo Beach, CA
Age: 46
Posts: 1,064
SCUMMVM has code to bypass the protection in Gobliiins 1 and 2. It only checks the copy_protection value in the config file so make sure you have copy_protection=false set in scummvm.ini.

engines\gob\gob.cpp
Code:
	_copyProtection = ConfMan.getBool("copy_protection");
engines\gob\inter_v1.cpp
Code:
	// Skipping the copy protection screen in Gobliiins
	if (!_vm->_copyProtection && (_vm->getGameType() == kGameTypeGob1) && (offset == 3905)
			&& !scumm_stricmp(_vm->_game->_curTotFile, _vm->_startTot.c_str())) {
		debugC(2, kDebugGameFlow, "Skipping copy protection screen");
		return false;
	}
	// Skipping the copy protection screen in Gobliins 2
	if (!_vm->_copyProtection && (_vm->getGameType() == kGameTypeGob2) && (offset == 1746)
			&& !scumm_stricmp(_vm->_game->_curTotFile, "intro0.tot")) {
		debugC(2, kDebugGameFlow, "Skipping copy protection screen");
		return false;
	}
adolescent is offline  
Old 18 January 2010, 21:18   #28
MethodGit
Junior Member
MethodGit's Avatar
 
Join Date: Dec 2002
Location: The Streets
Age: 33
Posts: 2,723
Ah, thanks for that information, adolescent!

Now if only I could get ScummVM to actually compile at all under Windows. >.< Been following the instructions on their wiki and their forum as closely as possible, but when all your efforts result in something like this...

(Log taken from attempt to build NDS version through devkitARM)
Code:
MarzSyndrome@ ~/scummvm/backends/platform/ds
$ make SCUMM_BUILD=d
make[1]: Entering directory `/home/MarzSyndrome/scummvm/backends/platform/ds/arm
7'
main.o cartreset.o
cartreset.c
main.cpp
arm-eabi-g++ -MM -g -Wall -O2 -mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer -ffast-math -mthumb-interwork -I/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/include -I/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/build -Iquote -I/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/../commoninclude -I/c/devkitPro/libnds/include -I/c/devkitPro/libnds/include/nds -I/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/build -I/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/source/libcartreset -DARM7 -fno-exceptions -fno-rtti -o main.d /
home/MarzSyndrome/scummvm/backends/platform/ds/arm7/source/main.cpp
In file included from c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/source/main.cpp:42:c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/../commoninclude/NDS/scummvm_ipc.h:41: error: 'TransferSoundData' does not name a type
c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/source/main.cpp: In function 'void InterruptVBlank()':
c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/source/main.cpp:505: error: 'struct sTransferSound' has no member named 'data'
c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/source/main.cpp:507: error: 'struct sTransferSound' has no member named 'data'
c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/source/main.cpp:507: error: 'struct sTransferSound' has no member named 'data'
c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/source/main.cpp:507: error: 'struct sTransferSound' has no member named 'data'
c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/source/main.cpp:507: error: 'struct sTransferSound' has no member named 'data'
c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/source/main.cpp:507: error: 'struct sTransferSound' has no member named 'data'
c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/source/main.cpp:507: error: 'struct sTransferSound' has no member named 'data'
c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/source/main.cpp:510: error: 'struct sTransferSound' has no member named 'data'
c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/source/main.cpp: In function 'int main(int, char**)':
c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm7/source/main.cpp:588: error: 'SOUND_CR' was not declared in this scope
make[2]: *** [main.o] Error 1
make[1]: *** [build] Error 2
make[1]: Leaving directory `/home/MarzSyndrome/scummvm/backends/platform/ds/arm7'
/bin/sh: svn: command not found
make[1]: Entering directory `/home/MarzSyndrome/scummvm/backends/platform/ds/arm9'
makefile:349: warning: overriding commands for target `clean'
/home/MarzSyndrome/scummvm/backends/platform/ds/../../../Makefile.common:73: warning: ignoring old commands for target `clean'
make -C ./scummvm-D -f ../makefile scummvm.nds
/bin/sh: svn: command not found
make[2]: Entering directory `/home/MarzSyndrome/scummvm/backends/platform/ds/arm9/scummvm-D'
../makefile:349: warning: overriding commands for target `clean'
/home/MarzSyndrome/scummvm/backends/platform/ds/../../../Makefile.common:73: warning: ignoring old commands for target `clean'
icons.raw
keyboard.raw
keyboard_pal.raw
default_font.bin
8x8font_tga.raw
arm-eabi-as -mcpu=arm9tdmi -mthumb-interwork /home/MarzSyndrome/scummvm/backends/platform/ds/arm9/source/blitters_arm.s -o /home/MarzSyndrome/scummvm/backends/platform/ds/arm9/source/blitters_arm.o
mkdir -p /home/MarzSyndrome/scummvm/backends/platform/ds/arm9/source/.depsarm-eabi-g++ -Wp,-MMD,"/home/MarzSyndrome/scummvm/backends/platform/ds/arm9/source/.deps/cdaudio.d",-MQ,"/home/MarzSyndrome/scummvm/backends/platform/ds/arm9/source/cdaudio.o",-MP  -Os -mthumb -Wno-multichar -Wall -Wno-multichar -mcpu=arm9tdmi -mtune=arm9tdmi -mcpu=arm9tdmi -mtune=arm9tdmi -fomit-frame-pointer -mthumb-interwork -DUSE_ARM_COSTUME_ASM=1 -Wno-non-virtual-dtor -Wno-unknown-pragmas -Wno-reorder -fno-exceptions -fno-rtti -mthumb-interwork -ffunction-sections -fdata-sections -fno-strict-aliasing -DSCUMMVM_SVN_REVISION=\"\" -DDS_NON_SCUMM_BUILD-DDS_BUILD_D -D__DS__ -DNDS -DARM9 -DNONSTANDARD_PORT -DDISABLE_FANCY_THEMES -DVECTOR_RENDERER_FORMAT=1555 -DDISABLE_DOSBOX_OPL -DDISABLE_DEFAULT_SAVEFILEMANAGER -DARM -DREDUCE_MEMORY_USAGE -DENABLE_AGI=STATIC_PLUGIN -DENABLE_CINE=STATIC_PLUGIN -DENABLE_GOB=STATIC_PLUGIN -DDISABLE_SCALERS -I/home/MarzSyndrome/scummvm/backends/platform/ds/arm9/scummvm-D -I/home/MarzSyndrome/scummvm/backends/platform/ds/../../.. -I/home/MarzSyndrome/scummvm/backends/platform/ds/../../../engines -I/home/MarzSyndrome/scummvm/backends/platform/ds/arm9/data -I/home/MarzSyndrome/scummvm/backends/platform/ds/arm9/../commoninclude -I/home/MarzSyndrome/scummvm/backends/platform/ds/arm9/source -I/home/MarzSyndrome/scummvm/backends/platform/ds/arm9/source/mad -I/home/MarzSyndrome/scummvm/backends/platform/ds/arm9/source/libcartreset -I/c/devkitPro/libnds/include -include /home/MarzSyndrome/scummvm/backends/platform/ds/../../../common/scummsys.h -c /home/MarzSyndrome/scummvm/backends/platform/ds/arm9/source/cdaudio.cpp -o /home/MarzSyndrome/scummvm/backends/platform/ds/arm9/source/cdaudio.o
In file included from c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm9/source/dsmain.h:28,
                 from c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm9/source/cdaudio.cpp:26:
c:/devkitPro/msys/home/MarzSyndrome/scummvm/backends/platform/ds/arm9/../commoninclude/NDS/scummvm_ipc.h:41: error: 'TransferSoundData' does not name a type
make[2]: *** [/home/MarzSyndrome/scummvm/backends/platform/ds/arm9/source/cdaudio.o] Error 1
make[2]: Leaving directory `/home/MarzSyndrome/scummvm/backends/platform/ds/arm9/scummvm-D'
make[1]: *** [ndsall] Error 2
make[1]: Leaving directory `/home/MarzSyndrome/scummvm/backends/platform/ds/arm9'
make: *** [all] Error 2

MarzSyndrome@ ~/scummvm/backends/platform/ds
$
It just hurts my poor brain! Compiling builds is not one of my strongest points and I just wish they didn't cause too much hassle. Any had better luck than moi in this sort of department?
MethodGit is offline  
AdSense AdSense  
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
rage protection code albino request.Other 3 11 May 2013 23:27
Does Exile AGA retain the code protection from the original? MethodGit support.Games 5 25 July 2012 01:32
Can making a backup kill a game? Some kind of protection code? fitzsteve support.Games 12 19 March 2010 03:59
Backing up games with copy protection VermillioN support.Games 2 06 November 2006 13:34
how to hack games boing_1000 request.Old Rare Games 6 26 June 2006 13:46

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 10:02.


Powered by vBulletin® Version 3.8.8 Beta 1
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Page generated in 0.15526 seconds with 11 queries