Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
 Welcome to our latest new user Loloke ! (Registered 2022-07-04) You are not logged in - nap
CSDb User Forums

Forums > C64 Coding > Legend of Blacksilver [help needed]
2013-11-20 05:25
Account closed

Registered: Mar 2009
Posts: 12
Legend of Blacksilver [help needed]


I've been working on a Legend of Blacksilver EasyFlash crack for some time now. I've hit a wall, however- while the game itself is cracked, bugfixed and trained.. it's missing docs, a disk saver, and a proper intro. I don't have the skills for any of these things.

I haven't found anyone to take the project over. So I present my development environment in hopes that someone will find interest in it and finish what I've started.

CC65 is the assembler for the loader/trainer, C64List was used to manipulate the game's BASIC code, and C# was used to create the cartridge building application that is used to compile the CRT file. All source and research documents are included, as well as the files directly extracted from the original media.

Running the "build.bat" file in the LoB folder will create an immediately playable CRT file in the same folder.

If you have any questions, you'll get a much faster answer at my e-mail: saxxonpike@gmail.com

This is released with only one restriction: if a modification is made and uploaded to CSDB, be sure to credit appropriately. Anything else you wish to do with any and all of the code is solely up to you.

The game is fully playable to the end and doesn't need any further bugfixes as I can tell. All that's missing are docs, disk saver and a good intro.

... 6 posts hidden. Click here to view all posts....
2013-11-20 13:43
Account closed

Registered: Aug 2004
Posts: 14
The same file as in my docs archive
2013-11-20 14:48
Account closed

Registered: Mar 2009
Posts: 12
I'm glad to see there is some interest :)

There was some information missing from the Readme...

Cheats are done by injecting pre-calculated 40bit values to specific addresses in the BASIC variable space. Because the game itself relies on exact positioning of these variables already, this is something I could safely do.

Saving to disk is trivial- as far as I know, it just saves a 4kb snapshot of 9000-9FFF, which is where the BASIC variable space is located. The original saver sends a message to the disk drive to disable the special loader, uses a Basic command to save the file (it is a modified routine, but the end result is a simple memory write) then reenables the loader again.

I also export the block of memory, but to EF instead of disk.

When I save to EF, it starts at 07:0:1000 and works its way back in 4kb increments, using only the low bank. Because you can only wipe 64kb at a time, it will just write new saves at a lower offset. When 00:0:0000 is consumed, the 64kb block of low flash is wiped and it writes again to 07:0:1000. This is the reason why multiple saves are not allowed- the amount to wipe is too large for me to preserve any current saved games. The currently saved game is found by starting at 00:0:0000 and checking the byte there, doing so at 4kb increments. If a byte is found that is not $FF, it must be the saved game.

Getting 4kb of data from memory to a file on disk should really be trivial, and I'm willing to wager that I'm overthinking it..

I don't feel that I have adequate skill to create a front-end for a disk saver, nor enough familiarity with the Kernal anyway. I also don't even know where to start with a reader.

EDIT: I would also like to add, for anyone who might have interest in a disk version...

"LoB/original-media/extracted" is the folder which contains all the files in their decoded, unmodified form. I did two kinds of patches: BASIC patches and assembly patches. All the assembly patches I've done are contained in "LoB/docs/PATCHES.txt". Most of them are specific to the EasyFlash code. The BASIC patches are a lot more involved- you can see the updated code in each of the .lbl files in "LoB/build", and the original versions of these files in "LoB/original-media/sources".

A word of caution: the in-game saver BASIC code does something I don't fully understand but was required to make the game work. If you take a look at "223.lbl", "361.lbl", and "451.lbl", you'll notice that there's a little goto hack. This line also existed in the original code. Taken as BASIC code on its own, it's not supposed to do anything. This specific line number has to exist in both the saver stub *and* the main game code and I suspect it has something to do with what line of code the saver returns to when switching back (as they are separate BASIC programs). C64List kept wanting to optimize away these "unused" lines which broke everything.

The original saver also checks for a character's presence on the currently inserted disk. In the EF version, our character disk is *always* inserted, therefore this check and the "change disk + press a key" prompt are replaced with a simple sound effect in all 3 of the saver stubs.

Finally, the Vorpal format allowed for storage of more game data than you would ordinarily have using CBM format. The data on each disk side is greater than a disk's capacity, so compression will be required. The game data is very well pruned; I saw no unused data except one "blank" file (26).
2013-11-21 18:15
Account closed

Registered: Oct 2013
Posts: 1
Quoting Saxxon

Running the "build.bat" file in the LoB folder will create an immediately playable CRT file in the same folder.

Hello Saxxon,
i can not build the CRT. Where can i find the C# program "CartridgeBuilder" ?
2013-11-21 20:07
Account closed

Registered: Mar 2009
Posts: 12
Ah! I just realized I created the archive without including the tools. A bit embarassing..

Here's everything:

2013-11-27 16:10
Account closed

Registered: Feb 2002
Posts: 84
awesome work. thanks!
2013-11-30 15:03
Account closed

Registered: Mar 2009
Posts: 12
You are quite welcome!

In the meantime, I've also done Legacy of the Ancients- this game's prequel. I realize that THIS game however has been released many times already, but not for EasyFlash yet. I think it's good practice. While working on it, I discovered a number of bugs in CartridgeBuilder when manipulating load addresses, and also implemented loading files from EF to any address (as this engine demands it, unlike LoB).

I'll be uploading the source for LotA, LoB, CartridgeBuilder, and the code I wrote to rip files from Pirateslayer protected disks as well (though this does NOT patch anything- that must be done by hand for now)

Many more CRPGs to come! I may venture into games I am less familiar with such as Ultima maybe..
2014-01-30 11:51
Account closed

Registered: Mar 2009
Posts: 12
It's a multicart now, Legacy of the Ancients + Legend of Blacksilver. Fits neatly in 1MB with docs.

After a bit of testing and removal of debug things I think I shall release it. Here it is for your review:

2014-01-30 12:26

Registered: Nov 2007
Posts: 87
Impressive work.

Haven't had a thorough look, but after selecting to play Legend of Blacksilver and starting a new game, entering no name (just pressing return) it crashes.

Going to check out the trainers and other goodies :)

Keep up the great work!
2014-01-30 19:48
Account closed

Registered: Mar 2009
Posts: 12
Quote: Impressive work.

Haven't had a thorough look, but after selecting to play Legend of Blacksilver and starting a new game, entering no name (just pressing return) it crashes.

Going to check out the trainers and other goodies :)

Keep up the great work!

I never thought to test such nonsense input :) This is the reason why I like to share for testing. I do know the LotA menus still need to be modified some, but I really did think that I had it down for LoB.

Thanks for the info :)
2014-02-01 13:20
Account closed

Registered: Mar 2009
Posts: 12
I was able to get a good rip of the v1.2 of the game. The only changes from v1.0 were in the EA loader stub and a few lines of BASIC:

- The demo is a bit better at cleaning up memory after itself. (The bug where it leaves rafts when you then proceed to restore a game is still there, oops.)

- The way the Museum handles whether or not you've already viewed an exhibit has changed slightly, not entirely sure about it but some extra conditions were added. My guess is it's a measure in order to not get stuck.

- The amount of interest you gain from gold in the bank is capped and now can't give you unreasonably large amounts.

- When your character dies, the base amount of food was increased, perhaps to make it easier to find a town after death.

- In the castles, damage during combat was adjusted to be a little more forgiving.

- In dungeons, both the damage from traps and the frequency of monsters spawning have been decreased slightly.

- An in-game cheat was removed. The conditions for the cheat are ridiculously specific; it's unlikely anyone would find this without seeing the source. If you are standing in a specific square (coordinates 105,133) and have the name "CDJD", choose Disembark, it gives you +10000 gold.

That said, I did fix a few other things on the cart too:

- Blank entry for character name in Blacksilver doesn't crash anymore: it will put you back at the main menu.

- Attempting to restart a game when you don't have one in Ancients will just send you to create a new character.

- Entering the museum now no longer shows the passcode screen; it will instead take you directly in without fanfare.

- When riding Pegasus in Ancients, there is no more garbage text when you land.

I can confirm it works on real hardware. At this time I think it's ready for release. I shall post it soon..
Previous - 1 | 2 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Users Online
Fred/Channel 4
Guests online: 67
Top Demos
1 E2IRA  (9.7)
2 Lifecycle  (9.7)
3 The World Is Not Eno..  (9.7)
4 Edge of Disgrace  (9.6)
5 Coma Light 13  (9.6)
6 Uncensored  (9.6)
7 Comaland 100%  (9.6)
8 Bromance  (9.6)
9 30 Years  (9.5)
10 Lunatico  (9.5)
Top onefile Demos
1 Breadbinked  (9.7)
2 Onef1ler 2  (9.6)
3 Copper Booze  (9.5)
4 Daah, Those Acid Pil..  (9.5)
5 Dawnfall V1.1  (9.5)
6 Cityscape 2730  (9.5)
7 Barry Boomer - Trapp..  (9.5)
8 Lovecats  (9.5)
9 Elite Code Mechanics  (9.5)
10 Square Booze  (9.5)
Top Groups
1 Booze Design  (9.3)
2 Oxyron  (9.3)
3 Crest  (9.3)
4 Censor Design  (9.2)
5 1001 Crew  (9.2)
Top Webmasters
1 Slaygon  (9.6)
2 Perff  (9.6)
3 Morpheus  (9.6)
4 Sabbi  (9.4)
5 CreaMD  (9.3)

Home - Disclaimer
Copyright © No Name 2001-2022
Page generated in: 0.044 sec.