Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > File Write During A Demo
2018-09-16 23:29
Raistlin

Registered: Mar 2007
Posts: 680
File Write During A Demo

So, I want to be able to write a small file out in the middle of my demo ... ideally without interrupting the IRQ music and other stuff that's playing.

When I try to do that, though, the file ends up corrupt.

Is there a good way to do this..?

I'm of course using the Kernal functions FFBA, FFBD, FFD8. And then FFD5 to try to load back.

Loading seems fine - but saving is corrupt..

If all else fails I guess i need to fade the music down and pause interrupts............
2018-09-17 01:56
cadaver

Registered: Feb 2002
Posts: 1160
If you want interrupts running, you need custom drivecode, as with loading. It's easiest if you already have preallocated the file from the disk, so you don't need to use the drive ROM routines for sector allocation, or doing it yourself. Receive the file data from C64 using your custom protocol, then write to the preallocated sector(s) using jobcode $90.

See MagerValp's ULoad3 for inspiration, it supports exactly this.

ULoad Model 3 release 1
2018-09-17 06:21
Raistlin

Registered: Mar 2007
Posts: 680
Ah, haha, thanks - made by a G*P member too... I guess I should’ve asked first on the secret internal channel ... oops :-)

Thanks for the help!
2018-09-17 08:24
Krill

Registered: Apr 2002
Posts: 2980
You can actually save a file using KERNAL routines just fine while playing music with an interrupt. This might require calling the lower-level OPEN and CHROUT and other calls with some $dd00 polling in between, but interrupt variance is somewhere at 30 rasterlines, but that should not be audible for most (not all) tunes.

Of course, a couple of zeropage and lowmem variables need to be set correctly, and sprites disabled where the mainline code runs.

But, pray tell, why do you need to write data to disk in the middle of a demo? :)
2018-09-17 08:29
Adam

Registered: Jul 2009
Posts: 323
Quoting Krill
But, pray tell, why do you need to write data to disk in the middle of a demo? :)

yeah, it has caught my attention too :)
2018-09-17 11:17
Raistlin

Registered: Mar 2007
Posts: 680
"why do you need to write data to disk in the middle of a demo? :)"

Maybe it's the world's first fuzzy logic learning demo on C64? Or we made FaceSwap work in realtime on C64 using, umm, the LightPen (and probably a really bright torch)?
2018-09-17 13:13
Adam

Registered: Jul 2009
Posts: 323
Quoting Raistlin
"Or we made FaceSwap work in realtime on C64 using, umm, the LightPen (and probably a really bright torch)?

LOL. make it so!
2018-09-18 20:00
algorithm

Registered: May 2002
Posts: 705
Ram permitting. perhaps keep a buffer somewhere with the data, and then shuffle around per part to keep it non-overwritten, then utilise this data during the demo parts.

You can then at the end of the demo do a single write to disk if need be.
2018-09-19 06:38
Oswald

Registered: Apr 2002
Posts: 5094
one of my demos counts how many time it has been run, by writing to disc, and displays the # on startup :P
2018-09-19 07:54
Krill

Registered: Apr 2002
Posts: 2980
Quoting Oswald
one of my demos counts how many time it has been run, by writing to disc, and displays the # on startup :P
It probably writes to disk at start-up, with all KERNAL variables intact and no music running. Entirely different beast.
2018-09-19 12:15
bubis
Account closed

Registered: Apr 2002
Posts: 19
The Plus/4 port of Bitfire has a save routine for C64 too. It works fine during interrupts, etc.

https://github.com/dotscha/bitfire/releases

"Pet's Rescue" uses Bitfire and this routine on Plus/4 for saving high scores.
2018-09-19 23:47
AlexC

Registered: Jan 2008
Posts: 299
Quoting Krill
But, pray tell, why do you need to write data to disk in the middle of a demo? :)


Sounds like a demo copy protection scheme to me ;)
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
Advanced
Users Online
Alakran_64
B.A./QUANTUM
iceout/Avatar/HF
Steffan/BOOM!
E$G/HF ⭐ 7
Holy Moses/Role
Didi/Laxity
lA-sTYLe/Quantum
zscs
Freeze/Blazon
Guests online: 84
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.6)
5 Edge of Disgrace  (9.6)
6 What Is The Matrix 2  (9.6)
7 The Demo Coder  (9.6)
8 Uncensored  (9.6)
9 Comaland 100%  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 Layers  (9.6)
2 No Listen  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.6)
6 Dawnfall V1.1  (9.5)
7 Rainbow Connection  (9.5)
8 Onscreen 5k  (9.5)
9 Morph  (9.5)
10 Libertongo  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Triad  (9.3)
5 Censor Design  (9.3)
Top Coders
1 Axis  (9.8)
2 Graham  (9.8)
3 Lft  (9.8)
4 Crossbow  (9.8)
5 HCL  (9.8)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.063 sec.