I know there are gamedevs on the CPC who's tired of people pirating their games.
One example is Cwiiis and his "Oh Chute!" game (https://cwiiis.itch.io/oh-chute), which was made as a cartridge CPR file as well as a DSK.
He's experiencing people selling cartridges on eBay with his game without his permission. And I know other devs has had the same experience as well.
This has made me curious about whether there exists any clever creative ways gamedevs can protect their games against piracy.
On Atari Jaguar it's possible to check for the presense of a flash cartridge, and that way prevent the game from running.
I have no idea what kind of checks is possible to do on the Amstrad CPC though.
Anyone has any creative ideas on how gamedevs can be in more control of the distribution of their games?
What's actually possible to check?
One idea (Cwiiis himself) to prevent games running on real hardware, would be to "not fully initialize the CRTC". That way it'll still run on emulators, but will just give a blank screen on real hardware. Whether you find that useful or not is another matter. But just an example of something that could be done in order to control where the game is playable.
P.S.: This thread is not about your personal opinion about whether or not you think it's a problem or not. This thread is about the technical aspect, regardless of how anyone might feel about it. Thankyou.
Quote from: mr_lou on 15:48, 29 December 24One idea (Cwiiis himself) to prevent games running on real hardware, would be to "not fully initialize the CRTC". That way it'll still run on emulators, but will just give a blank screen on real hardware. Whether you find that useful or not is another matter. But just an example of something that could be done in order to control where the game is playable.
That'll just cause it to fail on more accurate emulators and eventually be lost to time as software that doesn't really work (or inevitably has to be a cracked version for anyone to use).
Ultimately all methods of copy protection (including the Jaguar methods you've mentioned) are defeatable. Even back in the commercial days, professional techniques were only ever good for a very short period and as a deterrent to casual piracy. Pretty much the only guaranteed mechanism is to give it away for free and rely solely on donations if you want some sort of income from it, at least that makes most piracy unnecessary (though probably won't stop grifters trying to sell versions etc)
Of course nothing is unbeatable. No one is saying that. That's not what this thread is about. Please do not derail it.
This is only about creative ideas on what techniques could be applied.
I don't think he's derailing the thread. He's replying to the possible protection suggestion you made...
Quote from: mr_lou on 15:48, 29 December 24P.S.: This thread is not about your personal opinion about whether or not you think it's a problem or not. This thread is about the technical aspect, regardless of how anyone might feel about it. Thankyou.
I'm only asking for ideas. Not whether or not you think it's a good idea. I tried making that clear.
So please, back to the actual topic - if anyone even has any ideas. Thankyou.
Have the player call the developer to get a code, compare it with one-way encryption against a table of good codes. Charges may apply.
Well, that's basically how many devs did it for copy protection in general. Except the manual included a codesheet instead of needing a phonecall, but basically the same idea apart from that.
In the case of Cwiiis, his game is freely downloadable, so no codes needed. His only problem is that people are burning the rom to cartridges and selling it on eBay.
Does the CPC offer any ways to detect from what media the game is running? I don't expect so. Seems Atari Jaguar has much more options there.
One possibility (related to what Gryzor said) is to have a different build for every copy. "This copy belongs to Robert Johnson", and the bytes of some files could simply be XORed according to a simple key (probably no need to do something more complicated). Having a personalised build may be enough for people not to give their copy away.
Quote from: mr_lou on 17:40, 29 December 24Does the CPC offer any ways to detect from what media the game is running? I don't expect so. Seems Atari Jaguar has much more options there.
It doesn't. And neither does the Jaguar. There is a small community of Jaguar developers who basically agreed to keep some aspects of the cartridge mechanism secret, so it's just security through obscurity. It's not
that difficult to defeat if you so choose though (and if you've actually released anything on the Jaguar then you basically have the exact mechanism to do so to all other Jaguar releases).
The problem with trying to do copy protection on any emulated system is the emulators are incredibly good debugging tools.
Off topic? 😁
Quote from: Targhan on 18:36, 29 December 24One possibility (related to what Gryzor said) is to have a different build for every copy. "This copy belongs to Robert Johnson", and the bytes of some files could simply be XORed according to a simple key (probably no need to do something more complicated). Having a personalised build may be enough for people not to give their copy away.
Yes. Not a technical aspect though. And easy to just register a copy to John Doe.
Could also put a startup-screen like: "THIS GAME IS FREE! IF YOU PAYED FOR IT YOU WERE SCAMMED!"
And yes of course such screens can be removed with a certain amount of effort, yes I know.
But do we really have no technical options?
Like e.g.... when running a game on GX4000 via cartridge, is there no way of detecting whether it's running from M4 or real cartridge?
For example via methods provided by M4 that aren't there for a real cartridge? Anything?
On a Plus/GX4000 you can require RMR2 and/or abuse RAM paging so that it'll break on anything that doesn't properly cope with the advanced Plus features. But that won't stop someone putting it on an actual cartridge.
Ultimately your choices are:
1) Require a hardware expansion that does more than just check for validation. Running the software will require that hardware and this piracy requires developing an equivalent.
2) Charge enough money for a copy that you can afford a lawyer and claim suitable recompense for every stolen copy sold.
3) Just accept it and make people aware these are scammers and shouldn't be funded.
The problems is that hardware solutions would make things expensive and from the software side of things there isn't much you can do.
On top of that, you can have the game downloaded for free and burn it on an eprom for your favourite multi-cartridge solution. It's impossible to distinguish it from a 'pirate copy'.
And once the program is loaded in memory you have no way of knowing where it came from.
Maybe you can contact eBay and tell them that the programs are being sold without any authorization from the owner of the rights to that game.
Quote from: robcfg on 19:33, 29 December 24And once the program is loaded in memory you have no way of knowing where it came from.
Is it possible to check if a tape drive is available without giving an error if it isn't? Possible to check if a diskdrive is present without resulting in an error if it isn't? Possible to test if a cartridge is available? Possible to try to load a specific file from a specific source? That would be one way of checking where it came from at least, if possible.
Quote from: mr_lou on 19:48, 29 December 24Quote from: robcfg on 19:33, 29 December 24And once the program is loaded in memory you have no way of knowing where it came from.
Is it possible to check if a tape drive is available without giving an error if it isn't? Possible to check if a diskdrive is present without resulting in an error if it isn't? Possible to test if a cartridge is available? Possible to try to load a specific file from a specific source? That would be one way of checking where it came from at least, if possible.
It's really,
really easy to patch any such code out. And, in any case, will fail if you load on a machine that doesn't have a tape drive or a disk drive or whatever.
Quote from: mr_lou on 19:48, 29 December 24Quote from: robcfg on 19:33, 29 December 24And once the program is loaded in memory you have no way of knowing where it came from.
Is it possible to check if a tape drive is available without giving an error if it isn't? Possible to check if a diskdrive is present without resulting in an error if it isn't? Possible to test if a cartridge is available? Possible to try to load a specific file from a specific source? That would be one way of checking where it came from at least, if possible.
You could possibly, but it's far easier to to remove that check from the code and burn that into the eprom.
I like the idea of having personalized copies for downloads. Add a name and serial-number and things could become awkward for whoever shares his copy. Or the message "THIS GAME IS FREE! IF YOU PAYED FOR IT YOU WERE SCAMMED!". Maybe not immediately into the game, but after a couple of minutes with an email address to report the scammer. Surely this can be removed by a really skilled pirate but I guess most of these sellers do not have those skills and just use what is given to them.
For physical cartridge release you could add some additional logic that cannot be easily replicated. That would kill emulation though.
Or maybe make it possible for sellers to sell a legal cartridge. At least as long as there is no C4CPC successor many people struggle to play games on a real machine so it could even be a great opportunity for some to play it on a real machine. Maybe allow it if the price is "fair" or request that the seller has donated an acceptable amount to the developer?
And for anything that is violating the license, always report it. Especially on Ebay, the seller should be gone sooner or later if he is regularly reported for selling illegal items.
ZaptBalls the advanced edition had a personalized message in the beginning. It was one of the 2 games that I bought original back in the days, and it had the name of the store owner. At the time it wasn't cracked immediately.
It's hard to talk about the technical side without giving a philosophical answer - that any kind of software lock will be trivial to circumvent, a waste of the developer's time to implement, and most likely to cause compatibility issues for legitimate users, if anything. You'd only be repeating the mistakes of the past.
Honestly for all the good it would do, a link to a Patreon account or something like that on your title page would be a better return for less effort. Sign every cart you sell. Write your customers a thank you note. How many carts are you intending to make, anyway?
I am honestly amazed to hear there are people making bootleg GX carts out there. There can't be much profit in it. That actually encourages me to write a GX/Plus game, thinking that there are bootleggers out there who might help circulate more physical carts. Maybe even write a game especially for those guys; call it Bloggo's Pow...
Please support your local bootlegger and play this game on a physical cartridge.
I recall only one case of one guy making GX4000 cartridges of some recent games, and I don't know if it was with permissions of the copyright holders (he may have permission, I don't know!).
Personally I got asked a couple of times about my games, and I gave permissions as there was no profit and the cartridges were made for someone that was fan of my games (clarifying here: so people don't think that I don't care -- don't sell copies of my games, please :picard:).
In my point of view the issue is not necessarily those people making cartridges, it is the people that buys them. I don't believe there are protections worth implementing, is more about the community protecting the few people putting the time to make the games.
P.S.: This thread is not about your personal opinion about whether or not you think it's a problem or not. This thread is about the technical aspect, regardless of how anyone might feel about it. Thankyou.
Oh, well. I didn't see that.
I think the best option is to include a prominent message stating that the game shouldn't be sold or whatever. I assume the people doing the copies will be lazy enough to not remove that; but back to my off-topic response, the people buying them may choose to ignore it as well.
Quote from: vasilisk on 20:51, 29 December 24ZaptBalls [...] At the time it wasn't cracked immediately.
IIRC Zap't'Balls has been cracked by XOR only weeks after beeing sold in France. Already on the release party at Marabu (https://www.cpcwiki.eu/index.php/Castle_Party_1) EGS found out that he made a mistake with his Anti-Multiface copy protection, so there was no chance.
BTW, I completely agree to andycadley and (https://www.cpcwiki.eu/forum/profile/?u=327)Anthony Flack. (https://www.cpcwiki.eu/forum/profile/?u=5331)
It always sucked a lot in the past (even regarding demos as well), when people thought they can make a cool new disc system, which is then not working on different machines, is slow, or whatever.
Release the game on RP2354 in enigma code.
CPC:
LD HL,nn
LD DE,mm
LD BC,xx
LDIR
Copy
LD HL,nn
LD DE,mm
LD BC,xx
LDIR
copy OTHER DATA!
Soft for emulatrors working ONLY when eCPC can not unrefreshing VRAM
Quote from: Prodatron on 22:50, 29 December 24Quote from: vasilisk on 20:51, 29 December 24ZaptBalls [...] At the time it wasn't cracked immediately.
IIRC Zap't'Balls has been cracked by XOR only weeks after beeing sold in France. Already on the release party at Marabu (https://www.cpcwiki.eu/index.php/Castle_Party_1) EGS found out that he made a mistake with his Anti-Multiface copy protection, so there was no chance.
In Greece, I can't recall when. After the purchase, I didnt keep up on the subject.
copy protection is non existent on the CPC...every technique available has been used and broken....just my 2c worth....
the only real way would be to require additional hardware eg a security chip on the cart.. but even that can be circumvented
let me pose a hypothetical question...(no im not selling on ebay!)
am i not allowed to build and sell HARDWARE that i spent good time and money on?.. and sell it with FREE software pre-burned on the eeprom?
..i do not see a software licence (eg GPL,EULA) anywhere in relation to that game saying i cant...
Quote from: Brocky on 23:32, 29 December 24am i not allowed to build and sell HARDWARE that i spent good time and money on?.. and sell it with FREE software pre-burned on the eeprom?
..i do not see a software licence (eg GPL,EULA) anywhere in relation to that game saying i cant...
Software, like most things, is copyrighted by it's creator by default. If there is not an explicit agreement that you can do it, then no you cannot. There is no requirement for any kind of written license agreement.
Quote from: andycadley on 00:04, 30 December 24Quote from: Brocky on 23:32, 29 December 24am i not allowed to build and sell HARDWARE that i spent good time and money on?.. and sell it with FREE software pre-burned on the eeprom?
..i do not see a software licence (eg GPL,EULA) anywhere in relation to that game saying i cant...
Software, like most things, is copyrighted by it's creator by default. If there is not an explicit agreement that you can do it, then no you cannot. There is no requirement for any kind of written license agreement.
that goes in the face of ALL i have read and seen around software licencing... why do people on github include licences then?.. why do game companies have huge EULAs? why have i been told i should be including licences with my code if i dont want it stolen?
theres no copyright or trademarks anywhere to be seen...no on the game.. not on itch.. not on the creators website... whats to say i didnt write it and he stole it from me and is passing it off as his own? ....(just another example!)
without any licences it makes the piracy topic a very gray area
Anyway would be cool if AndyCadley is right by default.
Quote from: andycadley on 00:04, 30 December 24Quote from: Brocky on 23:32, 29 December 24am i not allowed to build and sell HARDWARE that i spent good time and money on?.. and sell it with FREE software pre-burned on the eeprom?
..i do not see a software licence (eg GPL,EULA) anywhere in relation to that game saying i cant...
Software, like most things, is copyrighted by it's creator by default. If there is not an explicit agreement that you can do it, then no you cannot. There is no requirement for any kind of written license agreement.
This is correct, but in practice doesn't matter unless you have a lot of time and money to hire legal professionals to enforce your copyright...
For those saying "just report to eBay", I did that and in both very obvious cases, they found no terms had been violated - again, unless you have the money for legal representation, there's not much you can do except to appeal to the conscience of the offenders.
In both cases I was made aware of, the sellers have agreed to stop pirating my game - but every lost sale when you're only selling double figures is acutely felt. It's a shame that this is a thing in such a niche hobby.
For what it's worth, I'll likely fingerprint later releases and delay any free digital releases, as well as put splash screens on digital releases to inform people of the situation. I don't think current pirates are explicitly trying to do harm, but I do think they know what they're doing is sketchy and they're being willfully ignorant to avoid confronting the consequences of their actions.
I'll start also listing on eBay, now that selling is free (in my region) - I find it especially annoying that one of the repros was being sold for not much less than I'm selling the full boxed game, but there was no cartridge shell, no manual, no box... I may start offering cart-only for a reduced rate as I can do smaller batches economically (I need to do boxes at least 20 at a time really, carts I can do 5 at a time). I'm not selling anything at a price that makes significantly undercutting me worthwhile and the quality difference is likely to be vast (because I care and pirates, by virtue of what they're doing, don't).
Now back on topic;
I'm aware that any copy protection on a gx4000 game is either easily circumvented or too expensive/awkward, so I think what's interesting is what can you do easily to slow/stop the laziest pirates.
My idea that was mentioned that, yes, may break when emulators get more accurate, was not initialising the CRTC fully on ROM releases. This effectively makes roms work on emulators and c4cpc, which both initialise a bunch of CRTC registers that aren't initialised on a real machine with no firmware. I discovered that by accident, but it's a very easy (and easily defeated) anti-piracy measure.
Another idea is to use a bank checksum xor'd with a calculated value to initialise a bunch of gameplay variables - then you can fingerprint your roms and use that fingerprint to display ownership data. Again, it's easily defeated, but not *as* easily - especially as you can employ this variously throughout the code. This is only a deterrent, but it does mean unaltered pirated copies will display who dumped the rom. A problem with that is that if someone only partially or incorrectly cracks it, it may just look bad for the game rather than the pirate.
Another idea builds on the ones already discussed: If the software is personalized, e.g. up to the level that it checks hardware components besides only showing a note on the start screen, then it would be clearly visible for everyone if the software is sold to another person - it even may not work on the other hardware. I know that there are not so many CPC models, but there are different hardware parts that can be distinguished (e.g. CRTC). And there might be also extension hardware whose existence or non-existence could be checked. Although these are only a few bits of information here and there, it will rapidly grow to divide down the possible target systems in quite small groups. Especially the name in the start screen will create groups with only a few, often only one member.
This requires some infrastructure: On ordering the buyer has to give some information about his hardware. This could be gathered with a small open source tool. While this is a bit complicated, this might still work in our community. Then a specialized build process uses the acquired information to create a personalized software version that runs only on one device. Also this is a bit complicated, but it will get worse ...
Usually a software developer would recognize that "check hardware" and "display buyer name" are two things separated from the rest of the software, put both in sub functions and call them at the right time. If programmed like this, this kind of protection can easily be removed with a debugger. So the idea is to do something similar as JavaScript code obfuscation: Spread the code to multiple locations, make heavy use of variables and registers set because of another reason, and do everything multiple times. Although this kind of code can still be "cleaned" from the protection, it will be a nightmare even for a skilled programmer.
While describing this method is simple, applying it is quite difficult. For this reason I want to throw in some technical terms: aspect oriented programming (AOP) with a bunch of join points, weaving different code parts into each other, and UML metamodels to separate the processes for protection and other parts of the code. A software process that makes use of this could automatically duplicate and spread software parts. Even better: something like libraries could be build up to move from ad-hoc implementations to defaults that could be improved over time. Even if one solution gets broken, it could be replaced or completed with another, new method. This kind of software protection development would be on a complete different level.
But who implements the needed tools?
And is it worth the effort?
@lightforce6128 Playing around with creative copy protection methods can be just as intriguing and fun for the hobbyist as creating a CPC game project. So "worth the effort" is an abstract question.
I think it's an interesting topic, and fun to see what's possible.
It's definitely been worth it for the Atari Jaguar developer I mentioned. He has effectively prevented people from turning his digital downloads into physical cartridges.
Possible to circumvent? Well of course. Everything is. But it's not something the average Joe knows how to do.
@Brocky All creative works that anyone makes automatically becomes the Intellectual Property (IP) of the creator. This goes for music, graphics, games, books, whatever.
It is illegal to download music and sell it on CD's, or download graphics and sell printed posters of it, or download games and sell your own copies. This regardless of whether all of those files are free or not. They're still the IP of the owner, and you're not allowed to do anything with someone else's property without their explicit permission.
If you wanna test this, just try using any IP (even a small one) owned by Nintendo or Disney. Good luck. ;-)
For a small developer on a niche classic platform like the CPC, as
@Cwiiis says, it's very unlikely to have any consequences though.
Amateur musicians like myself have it easier. Some years back, a guy took my music and sold it. There was a lawfirm eager to take over probono, I had to turn them down. I could easily have let them handle everything, but it would have resulted in big fines for the guy. But I did regret that decision after ending up spending weeks on it. So next time there'll be no mercy.
OnFirst, write down what the minimum costs of craking the security should be.
New hardware setup? Recompile software?
How many man-hours should it take to crack the security?
Sorry, can't stay off-off-topic but:
Isn't it a bit unreasonable to let everyone download the dsk or cpr for free while trying to sell the physical version? If you only give the files to those who pay, no one will want to share them with anyone else. Indeed, there are many physical editions in the C64 and MSX scene, and it is impossibly hard to find pirated copies. Because people are sensitive about protecting what they paid for.
Quote from: dodogildo on 09:47, 30 December 24Isn't it a bit unreasonable to let everyone download the dsk or cpr for free while trying to sell the physical version?
Seems to me it's more a less the standard nowdays to offer a physical "collector's edition" version of the game, while also offering "pay-what-you-want" download versions without all the physical accessories.
Some care about collecting, while others don't. So no, that's not unreasonable at all. Merely targeting two groups of people.
Trying yet again to go back on topic (this is getting ridiculous):
What kind of things
can actually be detected on the CPC?
We can detect wether something runs on an emulator or real hardware, right?
And we can see how much RAM is available, right?
And I was told elsewhere (because it's difficult getting a straight answer to simple questions here) that it's also rather easy to detect the presense of tape/disc/cartridge.
Is there any way to detect the presense of a C4CPC? And/or M4 card?
Has anyone made a CPC plus cartridge yet that includes some kind of savedata chip? For the player to save his progress on? Because such a savechip could also be used as a way to check if it's a genuine copy I guess.
Quote from: Cwiiis on 01:08, 30 December 24My idea that was mentioned that, yes, may break when emulators get more accurate, was not initialising the CRTC fully on ROM releases. This effectively makes roms work on emulators and c4cpc, which both initialise a bunch of CRTC registers that aren't initialised on a real machine with no firmware. I discovered that by accident, but it's a very easy (and easily defeated) anti-piracy measure.
My emulator doesn't initialise the CRTC values as per the real hardware and likewise some others so I think you might frustrate the legit users more who will not understand why the game doesn't work for them on their chosen emulator or setup.
I relate to how your feeling about it all.
I made a C64 conversion of a game which I sold through Chronosoft. Within a week or so there was a hacked version on csdb and that got far more downloads than sales. I never expected to get many sales from it but this just stopped them entirely and I've not done a c64 game since because it annoyed me that much.
I also sold a CPC version through Chronosoft which made hardly anything (about £20 total) so I've resigned myself that I'm not going to make any money on any of the games I do.
I do have an idea.
I would go for a positive startup screen which says 'this game is registered to <person>. Thank you for supporting me and look out for future games from me at itch.io' . It makes it personal to the legit buyer and in some way indicates to non-legit it's not for them. I would then embed a unique id related to that person. I would implement some kind of checksum of the data that checks to see if there is modifications to the code to try and avoid people patching and I would also encrypt the data. Finally I'd add in checks which make the game very difficult, or not possible to complete if any of the checks fail, but it does it silently. Then perhaps if you offer to support each game you can detect it's been hacked about and get the person coming to you to buy a legit version.
That could work. Any other detection method or reliance on some kind of emulator inaccuracy might just be unreliable but also might incur bad reviews of your game when that is not what you intend.
Quote from: arnoldemu on 10:41, 30 December 24Quote from: Cwiiis on 01:08, 30 December 24My idea that was mentioned that, yes, may break when emulators get more accurate, was not initialising the CRTC fully on ROM releases. This effectively makes roms work on emulators and c4cpc, which both initialise a bunch of CRTC registers that aren't initialised on a real machine with no firmware. I discovered that by accident, but it's a very easy (and easily defeated) anti-piracy measure.
My emulator doesn't initialise the CRTC values as per the real hardware and likewise some others so I think you might frustrate the legit users more who will not understand why the game doesn't work for them on their chosen emulator or setup.
I think you misunderstand. The fact that your emulator
doesn't initialise the CRTC is exactly what Cwiiis is counting on - because that would exactly mean that the game
would run on your emulator - but not real hardware.
(And again - disregard personal opinions - this is only a theoretical talk)
Dev creates own physical cartridge + offers a digital download version. Therefor wants to prevent people simply turning the digital download into a real cartridge. Not fully initializing the CRTC on the digital download version will prevent people doing that, exactly because emulators don't do that either.
So yes, that is in fact one way of doing it.
(Although I guess it would also prevent the digital download game working on a C4CPC, so that part would have to be considered as well somehow - if possible. No idea if it's possible to detect a C4CPC. But again: Just talk. Just initial theoretical talk about what's possible).
Quote from: mr_lou on 10:24, 30 December 24Quote from: dodogildo on 09:47, 30 December 24Isn't it a bit unreasonable to let everyone download the dsk or cpr for free while trying to sell the physical version?
Seems to me it's more a less the standard nowdays to offer a physical "collector's edition" version of the game, while also offering "pay-what-you-want" download versions without all the physical accessories.
Some care about collecting, while others don't. So no, that's not unreasonable at all. Merely targeting two groups of people.
Trying yet again to go back on topic (this is getting ridiculous):
What kind of things can actually be detected on the CPC?
We can detect wether something runs on an emulator or real hardware, right?
And we can see how much RAM is available, right?
And I was told elsewhere (because it's difficult getting a straight answer to simple questions here) that it's also rather easy to detect the presense of tape/disc/cartridge.
Is there any way to detect the presense of a C4CPC? And/or M4 card?
Has anyone made a CPC plus cartridge yet that includes some kind of savedata chip? For the player to save his progress on? Because such a savechip could also be used as a way to check if it's a genuine copy I guess.
many things can be detected on a real CPC. The amount of RAM, which variant of the CRTC, which variant of the 8255, if floppy chip is present (not sure can detect if tape is present or not), which roms are connected, a lot of the various additional hardware devices, if the floppy disc controller is implemented to the lowest level, which roms are present and how various things decode the i/o ports, some of these tests are quick some are much much slower, so it depends on how long you want to spend doing these checks and all these can be disabled easily enough.
I expect it is possible to detect C4CPC if you take advantage of it's API for accessing the sdcard and I'd expect detecting an m4 would be fairly easy although I've not tried but again you are potentially putting off legit users potentially.
We can test some things to detect an emulator but they're unreliable and I'd expect that to stop working fairly quickly and some are very advanced and so close to real cpc you can't detect so I'm not sure how this helps.
When it comes to physical carts the hardware doesn't support write so any operations need to be done as reads so potentially a custom cart with a special chip that could be read would be some way to determine a legit cart but they'd need designing and manufacturing but it might put off some people selling them.
Quote from: mr_lou on 10:52, 30 December 24Quote from: arnoldemu on 10:41, 30 December 24Quote from: Cwiiis on 01:08, 30 December 24My idea that was mentioned that, yes, may break when emulators get more accurate, was not initialising the CRTC fully on ROM releases. This effectively makes roms work on emulators and c4cpc, which both initialise a bunch of CRTC registers that aren't initialised on a real machine with no firmware. I discovered that by accident, but it's a very easy (and easily defeated) anti-piracy measure.
My emulator doesn't initialise the CRTC values as per the real hardware and likewise some others so I think you might frustrate the legit users more who will not understand why the game doesn't work for them on their chosen emulator or setup.
I think you misunderstand. The fact that your emulator doesn't initialise the CRTC is exactly what Cwiiis is counting on - because that would exactly mean that the game would run on your emulator - but not real hardware.
(And again - disregard personal opinions - this is only a theoretical talk)
I wouldn't rely on not initialising something. It's not reliable enough.
Real hardware, e.g. a GX4000, Plus, with a 'standard' cartridge which has an acid or the 74LS acid workaround also does not initialise hardware. The kind of cart people are selling on ebay as 'your game on a cart'.
Some emulators (e.g. Winape) does initialise the hardware, some others (e.g. Arnold) don't.
I expect the 16-in-1 sold on ebay also doesn't initialise the hardware.
The C4CPC menu system DOES initialise the hardware except you can also boot it via USB which I think DOESN'T initialise the hardware and by using a specific dip switch (that may as it shows a loading boot screen).
I don't know about the others like the M4 as I've not tested that.
The only way I can see to prevent somebody from burning a cart is to ensure the cart they booted the machine from is not yours.
This method can still be hacked but might just be enough but does involve extra effort and work.
Provide the download as a disk. If you need the capacity of a cart use extra memory. At some point starting up the game or during the game scan the roms in the cart range and check they are the basic ones. Check all from 128-255!
This avoids nocart being used to put it onto a cart from a disc. You can also defeat nocart by using a 80 track double sided disc and filling it up even if it's with junk, just enough to make it beyond the capacity of nocart.
Then as has been said before offer the actual cart only direct through you and incentivise with extras.
@arnoldemu A lot of tech talk there. :) As far as I understand, basically you're saying to not offer a downloadable CPR file then? Only offer a downloadable DSK file? (And one's own physical cartridge edition as well of course).
Not saying that's a bad idea. Just making sure I understand you correctly.
Quote from: mr_lou on 11:56, 30 December 24@arnoldemu A lot of tech talk there. :) As far as I understand, basically you're saying to not offer a downloadable CPR file then? Only offer a downloadable DSK file? (And one's own physical cartridge edition as well of course).
Not saying that's a bad idea. Just making sure I understand you correctly.
yes correct.
Quote from: arnoldemu on 11:59, 30 December 24Quote from: mr_lou on 11:56, 30 December 24@arnoldemu A lot of tech talk there. :) As far as I understand, basically you're saying to not offer a downloadable CPR file then? Only offer a downloadable DSK file? (And one's own physical cartridge edition as well of course).
Not saying that's a bad idea. Just making sure I understand you correctly.
yes correct.
Which might prevent pirate cartridges, but makes pirate disks easy. Unless you can write a disk format that commodity hardware cannot write, at which point you're back in the same boat as requiring some sort of external hardware add-on: production costs for the legit versions spiral just as much as for pirates.
Quote from: andycadley on 12:15, 30 December 24Quote from: arnoldemu on 11:59, 30 December 24Quote from: mr_lou on 11:56, 30 December 24@arnoldemu A lot of tech talk there. :) As far as I understand, basically you're saying to not offer a downloadable CPR file then? Only offer a downloadable DSK file? (And one's own physical cartridge edition as well of course).
Not saying that's a bad idea. Just making sure I understand you correctly.
yes correct.
Which might prevent pirate cartridges, but makes pirate disks easy. Unless you can write a disk format that commodity hardware cannot write, at which point you're back in the same boat as requiring some sort of external hardware add-on: production costs for the legit versions spiral just as much as for pirates.
True but I don't think that any physical discs would be done and sold. Somebody would need to find error free 3" discs, a working 3" drive, write it to a 3" disc and print out a label and then I think it'd be less likely to command a high price on ebay.
Quote from: arnoldemu on 11:23, 30 December 24The only way I can see to prevent somebody from burning a cart is to ensure the cart they booted the machine from is not yours.
This method can still be hacked but might just be enough but does involve extra effort and work.
Provide the download as a disk. If you need the capacity of a cart use extra memory. At some point starting up the game or during the game scan the roms in the cart range and check they are the basic ones. Check all from 128-255!
This avoids nocart being used to put it onto a cart from a disc. You can also defeat nocart by using a 80 track double sided disc and filling it up even if it's with junk, just enough to make it beyond the capacity of nocart.
Then as has been said before offer the actual cart only direct through you and incentivise with extras.
I love this idea! The dev will have to accept not being able to offer a downloadable CPR, but sacrifices has to be made, so it'll do. This is a great example of the kind of solution I was asking for. Thanks.
One could even expand on it a bit, and show an info screen if nocart was detected.
Excuse me sir, terribly sorry for interrupting your fine business here.I just wanted to let you know that what you're doing here is actually not legal. No sir.This game is in fact the Intellectual Property of <owner>, and you do not actually have permission to distribute it on your own cartridge solution.There is already a fine cartridge edition offered online, etc etc....:)
If you close the software in rp2354 you can make a compiler that will secretly change the code addressing/banking.
exp code z80
Org 100
Ld hl,(100)
Jp 100
In the sense of equ idea code:
Org 100
Ld hl,(200)
Jp 300
Real code 3x100 even after capturing from z80 pins it is not possible to burn it to EPROM
Amsteam could be the solution for mr_lou.
It is a custom hardware, acting sort of like a security dongle. And it isn't documented, making it very hard for emulators to replicate.
That means that the crackers will have to work on real hardware. Not so easy for them.
After payment, the game is encrypted and delivered online. So there are no files or physical media that can be copied.
And the hardware uses an obscure Yamaha OPN3 sound chip. So even if if the game gets cracked somehow, it won't have any sound.
One idea: If you are doing cross-dev, you could create a build pipeline where you arrange the source code of your game in a way that, when building the game, some chunks of the source would be scrambled in a certain way, probably based on some random number. I think this would need some preparation on the source code to be done so that you end up with as many chunks as needed (see below).
Imagine (for the purpose of this post, reality might differ) you have a source file which consists of 100 functions which are called from the game at arbitrary points. Further imagine that the position in memory of those functions does not matter for the game to work, they can be in any order / at any position. This should be true for a lot of code I think. If you now were to permutate (i.e. reorder them) those functions (imagine a lot of tiny source files for each of them) before assembling the binary, you would be able to create as many different versions of the binary as there are possibilities to permutate those functions.
The permutations could be created using a random number generator, but I think then it would be important for it to be deterministic and collision free so that you are able to create as many unique sets of function orderings as there are functions.
One example: Imagine you have 4 functions, fnA, fnB, fnC and fnD which are used by the game and can be at any position within the binary. If my math (4 factorial = 4×3×2×1 = 24) is not wrong, you have then 24 ways of ordering those 4 functions. The more functions, the more possible permutations. 8 functions would already yield 40320 possible ways of ordering them.
Each permutation of the functions would then be a unique identifier for that specific build of the game. One game could be made of ABCD, the next one ABDC and so on. This identifier can be linked to the buyer and enables you to reverse the process. Given a copy of your game, you can deduce the identifier by applying a process (i.e. running a yet-to-design-and-write small tool against the binary) which detects and prints the order of all scrambled functions, e.g. ABDC and, voila!, you know who bought it. The tool itself would need some knowledge of the scrambling, for example taking some samples from the binary and map this set of samples to the identifier, but this could be generated and appended to e.g. a file every time you create a new build.
If then someone publishes a copy of your game, you can just run that tool to deduce the identifier and compare with your existing set, yielding the original buyer. I would hope that this would prevent most people from sharing their version, knowing that it a) can be connected to exactly one buyer relatively easily and b) can not easily be turned into a version which can *not* be identified without reverse engineering (re-assembling) the game code.
That definitely sounds like the best methode ever! You can even do this with data areas, not only with functions (best to do it with both at the same time).
Every game or app has more than 10 functions and data areas which can be swapped in different orders, so 1000s of different versions should be possible. Maybe a nice idea for an Assembler option :D
It should be impossible for a cracker to hide the original source. Or would it? I think without disassembling the whole stuff, it's impossible to "crack" a game and to hide the origin buyer!
Yeah, then you can really fuck him :D
Putting code in your game that makes it not work on some hardware or combination of hardware, or breaks if I try to run it on a machine that differs from the one I registered, is the sort of thing that would make me go looking for a cracked version to run instead. Or not bother at all.
It creates an incentive to crack the game, and inconveniences the small number of people who did give you money, not that there's any money to be made anyway. Anti-piracy locks are ANNOYING
What
@BSC (and others) are describing is basically a hidden watermark. I.e. a way to identify who the specific copy of the game was sold to. It doesn't actually prevent piracy, and it's easy to register a game to a false name.
Not saying it's useless. Just pointing out I think there's a difference between a watermark and a lockout.
Comparing again with music, I can easily add hidden watermarks in my tracks, as a method to prove that I am the actual author. Or as a way to identify who I sent an early preview to. But it wouldn't prevent theft occurring. It would only reveal a name or nick that I can't trust. Not particular helpful.
@Anthony Flack Everything is annoying to everyone who wants things to be different. ;-) Piracy is annoying to gamedevs. Anti-piracy is annoying to pirates. Someone will have to yield.
It is true though, in my experience also, most of the anti-piracy methods out there doesn't affect the pirates at all, but do affect legal users. One example is DVD/Blu-ray movies where legal owners have to watch all of the anti-piracy messages before being allowed to watch the movie. That is silly. So yes, I agree some effort has to be made to consider not making life miserable for legal users.
Preventing people from turning a DSK into a nocart, while adding a friendly info screen about why, shouldn't annoy anyone other than those who insist the whole world has to bow down to their wishes.
@arnoldemu 's idea is absolutely perfect for
@Cwiiis ' scenario, I think.
Quote from: mr_lou on 07:10, 31 December 24What BSC (https://www.cpcwiki.eu/forum/profile/?u=480) (and others) are describing is basically a hidden watermark. I.e. a way to identify who the specific copy of the game was sold to. It doesn't actually prevent piracy, and it's easy to register a game to a false name.
Not saying it's useless. Just pointing out I think there's a difference between a watermark and a lockout.
The difference being that, with the right process in place (I gave some hints towards that but they are by no means complete), only the developer/publisher is able to create a registered game. No one else has access to the source code and the tools needed to for that.
Quote from: BSC on 13:05, 31 December 24The difference being that, with the right process in place, only the developer/publisher is able to create a registered game.
I get that.
I'm merely saying, in regards to piracy, it won't make a difference.
If we're talking about a commercial-only title, then someone will without a doubt buy a copy in a false name, and then spread that copy.
Pirates don't care, and most players don't care either.
So I wouldn't recommend all of that effort to anyone expecting it to make a difference in regards of piracy. But it could still be a fun thing to do of course, for other reasons.
Another approach that I've heard some gamedevs take, is that they actually create a pirated copy themselves - with errors - and then spread it.
I can't remember the title, but I believe there was a game where you took the role as a software developer, and the object of the game was to make money on making games.
The pirated copy (that the gamedev released himself) was impossible to complete - because the object of the game was prevented since the games would always get pirated. :-D
Brilliant way to make a point.
In relation to
@arnoldemu 's idea about filling up all the space on a disk, another dev added that this "junk" data shouldn't all be added together at the end or beginning, because then it would be relative easy to just trim the real data. A better placement of the junk data would be here and there in between the real data - using real filenames that look like they matter.
Another aspect of personalised games, is that it will probably affect the resale value a lot?
How many people wants to buy a game that has been personalised to someone else?
I can't offer any new technical ideas for protecting discs and cartridges, but I've noticed that in the C64 gaming community, new games are available on itch.io, but it's very common for developers to charge money for them in order to download the files. Of course, that doesn't stop crackers from doing what crackers do and uploading their cracks to CSDB.
On the other hand, the large majority of new CPC games are available on itch.io, but very few developers insist on them being purchased before they can be downloaded. However, it seems that the CPC community is respectful of games that have to be purchased. In the case of CPC Jewels and Gates to Heaven (both of which initially had to be purchased for $1.00), none of the main download sites that I know of (CPC-POWER, CPCRulez, NVG and Crackers Velus) made these games available to download, until ESP Soft made them free of charge. I hope that GGP's recently released Mighty Steel Fighters will be treated in the same manner.
Basically, what I'm saying is that uploading a CPC game to itch.io and making people purchase it in order to download it is probably the way to go to reduce piracy - although it admittedly won't stop cartridge bootleggers from purchasing a CPR image and then making and selling their own cartridges.
Quote from: Nich on 15:11, 31 December 24The large majority of new CPC games are available on itch.io, but very few developers insist on them being purchased before they can be downloaded. However, it seems that the CPC community is respectful of games that have to be purchased. In the case of CPC Jewels and Gates to Heaven (both of which initially had to be purchased for $1.00), none of the main download sites that I know of (CPC-POWER, CPCRulez, NVG and Crackers Velus) made these games available to download, until ESP Soft made them free of charge. I hope that GGP's recently released Mighty Steel Fighters will be treated in the same manner.
I have noticed this too, and I too think it's really nice to see this kind of respectful behavior in the community.
The fact that very few developers require payment has to do with the size of the CPC community I think. It's just not big enough.
It's the same reason why the Amstrad CPC version of my tracks are always free to use even for commercial projects, while I put a price on other filetype formats of the same tracks. That's my way of supporting CPC gamedevs; by offering free music regardless of their project being freeware or commercial. I doubt anyone in the CPC community is doing CPC stuff for the money. But of course, charging € 1 EUR would hardly qualify as "doing it for the money" either.
The "pay what you want" model for digital versions of the game + the "buy the physical collector's edition" combination is what works best for CPC productions, I think. And I really like that itch.io makes that possible.
Quote from: Nich on 15:11, 31 December 24Basically, what I'm saying is that uploading a CPC game to itch.io and making people purchase it in order to download it is probably the way to go to reduce piracy - although it admittedly won't stop cartridge bootleggers from purchasing a CPR image and then making and selling their own cartridges.
While that's probably true yes, I suspect it will also limit the amount of players - even if we're only talking € 1 EUR , and that's not in the interest of the developer either. And as you say, it'll still be pirated by bootleggers, which is what started this thread in the first place.
But what it's all really about, is
helping the developers keep their motivation, in any way we can.
Piracy is a motivation-killer - especially after having put so much time and effort into making a physical edition of the game, so it'll be good to find ways to reduce piracy.
Money donations is a booster for most people, since it shows appreciation. Seeing an overall interest in one's project is also a booster, so don't be shy with those € 1 EUR payments on itch.io.
Having handy assets available to make life easier is also good, so musicians should go ahead and put their tracks on IGM for CPC devs to find them. ;)
It could be interesting to hear from developers what would help them keep their motivation. So I've created a thread about that here (https://www.cpcwiki.eu/forum/general-discussion/ideas-about-how-to-make-developers-keep-their-motivation).
There are bootlegs of my stuff on ebay as well. I'm not that bothered but...
In my physical release of SOH Tactics GX there is a special title screen not in the .cpr online and as far as I'm aware nobody has dumped this version, so people who bought off me have an some exclusive.
Almost everyone hosting the Bears! .cpr is hosting the bugged version that got fixed in 2021. I always say, the only place to guarantee the latest version of stuff is my website. So I strongly suspect that the ebay bootlegs are bugged, sorry ;) My physical editions of course AREN'T ;D
A message after the loading screen would deter the more casual bootleggers as they'd need to hack it out. Execute the message in such a way that hacking it out would be a chore.
Physical release versions as also a nice way to deter piracy. I've purchased some physical releases (you'll have seen them on my Youtube channel) and I love having them on the shelf.
Finally charging for downloads seems to work. I was happy to pay for Zeta Wing on the 64.
Remember if you are worried about the costs of a physical release, consider speaking to The Future Was 8 Bit. You won't make any money out of it (he isn't either by charging £4.99!) but Rod puts together the artwork and sorts all the duplication. The CPC is under represented in his range and it de-risks it for coders who would like a physical tape.
https://www.tfw8b.com/product-category/games/
Maybe by selling games with more content than the free downloadable versions?
You can't stop people from reselling original CPC games or copies on eBay.
Bootleg cartridges just show that the GX4000 lacks an "everdrive".
Quote from: Egg Master on 13:35, 03 January 25You can't stop people from reselling original CPC games or copies on eBay.
No one is talking about that.
We're only talking about how Amstrad CPC developers nowadays can prevent people pirating their games. Specifically the case of
@Cwiiis. And
@arnoldemu came up with a great method for that case.
Quote from: Egg Master on 13:35, 03 January 25Bootleg cartridges just show that the GX4000 lacks an "everdrive".
We have the C4CPC cartridge, which is similar to an Everdrive.
Quote from: mr_lou on 14:30, 03 January 25We have the C4CPC cartridge, which is similar to an Everdrive.
I have seen that on eBay, because it is no more available since years. :(