Cracking a C64 Game From Cassette: Livingstone, I Presume?

  Рет қаралды 43,865

8-Bit Show And Tell

8-Bit Show And Tell

Күн бұрын

In a previous video we took a look at the crash in the Commodore 64 port of the Operasoft game "Livingstone, I Presume?", unraveling the cause of the crash and coming up with a live-patch to fix the problem. This time we learn how to "crack" the game from the original cassette so we can patch the game and save it to disk permanently fixed, rather than having to re-patch the game every time it's loaded. Check the video description for links to everything I reference.
The previous video about the Livingstone, I Presume? bug: • One Bad Byte Broke Thi...
Further Reading / Info:
LOAD"*",8,1 VS. video: • LOAD"*",8 vs. LOAD"*",...
DisC=overy #3: unusedino.de/ec64/technical/di...
Autostart: codebase64.org/doku.php?id=ba...
More autostart: www.sizecoding.org/wiki/Commod...
Exomizer: bitbucket.org/magli143/exomiz...
Pucrunch: a1bert.kapsi.fi/Dev/pucrunch/
Byte-Bonker V1.5: csdb.dk/release/?id=49169
Cruncher AB: csdb.dk/release/?id=48475
ECA Compactor/Linker: csdb.dk/release/?id=18026
TapeTool: csdb.dk/release/?id=194915
To support 8-Bit Show And Tell:
Become a patron: / 8bitshowandtell
One-time donation: paypal.me/8BitShowAndTell
2nd channel: / @8-bitshowandtell247
Index:
0:00 Intro - last time
2:50 Why not just SAVE? Autostart
4:31 Tape program header modifications
8:33 Examining the loader
16:40 Preventing game execution & loading
19:49 Examining, patching, saving game to disk
24:38 Testing cracked game, two problems
26:14 Crunchers to the rescue
31:14 Does the cheat work now?
33:23 Tape re-mastering? Thanks!

Пікірлер: 206
@janlundthomsen
@janlundthomsen Жыл бұрын
Author of that DisC=overy article here. Very happy that I managed to write it clearly and concisely enough for someone to find a use for it approximately 26 years later. :) Also, kudos for using CLC + BCC [address of the BCC] for a tighter infinite loop rather than BCC'ing back to the CLC like I did back in the day. Can't remember my rationale for it, but I probably wanted to make absolutely sure nothing messed with the carry-flag before I got to invoke the machine code monitor of my Action Replay cartridge.
@BG101UK
@BG101UK Жыл бұрын
That machine language monitor in the Action Replay has certainly been handy for nobbling bits of code from other software and modifying it to suit! I could really do with one for each machine!
@Codetapper
@Codetapper Жыл бұрын
What's the reason behind using those CLC instructions vs a jump to itself? On the Amiga I would just put a branch to itself by writing $60fe, so I'm wondering what's different on the C64 if you have 3 bytes available anyway?
@damienretro4416
@damienretro4416 Жыл бұрын
@@Codetapper If the code gets moved, the JMP will still point to the old memory location...whereas the CLC and BCC are relative to the current memory location.
@Codetapper
@Codetapper Жыл бұрын
@@damienretro4416 Thanks, that makes sense, although in this case the code is not going to move. It seems very strange to me that there is no BRAnch instruction on the 6502!
@janlundthomsen
@janlundthomsen Жыл бұрын
@Codetapper What @damienretro4416 said. Using the machine code monitor to key in a JMP $XXYY would require me to know the address of those 3 bytes. Since BCC uses a relative offset, I could key the hex values ($18, $90, $FD) straight into the memory-dump without thinking. :) And if I would ever run into a protection scheme that moved the code, it would still work.
@xorfive
@xorfive Жыл бұрын
I learned more about cracking software in these 30 minutes than my entire childhood using a C64. Great video.
@jonathanwright1507
@jonathanwright1507 Жыл бұрын
about 10 years ago I got a C64 & read the basic book & understood what all the data numbers meant. When I was 13 (1985), I did not really understand the book, just copying the data to make a basic program work.
@BillAnt
@BillAnt Жыл бұрын
IKR?! hehe Ah the advantage of modern times and tools. Interestingly the tape drive wasn't very popular here in the US like elsewhere in the world including Canada. I don't remember seeing any for sale in stores back in the 80's, only disk drives.
@xorfive
@xorfive Жыл бұрын
@@ProgNoizesB I'll admit. I was a dumb kid.
@8_Bit
@8_Bit Жыл бұрын
Tape was common even in the US if you got into computers early enough. It was a very common format on the VIC-20 in 1981 and that spilled over to the Commodore 64 for the first couple years from 1982-1984. Until 1984 it was easy to find C64 games on tape in the US, and then very rapidly everything switched to disk only.
@BillAnt
@BillAnt Жыл бұрын
​@@8_Bit - Well that explains why I didn't see many/any software on tape here in the US after 1984 when I got my first C64. heh
@c128stuff
@c128stuff Жыл бұрын
One possible reason for the jsr instead of a jmp is to allow the game to check if it was indeed called from the loader by checking the return address on the stack. I don't recall which one, but one of the tape based games I cracked in the 1980s did that, and was from what I recall also using novaload.
@DavidYoud
@DavidYoud Жыл бұрын
That has got to be supremely satisfying to restore a broken game to the authors' intent -- lots of youtube channels restore hardware, very few restore software. :) I'm spoiled by the VICE debugger, and was missing having actual breakpoints when recently using the Super Snapshot V5 to disassemble some lightgun code on real hardware. I did the same thing as you, injecting my own infinite loops to create breakpoints (as you did with the "CLC, BCC $02BD"). That said, I was downloading cartridge manuals yesterday and found that both Action Replay and Retro Replay support breakpoints (up to 5, apparently?), and that the KCS Power Cartridge lets you step through live execution (like VICE) with its "walk" command. I haven't tried these out yet, but I will soon (these images all come on the Ultimate-II cart -- yeah, I know, not original hardware. :) ) Anyway, another great episode of exactly the kind of stuff I (and I'm sure others) love to watch. Thanks!
@8_Bit
@8_Bit Жыл бұрын
With Super Snapshot the "BR" command should set the breakpoint vector, and then BRKs should trigger it. I don't know how that compares with the AR/RR method, I'll have to try it sometime. I wonder how the KCS walk will work; it should be fine for "pure" 6510 code but any code that interacts intensely with I/O like the VIC-II, SID, or CIA is bound to have problems as they continue to "tick" away like clockwork unlike VICE which is able to stop all machine functions. The Epyx Fastload monitor has a decent step feature, but again, it's really only good (in my opinion) for debugging non-I/O routines.
@chrismason7066
@chrismason7066 Жыл бұрын
That's why whenever someone messes with me. I spoke 53280,0 their a$$ and they dont mess w me anymore! All hail the poke 53280,0
@cactuslist
@cactuslist Жыл бұрын
@@8_Bit you can add intro to this game with trainer+ (poke these opera stuff where needed) and/or maybe show us different fastloader routines :)
@BillAnt
@BillAnt Жыл бұрын
​@@8_Bit - Robin, I was wondering if you ever came across of a game or other program which had an auto-run disk-loader protection against the use of SuperSnapshot or other freeze cartridges? In other words, can a disk-loader automatically run a piece of code early on during loading to disable these cartridges, specifically the NMI/IRQ lines?
@janlundthomsen
@janlundthomsen Жыл бұрын
I knew about the “SF” breakpoint command in the Action Replay machine code monitor, but for a while I alternated between the Action Replay and the Expert Cartridge so I picked something that worked on whatever freezer cart I was using. Turned out to be beneficial for the purpose of the article, too. :)
@JustWasted3HoursHere
@JustWasted3HoursHere Жыл бұрын
Floppy disk protection took this sort of thing to the next level. It was an ever-escalating arms race between the hackers and the software companies. From what I understand, cartridges basically had no copy protection because they felt it was not necessary (special hardware needed).
@geoffreysummerhayes4793
@geoffreysummerhayes4793 Жыл бұрын
I remember. Some loaded code on the 1541's buffers. There was one I couldn't figure out. I think it had "dragon" in the name. It started by loading into the ROM area and rolled over to 0000 where it turned the ROM off. It was also full of the undocumented opcodes. Still bugs me, I wish I knew how it worked.
@JustWasted3HoursHere
@JustWasted3HoursHere Жыл бұрын
@@geoffreysummerhayes4793 If I remember correctly, "Bruce Lee" was one of the hardest games to crack back in the day. Usually new games would be cracked within a day or two (or even BEFORE they were released; so-called "zero day" cracks, usually by someone on the inside), but Bruce Lee, at least on the C64 took almost a year. It's almost 40 years later so the details might be a little fuzzy though! One floppy scheme actually had physical holes on the floppy disk that could be steered around if the original loader code was present, but if someone replaced that code with their own, the floppy head would go ripping through the disk and it would be destroyed. Luckily this extreme type of copy protection didn't hang on very long. Funny thing about copying software is that you are legally entitled to make 5 backup copies of your software, but the software companies are not obligated in any way to make that process easy!
@MoosesValley
@MoosesValley Жыл бұрын
Terrific / informative video. The Super Snapshot cartridge sure is powerful ! I removed the CD/DVD checks from dozens of games I owned back in the 1990's / 2000's, because I got sick and tired of hunting for the game box (somewhere in a wall of boxes), getting the CD/DVD out (and risking damaging the game box as I opened it), putting the disk in the drive, etc every time I wanted to play a game. Even if you had an image of the original CD/DVD on your hard-drive, it often would not be pass the "valid disk" check. The process of removing the CD/DVD check involved tracing the running game in assembler and working out the best way to remove the disk check, and then create a patch to apply to the original game so I could remove the CD/DVD check anytime I wanted in the future if I uninstalled and then re-installed the game years later on.
@JosipRetroBits
@JosipRetroBits Жыл бұрын
Absolutely Great video :) It's so amazing to look at the whole process of defining protection and fixing the game! I can imagine how long this actually took to figure it all out and how many trials and errors, great job!
@MarianoLu
@MarianoLu Жыл бұрын
That string starting in 0877 “CUANDO QUIERAS…..” at 20:59 means “whenever you want” or “whenever you’re ready”. Great content as always Robin
@MarianoLu
@MarianoLu Жыл бұрын
And after all these years we have a cracked and Fixed disk version of Livingston Supongo!!
@gamingSlasher
@gamingSlasher Жыл бұрын
I wanted to learn this with my C64 when I was young but never had that external tool and information was not as easy to get as nowadays (only books). Kinda enjoyed to watch this and still miss those days when programmers was actually squeezing the most out of the computer instead of just bloat nowadays.
@NNokia-jz6jb
@NNokia-jz6jb Жыл бұрын
Same. It is amazing what the C64 can do with just 64KB of memory. Full applications, full games. Crazy.
@iancolquhoun
@iancolquhoun Жыл бұрын
Thanks for the excellent video @8_Bit! I remember more than a few years ago learning a little bit about interrupting disk fast loaders/auto starters from TLR, but it seemed to be considerably more complicated due to the fact that the disk drive isn't just a dumb device. Much more difficult to digest than this. Thanks again!
@astraton2001
@astraton2001 Жыл бұрын
Wow! After all this years I finally know what is behind these great crunchers and packers. I always wondered how someone was able to develop it in the early c64 ages.
@TJWood
@TJWood Жыл бұрын
I so very much enjoyed watching this and how you worked through the process. I used to have an Amstrad CPC464 back in the day and was so jealous of my friends with C64 and their wondrous cartridges that allowed them to do all this cool stuff. Keep up the great videos.
@TheKetsa
@TheKetsa Жыл бұрын
Absolutely love this in-depth series.
@sweetlilmre
@sweetlilmre Жыл бұрын
As someone who's spent a fair bit of time analysing tape headers, this was brilliant! Thank you for the excellent video 😊
@mikegarland4500
@mikegarland4500 Жыл бұрын
Another masterful episode. Still a bit over my head in skill level, but who knows, maybe one day.. Now that I have a little time to devote to (re)learning my favorite platform, I hope it gets easier in the near future. Just the fact that I can actually follow along is a good sign. 🙂 Having these videos of yours handy while embarking on this journey has been a HUGE help though. I can't wait to see what you do next.
@eugenetswong
@eugenetswong Жыл бұрын
It is very much over my head, but I am really grateful. Robin, I doubt that you'l read this, but thank you!
@etansivad
@etansivad Жыл бұрын
Oh cool! Thank you for posting this. This is literally what I asked for on the last video! I'm stoked to watch this episode :D
@figurehead1971
@figurehead1971 Жыл бұрын
Novaload had to be one of the most common of fast tape loaders, created by the late Paul Woakes of Novagen, and the classic games Encounter and Mercenary.
@singletonjohn7339
@singletonjohn7339 Жыл бұрын
One more great video Robin! I learn SO MUCH watching your videos! Thanks!
@xotmatrix
@xotmatrix Жыл бұрын
Very interesting and well explained. I've never seen boot tracing applied to a tape game. What a treat!
@8_Bit
@8_Bit Жыл бұрын
I haven't heard the term "boot tracing" before, it's a good one! Is it a common term with Apple II hackers?
@xotmatrix
@xotmatrix Жыл бұрын
@@8_Bit Maybe it is Apple II parlance. It's the standard cracking method on the Apple II, just like you showed, modifying each stage of the boot sequence to load the next one and saving it to disk, until you've unlocked everything. Tools like Super Snapshot existed (eg. Senior PROM) but are generally not needed thanks to the Apple II's built-in monitor routines, and if one is careful with rebooting after moving data out of critical areas. Because of the way Apple II disks work (entirely software-defined I/O), boot tracing is an ideal way to get the program to crack itself stage by stage. Nowadays, software exists that completely automates the cracking process, namely Passport by 4am.
@NeilRoy
@NeilRoy Жыл бұрын
One game I recall reading about how hackers had a hard time cracking it. They thought they had cracked it, but then the game was unbeatable etc... and they didn't notice this until after they released their crack for it. The reason being is that the developer purposely placed checks in their code to detect hacks and they still let the game run, but they altered certain aspects of the game so it could not be completed. I actually tried this out on my own game (Deluxe Pacman 2 for the PC) where I put in fake variables that were not important and I had code to detect hacks and cheats, if one was detected, I would alter the game so it was easier to get killed, you got a MUCH lower score and it wouldn't let you put your name on the high score list. It was fun to code that way and I had someone who had put out a cheat hack for my game (it wasn't needed, I had ways to cheat built in). I just always wanted to do that. Fun times... for me anyhow. :)
@vlg_bcn2812
@vlg_bcn2812 Жыл бұрын
Amazing job !! And you also keep the old tools available right then.. that makes this video even more enjoyable.
@Hacker-at-Large
@Hacker-at-Large Жыл бұрын
Nicely done. It was cracking my favorite C64 game that got me interested in computer security. Been doing that now for 35 years.
@kaeriks
@kaeriks Жыл бұрын
What game was it?
@ozwalled2007
@ozwalled2007 Жыл бұрын
All so cool. Looking forward to a full playthrough video. :)
@thechaosengineer
@thechaosengineer 7 ай бұрын
I loved your two videos on this peculiar situation. So much so that I published a video of my own in which I fix a TAP file of the original game, preserving its turbo loader, Novaload.
@StatMatsVidz
@StatMatsVidz Жыл бұрын
Really nice and informative video Robin using some proper old-skool methods of tape cracking. :D
@mercuryvapoury
@mercuryvapoury Жыл бұрын
Fascinating! Iremember Novaload from back in the day. I always wondered how interactive routines such as "Invadaload" worked, which played the "One Man And His Droid" theme while displaying a perfect;y acceptable Space Invaders clone while the game loaded. I guess that's not just another video, but another series altogether.
@LordmonkeyTRM
@LordmonkeyTRM Жыл бұрын
Now you need to make a cracktro😅
@SledgeFox
@SledgeFox Жыл бұрын
Brilliant detective work, amazing to watch, thank you very much!
@spocklodgic
@spocklodgic Жыл бұрын
So good, I love the depth of information.
@petesapwell
@petesapwell Жыл бұрын
Fasicinating to watch, and flippin well done :)
@lockone1977
@lockone1977 Жыл бұрын
This was a huge part of my childhood, thanks for making me relive it! But you have to pack it first, then crunch 😅
@PigDogBay
@PigDogBay Жыл бұрын
Great video and well explained, fascinating the tricks that were used.
@byteforever7829
@byteforever7829 Жыл бұрын
Another masterclass, thanks for sharing 😀
@HoffmanYouTube
@HoffmanYouTube Жыл бұрын
Great video. I used to do a little cracking on the Amiga when I was a kid so it was fun to see that some of the principals are effectively the same. Also Kudos for using period correct tools :D
@TotallyAqua
@TotallyAqua Жыл бұрын
Really enjoyed this video. Great content. It was so interesting to see the techniques employed by the original coders to fast load/protect C64 games. I still wonder how the coders built up this knowledge about the C64 operations before the internet. I remember reading books about the C64 like the Programming Reference guide but for me it didn’t really connect the dots between how the C64 worked and what could be achieved through creative programming.
@JavisoGaming
@JavisoGaming Жыл бұрын
I am so impressed with your skill and knowledge!
@trelard
@trelard Жыл бұрын
I saw that your fix was used by the C64 scene to spread fixed versions of the game. Good stuff.
@chrisdixon5241
@chrisdixon5241 Жыл бұрын
Great video Robin, thanks for sharing! I really enjoyed watching the process broken down from loading the fast loader without allowing it to auto start, then disabling the auto start of the game and finally insert the fix and slim down the result. Especially given that cartridges like the Action Replay (and perhaps Super Snapshot?) could have allowed you to load the game, patch it and then dump the memory contents to disk (in the case of AR it could even install its own Turboloader to speed things up, saving the crunching step)... I prefer learning how to do it than taking the fast route and not seeing under the covers :) Since the Novaload is a reusable autoloader, perhaps it JSRs to allow the game to do some initial setup, change another vector somewhere and hand back to the autoloader for some additional functions before starting the game loop?
@markmaker2488
@markmaker2488 Жыл бұрын
Robin will be the first person ever to finish the game on a c64. Well done 👍👍
@MrRobbyvent
@MrRobbyvent Жыл бұрын
Whoever played the original Spanish version could end it
@markmaker2488
@markmaker2488 Жыл бұрын
@@MrRobbyvent i thought it was only on the other platforms like the amstrad that weren’t corrupted 🤷‍♂️
@creativesamurai8372
@creativesamurai8372 Жыл бұрын
You Sir, are a very smart and patient man. Thoroughly enjoyed this episode and am eagerly awaiting a tape remaster episode. You have earned yourself a well deserved cup of tea ;( yes im British lol. take care and enjoy your new fixed/patched game. also, will you be making this fix available to us less smarter/patient folks? Dave.
@Breakfast_of_Champions
@Breakfast_of_Champions Жыл бұрын
Nice shot of nostalgia and well explained... back when things were so much simpler...😋
@DinosorcerorLD5
@DinosorcerorLD5 Жыл бұрын
Another fantastic and educational video, thank you!
@scottfromderby
@scottfromderby Жыл бұрын
avid fan here, I LOVE LOVE these videos so much, especially as you're using authentic hardware to do the cracking too
@brianstuntman4368
@brianstuntman4368 Жыл бұрын
As a young kid, before I could afford a freezer cartridge, I bought a program through a magazine ad that allowed you to "backup" a few games that used common tape loaders including early versions of Novaload. I can't remember the name of the program, but I'm sure it was written by the late great Tony Crowther (although my searches have drawn a blank on any info). At least now I have a better understanding of how it must have worked, intercepting then modifying the loader so that once all game data had loaded you could save a backup.
@thasinister
@thasinister 9 ай бұрын
That would be very interesting but it could be lost media.
@talideon
@talideon Жыл бұрын
I'm not sure how well understood this is in Leftpondia, but in the European demo scene, the slash means "of"
@jonathanwright1507
@jonathanwright1507 Жыл бұрын
I always used "Freeze Machine" back in the 80's which had a 14 second disk drive load time & you could save to tape but not as fast (but it was loaded before about 45 on the tape counter!), saved loads of time waiting for games to load.
@alschannel
@alschannel Жыл бұрын
thanks, another great video, managed to follow along on my TheC64 with no problems! :)
@pacbilly
@pacbilly Жыл бұрын
Boy the Livingstone theme sure is relaxing.
Жыл бұрын
Very interesting video. I haven't seen a tape fastloader game cracked before. Now the next level would be cracking a game which uses multiload, like Creatures 1. :) But I guess that was not cracked from tape to disk, but rather the disk version was cracked directly. There were also games which were transfered from cartridge to tape or disk. That would be again something very interesting to see how it was done as you have the cartridge port occupied with the game and you can't use a snapshot cartridge. Especially with game cartridges using bank switching.
@damouze
@damouze Жыл бұрын
Fascinating. I remember playing this game on my MSX as a kid. I wouldn't be too surprised if I still have it in a drawer somewhere. I never owned a C64, but I would be very interested in learning how the fast loader works. On an MSX the defaullt baud rate was already 1200 and could be bumped up to 2400 from within basic. I think the maximum reliable rate was around 4800 baud, but I know Philips published a game collection on an audio CD that contained the games recorded at 9600 baud. However, the BIOS handled most of it. The "speed settings" were just a bunch of parameters in system RAM. Encoding and decoding is done at a hardware level using an op-amp and some resistors and capacitors.
@Helltormentor
@Helltormentor Жыл бұрын
Cool video, eventhough I don't have a clue what you're talking about. All that codestuff is really something I don't understand. :)
@coldobajose
@coldobajose Жыл бұрын
Melancolia, gracias hermano ♥️
@OscarSommerbo
@OscarSommerbo Жыл бұрын
On the subject of tape fastloader "Mr. Z turbo" is really fascinating, and it was endemic in Europe at least. In the 90s I learned that Zoltan Kelemen (Mr. Z) was a Swede.
@allenhalsted4895
@allenhalsted4895 Жыл бұрын
Long ago I made a game in Javascript that was intentionally unwinnable. It was hacking themed game. No matter what you did the computer would cheat and you would loose. Naturally being a hacking game the only way to truly win the game and see the end credits was to hack the code. Which is why I chose Javascript in the first place. Most people just assumed it was bugged and gave me a bad review even though the code made it obvious what you had to do and the "you lose game over" taunts from the computer strongly hint at it. Anyway videos like this make me think that if I remade it in a compiled language then at least Robin would enjoy it. :-)
@no1leader135
@no1leader135 Жыл бұрын
Thank you for this video. 👏 Now, I could get my game "Turbo Esprit Challenge" from cassette to disk. It has a multiple loader. Without having a Snapshot 5 cartridge, I had to use my "C64 magazine (German) ML monitor S-MON" to disassemble the code.
@SteveGuidi
@SteveGuidi Жыл бұрын
Glad you mentioned ECA Compactor -- that was my tool of choice for this type for compacting and linking work! I remember using ECA for an "intro" I added to several download programs looooong ago🙂. More recently however, I found an old sid/interrupt-driven music player I wrote in the 90s. It consisted of a small assembly routine to play the music, a BASIC front-end to load/start/stop the music, and a custom character set I borrowed from some software. All of that was compacted and linked in one executable so the individual components didn't need to be loaded in an adhoc fashion. I was initially only interested in the BASIC listing of the program and couldn't figure out why I could only see the BASIC program in memory after the program had run. Why would I put such complex copy protection that would fool future-me? One of the local C= club members immediately pointed out the de-compacting routine and it all came back me.
@BillAnt
@BillAnt Жыл бұрын
Ah those packers and crunchers. I had to beg Strider from Fairlight to let me have one of theirs, it was not widely distributed back in the day, it was a closely kept secret by the warez groups. heh
@Berend70
@Berend70 Жыл бұрын
What a nice video! Very instructive..
@johnrumm4786
@johnrumm4786 Жыл бұрын
That took me back a bit :-) I got a 1541 to use with my expanded VIC-20 in 1985. Needless to say very little VIC software was available on disk, so one of the first things I wanted to do was transfer tape based software onto disk. Many titles used similar tricks to load and auto run programs. Typically loading into the the small block of RAM below the system vectors (the buffer started lower at $02A1 on the VIC). They would normally run off the end of the buffer, and overwrite the BASIC warm start vector at $0302. That would immediately run the stub loader program when the system completed the load and attempted to return to BASIC. Most games could be ported just using the VICMON cartridge to load main program, and then save it to disk. Then you needed to re-write the stub loader to load from device 8, (and also usually add a system call to SETNAM to specify a name of the file to load - tape games typically did not bother to do this). I would then use the same vector trampling trick in my loader so that just loading the stub (with a ,8,1 to force it to not relocate) would auto load and run the main program from disk. A few titles would load code into screen RAM - so on those you could not manually do the move in the monitor since the screen interaction would corrupt the code. For those you needed to write some assembler to automate the load and save so that the screen RAM was not altered in the process. The irony was that with some games, the challenge of working out how to get it working on disk was actually more fun the playing the actual game! Not to mention learning loads about how all the technology worked.
@bitoxic
@bitoxic Жыл бұрын
Nice video! Just missing crack intro! 😁
@markwrightrf
@markwrightrf Жыл бұрын
Oh the feeling of satisfaction when you make a clean kill like this 🙂Now we just need a janky intro with potty-mouthed scroll text... Greetings to Robin...
@TheSudsy
@TheSudsy Жыл бұрын
My mate had a C64 back in the day (I had Spectrum and 800XL). He had a disk drive and cartridge (some sort of freeze frame or action replay) and he would be forever "packing" his pirated games onto disk, which bemused me at the time. Fascinating stuff, back in the day you could have a job with Fairlight.) We used to have work farmed out to us by a group (cant remember the name) but we all had handles from Star Trek. My mate was Mr Sulu..... I used to hand draw the art work for cracktros and he would add the scrolly text things and music. Fun days.
@donnierussellii4659
@donnierussellii4659 Жыл бұрын
One of my games was cracked from 4 disk sides down to only one, with nothing cut, and faster loading; quite amazing.
@PontusBerg
@PontusBerg Жыл бұрын
Which one was that?
@donnierussellii4659
@donnierussellii4659 Жыл бұрын
@@PontusBerg Castle Shadowgate for the C64.
@PontusBerg
@PontusBerg Жыл бұрын
@@donnierussellii4659 Sailor is the best one around. He really honoured the game with an excellent effort. That said, level crunching makes a big difference.
@bmartin427
@bmartin427 Жыл бұрын
The development support code looks like a couple of different things that got layered on top of each other. I think the earliest part was a BASIC program that looked something like: ... 1 IF A=0 THEN A=1:LOAD "RS232-CBM",8,1 2 POKE 248,200:PRINT"CUANDO QUIERAS .......":SYS 828 (where 'cuando quieras' is Spanish for 'when you want') It looks like that basic program got overwritten with a short ML routine which changed banks with interrupts off, then called kernal functions to open a file, call it PRUEBA.BIN, then save memory to the file, then changed banks with interrupts off again. Then that got stomped with a basic NEW command to zero out 0801-0802, plus a couple of other random clobbered bytes.
@nicolaibrowinkel3473
@nicolaibrowinkel3473 Жыл бұрын
Really great video!!
@TheHighlander71
@TheHighlander71 Жыл бұрын
I've had a look at the KERNAL routines you used to load from tape. Someone's done some clever investigative work here to figure out how to load a tape file.
@eekee6034
@eekee6034 10 ай бұрын
I love the Commode Security _patch_ :)
@whalt
@whalt Жыл бұрын
This reminds me of buying Spy Vs. Spy on disk back in the day and being disappointed that my Epyx Fastload cartridge did nothing to speed up its very long load time. I figured out that the game was loading into low memory and was thus overwriting the disk routine vectors with the original values rather than the ones being used by Fastload. So with a disk sector editor I went in and changed the vectors in position within the file to the Fastload ones. I wound up with a game that loaded much faster but would only work on a computer that had the Fastload cartridge plugged in. Considering I rarely took it out that was fine by me.
@hugoegon8148
@hugoegon8148 Жыл бұрын
Very interesting, many thanks for sharing. 😊
@TheHighlander71
@TheHighlander71 Жыл бұрын
Super interesting. I've never really looked into any of this. One question I have though is if there are KERNAL load routines like you showed in this video, but for disk instead of for tape?
@firstsurname9893
@firstsurname9893 Жыл бұрын
No not really, to the 64 disk drives are just serial devices connected to the IEC bus. That's why CBM basic has no commands to do things like formatting a disk or deleting files.
@TheHighlander71
@TheHighlander71 Жыл бұрын
@@firstsurname9893 Thanks.
@robsku1
@robsku1 6 ай бұрын
Oh yes, this is fascinating! While technically not cracking, which literally means circumventing the copy protection, the skills required for this would have enabled one to crack games back then as well - and not just 8-bit ones that fit in a couple dozen KB's. But just as well with 16-bit DOS games. I had a whole load of copied games between pre-teen and teen years. Most were cracked - the copy protection was always some question you needed the actual manual or accessory, but people were very inventive in copying them. But they were often quite cumbersome, and one game I had to pick the correct image of a character in the game and I didn't have any other way than to start the game again and again until I guessed right :D I now realize that I would have had the skills, but it never dawned to me - I was too much into simply make my own creations :P
@8_Bit
@8_Bit 6 ай бұрын
The auto-running and fast-load features of C64 cassette games are a form of copy protection: as I show in the video, you can't just LOAD and then SAVE (ie copy) this game. Removing the auto-run and bypassing the fast load and turning the game into a single regular Commodore file allows it to be copied with the regular LOAD and SAVE commands not only on cassette but also to and from disk. So now it's cracked or de-protected or whatever one wants to call it.
@yogibear2k220
@yogibear2k220 Жыл бұрын
It's amazing you are able to learn all this. I was totally lost after you put the cassette into the player and pushed the button. Then you talked about casting spells (isn't that what a hex is?) and nibbling at something? I am so glad I was born stupid! So well done, but after 7 minutes I need to come up for some air and pay some space invaders. I understand that!
@digitalman2112
@digitalman2112 Жыл бұрын
Really interesting. Thank you!
@dataroger
@dataroger Жыл бұрын
Story from my C64 cracking days. One fastloader used an exclusive or command on each byte from the tape so it was garbled data on the tape that was changed before storing it in RAM. The loader loaded several parts, each with a header with a start and end address. Several parts was just one byte with the address on the immediate byte of the EOR command. Effectively making the next part having data, including the start and end address being encoded differently. Other times it loaded a single immediate byte into the loop counter for the wait branch until reading the next signal from the tape head, effectively changing the speed of the data from tape for the next part. So to crack these games you had to read in one and one part to see what happened, is it game data or some more protection code?
@stefanfriedt3450
@stefanfriedt3450 Жыл бұрын
They did a lot of weird things back then. I rember a tape loading the fast loader after every 1k or so to a different memory location. Today most times you only have to convert the tape to a tap file and can extract the individual parts with tapclean so you only have to find the start adress.
@eugenetswong
@eugenetswong Жыл бұрын
Thanks for sharing your genius hacking, Robin!
@williefleete
@williefleete Жыл бұрын
I wasn’t around during the tape loading era but was still interesting to watch
@MrThomashorst
@MrThomashorst Жыл бұрын
Seeing the execution of code in screen memory brings back some memories😊
@salvocristaldi1689
@salvocristaldi1689 Жыл бұрын
Thanks to your suggestions I improved the cracking speed... Spy hunter craked and modded to be C64 GS compatible. 🤩
@8_Bit
@8_Bit Жыл бұрын
Nice! What needed to be done to Spy Hunter to make it GS compatible? Was it the joystick/keyboard prompt requiring a keyboard press?
@salvocristaldi1689
@salvocristaldi1689 Жыл бұрын
@@8_Bit You need to press J or K to select joystick or keyboard and, of course, without a keyboard you cannot select none of them. At lemon64 forum (general) look at "Adding second fire support to some C64 games"... it is my.
@salvocristaldi1689
@salvocristaldi1689 Жыл бұрын
Spy Hunter has type 1 header tape, so basic program header, but it's read at $C049 up to $C0F9. After read the loader i found easily starting address ($7000). $C000 it's free to add your routines to 2nd fire management.... joystick check to bypass J key... etc etc
@classicnosh
@classicnosh Жыл бұрын
Your fill value of 0xBB does make a lot of sense. It's not even a standard 6502 opcode.
@terryraymond7984
@terryraymond7984 Жыл бұрын
wow i had wanted to crunch some programs thanks for showing that process.
@simonscott1121
@simonscott1121 Жыл бұрын
Chotaire was around in the 90s when I was an uni, used to catch up regularly with him on IRC :)
@kilbabaplays8944
@kilbabaplays8944 5 ай бұрын
I'd love to see a deep-dive from you showing how C64 "loaders" work exactly, specifically how they speed up the loading
@kilbabaplays8944
@kilbabaplays8944 5 ай бұрын
Without the game crackers scene and "software archiving", I would not still be involved with computers today. We couldn't afford to buy the games but myself and many friends used to copy games from an older friend who i think even had the internet way back when, because he seemed to have basically all games :D
@HelloKittyFanMan
@HelloKittyFanMan Жыл бұрын
What if you tried pressing the "stop/restore" combo during that colorful screen (at least right when it reaches a time that you know it would be done but before the software starts running in a way that may disable stop/restore?
@BG101UK
@BG101UK Жыл бұрын
Fascinating video! .. About fastloaders: I wonder how many of us "liberated" the fast-loader from commercial software to use on our own programs? (Disk fastloader in my case, from one of the disks which came bundled with my 1541, modified slightly to point at my own program). I used my Action Replay for this, which is currently plugged into one of my C64Cs.
@donaldwiller9238
@donaldwiller9238 Жыл бұрын
Great job 👏
@MyAmazingUsername
@MyAmazingUsername Жыл бұрын
Yarr a pirate, Harry!
@magnustveten492
@magnustveten492 Жыл бұрын
You need to add a “cracktro” ….. just put the thanks to the patrons bit you have at the end of the video:)
@JohnnyWednesday
@JohnnyWednesday Жыл бұрын
I could have never achieved this as a kid - I just used a Final Cartridge III to save a running game to disk after loading from tape - it was a long time ago and didn't work with every game - probably due to what you mentioned in some previous video about the memory range used by the freezer cart. Not that I knew! if memory serves some games would work if I froze them just as they finished loading - perhaps I captured them in a decrunching state that didn't occupy the freezer range at that moment (it was usually games from magazine tapes so likely using compression)
@stephenwhite506
@stephenwhite506 Жыл бұрын
Strange that the NOVA load didn't load compressed data that is then decompressed before the game runs. This could have made the load time even shorter. It would be interesting if you could convert your crunched file to use NOVA load tape and see what the time difference would be or maybe modern tape loaders could be faster than the old NOVA load.
@talideon
@talideon Жыл бұрын
Novaload is one of the older loaders. I've never poked around its innards, but my understanding is that it got used so much because it was reliable, easy to license, and you could easily slot in a loader image and music routine. Keep in mind how awful the built-in loader was in the KERNAL.
@csbruce
@csbruce Жыл бұрын
4:09 Can't the Super Snapshot just save all RAM to a disk file? 24:15 Can the monitor SAVE the RAM under the Kernal as well? 29:52 You'd think something like this would be built into the Super Snapshot.
@8_Bit
@8_Bit Жыл бұрын
Yes, Super Snapshot can freeze or "snapshot" all RAM and most I/O state to a disk file. This process includes some level of "crunching", somewhat out of necessity, as otherwise the file size of the full 64K + I/O would be excessive. Using this process, while useful, isn't considered a "true" crack (at least by those in the "scene") because it typically restores the game state already in the process of running; the music is already playing, VIC and CIA interrupts may already be firing, and memory has already been modified. It might just be half a second too late that you press that freeze button, but it's still less than perfect or "clean" as it's sometimes called. Yes, the monitor can save the RAM under the Kernal with the exception of location $FFFF. Like many other monitors, that last byte is elusive due to the Commodore tradition of the specified last address being +1, and $0000 isn't accepted as $FFFF.
@janlundthomsen
@janlundthomsen Жыл бұрын
@@8_Bit +1 on the “true” crack ethos. Like I wrote in the article “anyone can press a button.” :)
@pauledwards2817
@pauledwards2817 Жыл бұрын
They had a shop in Sheffield in the early 80s. You could walk in and try the games out before release.
@PontusBerg
@PontusBerg Жыл бұрын
My name was there on the screen as Jans article was a reply to an article I wrote in the issue before :) I have also done episodes on cracking and compression: Tape cracking kzfaq.info/get/bejne/ZquaarKDrde-f4E.html kzfaq.info/get/bejne/sMucpat5tKu2nKs.html Crunching kzfaq.info/get/bejne/arJngpSV07yviYE.html kzfaq.info/get/bejne/abKVo7qlvdXdenU.html
@mikegarland4500
@mikegarland4500 Жыл бұрын
You have featured many games that I knew about, some that I have played, others that I haven't.. Do you have anything on other games that I've spent the most time in: Seven Cities of Gold, Pool of Radiance, and F-19 Stealth Fighter? I realize it's a long shot, and I can't think of anything that really stood out in those that would make a great episode, but if anyone can do it, you could, Robin.
@8_Bit
@8_Bit Жыл бұрын
Those are all great games, but I'm not aware of anything like interesting bugs or easter eggs in them unfortunately!
@diwest1737
@diwest1737 Жыл бұрын
The Phil Collins byte 😂😂
@logiciananimal
@logiciananimal Жыл бұрын
Am I right in guessing that the reason the packers and and crunchers work well is because the target is a game with lots of what amount to bitmaps?
@JohnDlugosz
@JohnDlugosz Жыл бұрын
13:00 If the Stop Vector is called after each *byte* is read from the cassette, it will be called the first time when only half of the vector is overwritten. It will write the low byte first (presuming the data stream is in natural order).
@rhialtothemarvellify
@rhialtothemarvellify 10 ай бұрын
That's why the low byte is the same.
@Kwstr42
@Kwstr42 Жыл бұрын
ive been wanting to understand how to fix c64 stuff for a while, my favorite xmas tradition is playing John Henry's Christmas Carols but the d64 from the web has some graphical errors with some of the images and it seems like it might have protection on it, but some of the bad images hurt my heart cause its a tradition going back to when i was 6 or 7. i have the original disc and not sure if it is still good but id expect id be able to compare code between them to get 1 best copy. something for a future project i guess lol
@GeoffSeeley
@GeoffSeeley Жыл бұрын
@24:00 LOL, welcome to my world. Hours and hours of head scratching and staring at code usually to find one character/byte causing the issue.
@MrRobbyvent
@MrRobbyvent Жыл бұрын
Please I would like more videos of this kind
What's Wrong With Load"*",8,1 or LOAD"*",1 on C64
24:03
8-Bit Show And Tell
Рет қаралды 34 М.
FairLight TV #83, More C64 Tape Cracking
1:32:02
FairLight - Home of the Real Crackers
Рет қаралды 1,2 М.
A teacher captured the cutest moment at the nursery #shorts
00:33
Fabiosa Stories
Рет қаралды 54 МЛН
ЧУТЬ НЕ УТОНУЛ #shorts
00:27
Паша Осадчий
Рет қаралды 10 МЛН
ПРОВЕРИЛ АРБУЗЫ #shorts
00:34
Паша Осадчий
Рет қаралды 7 МЛН
Commodore 64 Programming - Part 10 - Simple IRQ Timers
16:48
One Bad Byte Broke This Game: Commodore 64's "Livingstone, I Presume?"
40:31
8-Bit Show And Tell
Рет қаралды 107 М.
Fixing Frantic Freddie: Commodore 64 Bugs, Minus World
57:40
8-Bit Show And Tell
Рет қаралды 5 М.
All the Commodore 64 KERNAL Revisions: Bugs, Fixes, and More!
29:39
8-Bit Show And Tell
Рет қаралды 46 М.
Harder Drive: Hard drives we didn't want or need
36:47
suckerpinch
Рет қаралды 1,6 МЛН
Wikipedia, C64 OS Edition (Preview 1)
10:25
C64 OS Official Channel
Рет қаралды 2,9 М.
What Happened to MIDI? | Nostalgia Nerd
24:39
Nostalgia Nerd
Рет қаралды 451 М.
This Game Cheats? Hal Labs' LeMans for Commodore 64 (Part 3)
37:15
8-Bit Show And Tell
Рет қаралды 12 М.
45 Games That Defined the AMIGA 500
29:54
itsaPIXELthing
Рет қаралды 561 М.
$1 vs $100,000 Slow Motion Camera!
0:44
Hafu Go
Рет қаралды 29 МЛН
Копия iPhone с WildBerries
1:00
Wylsacom
Рет қаралды 8 МЛН
Это - iPhone 16!
16:29
Rozetked
Рет қаралды 203 М.
Todos os modelos de smartphone
0:20
Spider Slack
Рет қаралды 65 МЛН