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

Forums > C64 Coding > Saving routines
2018-10-13 21:02

Registered: Oct 2013
Posts: 3
Saving routines


I am trying to put a loader and saver in my codework for a game, but it's quite a challenge.

The loaders are no problem at all... They work fine.
The saver is a huge problem at the moment, though.

I need the saver to save files including the ability to overwrite files (for hiscores etc.). It would be great if it would be a fast loader and even better when it's also an irq-loader.

Here is what I tried:

- Plushdos 1-bit saver: Saving works fine (as the only save solution that works for me now), but overwriting a file isn't possible with this saver (also in the manual). I don't have a seperate scratch routine which works, so the saver isn't that useful when I can't overwrite any files.

- Plushdos 1/2-bit disksystem: Saving is only possible by tracks/sectors. I try to understand how tracks/sectors work, and I think I should be able to put the savefiles on fixed tracks/sectors, but I don't know how to edit the tracks/sectors of a file. Dirmaster has the ability to view the file properties but editing tracks/sectors doesn't work. I tried to use the BAM-editor, but I can't change/don't know how to change the tracks/sectors of a file. Beside of that I don't even know if the saver in the 2-bit disksystem can overwrite at all. So that's even a question.

- I tried basic IO kernal for saving, like on codebase: http://codebase64.org/doku.php?id=base:saving_a_file . I put this code 1-on-1 in C64 assembler and tried to run it. But nothing happens at all. Just a small second and it reaches the end of the code and saved nothing... Why isn't this even working?

- Googled a lot, but couldn't find anything additional useful for my problem.

Btw, I'm using an Ultimate II+, but that should run fine I guess.. Certainly with basic IO stuff...

So my main question:
How can I easily load and save (preferrable fast and irq) files with the ability to overwrite files? Preferrably by only filenames and without tracks/sector sh1t?

Hope some of you have an answer to this. It's driving me mad and takes me a couple of days now. I need to get this solved otherwise I can't release it at all... :(

Please answer in common simple easy accessible english :) I'm not a tech wizkid :P Sample routines or common loaders/savers with explanation which do the trick would be great instead of (deep) technical discussions which I don't understand.

Eventually on #C-64

Thanks in advance!
The one who gives me the working solution gets a free LED bouncing ball @X! :D

Grtz, Thundax
... 15 posts hidden. Click here to view all posts....
2018-10-15 13:39

Registered: Apr 2002
Posts: 1108
I think i'll fix either the Plushdos IRQ 1-bit saver or the 2-bit saver from Fixup #$00 to support save-with-replace.

So, do you have sprites while saving?

If not, i'll go for the 2-bit saver, as the source is there in the release (no need to dig out the older 1-bit saver source) and it's slightly younger and of course theoretically faster.

Oh, and you might want to consider using the 2bit IRQ loader in Fixup #$00 as it's meant to go together with the saver. Both don't require extra installing/uninstalling. The routines come with a third one, the IRQ dir displayer, and all of them were used in +h Emu-Fuxx0r V2.0 to do all that with music playing.
2018-10-15 14:28

Registered: Apr 2002
Posts: 16
Have I mentioned that Bitfire+4 has a save routine too that works with C64/Plus4?

2018-10-15 14:46

Registered: Apr 2002
Posts: 1108
Quoting bubis
Have I mentioned that Bitfire+4 has a save routine too that works with C64/Plus4?

You did, in this https://csdb.dk/forums/?roomid=11&topicid=131808#131841 thread.

But taking a quick glance at it, seems quite low-level.

Takes track/sector argument, then a call for each block, plus prepare/finish calls, overwrites sectors regardless of BAM and with a fixed interleave, doesn't update BAM or directory.
2018-10-15 15:05

Registered: Apr 2002
Posts: 16
Exactly, its only purpose is to overwrite existing Bitfire files. Perfect for saving high scores or other fixed size files that has a dedicated place on the disk.
2018-10-15 15:14

Registered: Apr 2002
Posts: 1108
Yes, but not suited for save-games. But i have the feeling Thundax just wants to save scores, hence save-with-replace.
2018-10-15 15:17

Registered: Apr 2002
Posts: 16
Its only use case is saving games and high scores at the moment and it works fine. ;)
2018-10-15 15:41

Registered: Apr 2002
Posts: 1108
Very much depends on the use-case at hand.

In a tournament-type game stretched over different sessions with different tournaments going on, you'd want something that handles save-games well, i.e., multiple files preferrably on standard-format empty disks.

If it's just for saving highscores on the game disk itself, then, yeah. :)
2018-10-15 15:43

Registered: Dec 2001
Posts: 952
Quoting Thundax
Magervalp: Thanks for the link. I already was looking at that one, but as far as I can see it only saves files by tracks/sectors and not even new files? I don't know how to work with tracks/sectors yet, and it's certainly not flexible. So I doubt if it's still a solution for me atm... :s

Look at the sample code, it loads the directory and caches T/S for each file. But you're right that it can't create new files, it can only overwrite existing ones.
2018-10-15 15:51

Registered: Aug 2004
Posts: 900
Quoting bubis
… files that have a dedicated place on the disk.

Speaking of those, perhaps a good time for me to point out that BakeDisk64 lets you specify starting tk,se and interleave per file :)
2018-10-15 15:58

Registered: Apr 2002
Posts: 1108
And the new CC1541 coming with Krill's Loader, Repository Version 166 has something similar, too! :D
-s value      Next file sector interleave, after each file
              if negative, do not consider large tail gap (unlike standard)
              the interleave value falls back to the default value set by -S
-r track      Restrict next file blocks to the specified track or higher
-b sector     Set next file beginning sector to the specified value
Previous - 1 | 2 | 3 - 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
Guests online: 41
Top Demos
1 Unboxed  (9.7)
2 Uncensored  (9.7)
3 Edge of Disgrace  (9.7)
4 Coma Light 13  (9.6)
5 Comaland 100%  (9.6)
6 The Shores of Reflec..  (9.6)
7 Lunatico  (9.6)
8 Wonderland XII  (9.6)
9 C=Bit 18  (9.6)
10 X Marks the Spot  (9.5)
Top onefile Demos
1 Smile to the Sky  (9.6)
2 Daah, Those Acid Pil..  (9.5)
3 Dawnfall V1.1  (9.4)
4 FMX Music Demo  (9.4)
5 Crystal Gazer  (9.4)
6 Rewind  (9.4)
7 Pandemoniac Part 2 o..  (9.4)
8 Official X2018 Report  (9.4)
9 Arok 20 Invitation  (9.4)
10 Party Horse  (9.3)
Top Groups
1 PriorArt  (9.7)
2 Performers  (9.5)
3 Oxyron  (9.5)
4 Booze Design  (9.4)
5 Censor Design  (9.3)
Top Logo Graphicians
1 Mermaid  (9.3)
2 Pal  (9.2)
3 Elko  (9.1)
4 Yazoo  (9.0)
5 Jailbird  (8.9)

Home - Disclaimer
Copyright © No Name 2001-2019
Page generated in: 0.056 sec.