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 > CSDb Entries > Release id #232976 : Next Level
2023-06-20 19:57
Digger

Registered: Mar 2005
Posts: 422
Release id #232976 : Next Level

Well, well. I think that such demo deserves a thread here.

I already spoke with BitBreaker about some things, and what puzzles me is the process behind capturing 100 games by Pex. This part has absolutely crushed me during the compo – great idea and execution there!

However, I must say some game screens felt pretty static (I guess due to amount of VIC/SID data needed to be captured and played back) and some classic (e.g. Turrican) games were missing.

I was wondering if it crossed your mind to compromise on the amount of games but keep 'em on screen for twice as long.

And of course if @Mahoney would share some secrets about the capturing process it would be awesome. Thx.
 
... 21 posts hidden. Click here to view all posts....
 
2023-06-20 21:05
Burglar

Registered: Dec 2004
Posts: 1051
not everybody is on facebook :)

but this is what I thought:
- charmode only for background (hence missing games like last ninja)
- capture charset + sprites via vice
- capture many io locations each frame (sprite pointers, locations, colors, sid registers, etc, etc)
- fancy multiplexer (the texts were probably the most challenging:)
- custom packer/unpacker
- buffered loading (i dont think every game-capture is same size and some seem too big to load <3 sec;)

I probably missed a bunch, feel free to correct :)
2023-06-20 21:25
chatGPZ

Registered: Dec 2001
Posts: 11150
I think he just visited crossbow and said "you cant do this!"
2023-06-20 21:48
PAL

Registered: Mar 2009
Posts: 270
I actually went to Mahony after the demoshow at X and asked straight out if he had been insane enough to create a sort of recording routine and actually recorded all the sprite movement, charsets and screen setups and he looked (a bit surprised) at me and said: Yes PAL that is what I did. 4mb of data from the memory of the machine from his clever alterations and then put back into a playback engine... he then said... how you know? I think that is what I would have done in a way if I could code, but Mahony how did you make all them music play so fast also... he said, I just played them games PAL and I also recorded all the sidwrites.

So it must have been almost like a timeline editing thing in the end as I guess and we all know he is so clever and all was in sync from the very first recording of anything in anything.

What a great way of doing this. INSANE OUR OWN MAHONY!
2023-06-20 22:06
Digger

Registered: Mar 2005
Posts: 422
Quote: He actually described it quite detailed in a facebook post in one of the C64 groups...

Great! Do you think you could find the link Wacek?
2023-06-21 07:31
Digger

Registered: Mar 2005
Posts: 422
Here's what I got first hand from Mahoney and BB if anyone is insterested:

I rewrote the Vice emulator to dump not only the whole state of the emulator at a certain point in time as a snapshot, but then also every single read and write to memory with a timestamp. Recording a 5-second snippet of a game resulted in a 4MB file on disk.
Then, I wrote a python script to extract the colours on the screen, the chars on the screen, the charset, the sprites. Every game is 2 seconds, which means 100 frames of updates needs to be tracked, so I gather a list of every single memory location that needs to be changed to update the graphics, by fast forwarding the state of the C64 SID and VIC-II chips some 19000 clock cycles to get to the next frame.
This leads to a 100 to 200 lists of memory locations with 100 values that needs to be written to replay the graphics and sound. I need to compress these, but more importantly, I need to decompress these lists in real-time with as few CPU cycles as possible, since I only have some 19000 clock cycles until the next frame needs to be shown.
And then I added a sprite multiplexer to show the texts on top of that. It's easy when you look at one single part of this at a time, but really messy when you combine all needed parts - I need to load the data for the next game while running the current one, for instance.

Some interesting stuff from BitBreaker:
The 100 games would not have fit if I hadn't brought bitfire to next level, by sharing sectors with the fileend and start of the upcoming file. This saved ~50 blocks, the zx0/salvador/dali packer did another good job in saving. It is 2 bytes left on that diskside, while not using 40 tracks, as we felt it is not as vanilla as we want to be.
2023-06-21 10:50
Pex Mahoney Tufvesson

Registered: Sep 2003
Posts: 50
Question from Digger: And was the whole process iterative, i.e. did you have to capture different game moments with trial and error to get it all fit?

Lots of iterations, of course! I started with capturing 10 games to find out how difficult it would be to extract the graphics. I quickly found out that I needed a compression scheme that would be really efficient for the most common event: counting down a number of frames until the next change of a memory location is to be done. It realise I could probably write a whole book about this demo! Maybe I should? :)
2023-06-21 10:59
Boogaloo

Registered: Aug 2019
Posts: 21
Quote: Question from Digger: And was the whole process iterative, i.e. did you have to capture different game moments with trial and error to get it all fit?

Lots of iterations, of course! I started with capturing 10 games to find out how difficult it would be to extract the graphics. I quickly found out that I needed a compression scheme that would be really efficient for the most common event: counting down a number of frames until the next change of a memory location is to be done. It realise I could probably write a whole book about this demo! Maybe I should? :)


As interesting as that would be, your time is probably better spent making the next awesome demo. :-)
2023-06-21 16:13
Raistlin

Registered: Mar 2007
Posts: 577
Quoting bitbreaker
not using 40 tracks, as we felt it is not as vanilla as we want to be


I can agree with this .. we could've done 40-track demos back in the day .. but we never did because we'd be making it more complicated for people to spread our demos... most people back then couldn't easily copy a 40-track disk.

We talked about 40-tracks for No Bounds .. but opted against it in the end.

Nowadays of course it's no problem for most to use 40 track disks .. most people just copy a D64 file onto a USB stick for their UII+ .. but, still, I agree with BB here that it makes the final product something other than vanilla.
2023-06-21 17:12
chatGPZ

Registered: Dec 2001
Posts: 11150
You can always provide an Installer (like Crossbow did).

Backdraw: you'll have to make a Slideshow

*ducks and runs*
2023-06-21 17:22
Burglar

Registered: Dec 2004
Posts: 1051
Quote:
The 100 games would not have fit if I hadn't brought bitfire to next level, by sharing sectors with the fileend and start of the upcoming file. This saved ~50 blocks, the zx0/salvador/dali packer did another good job in saving.
IFFL Will Never Die!

(yes, this is not iffl, but still)
Previous - 1 | 2 | 3 | 4 - 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
Advanced
Users Online
Jammer
aslive
rambo/Therapy/ Resou..
CA$H/TRiAD
encore
nanzee/Chocotrophy
Arcane/Glance
Sentinel/Excess/TREX
Raf/Vulture Design
St0fF/N30PLA51A/tOM
psych
Guests online: 103
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.7)
5 Edge of Disgrace  (9.7)
6 No Bounds  (9.6)
7 Aliens in Wonderland  (9.6)
8 Comaland 100%  (9.6)
9 Uncensored  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 Layers  (9.6)
2 Cubic Dream  (9.6)
3 Party Elk 2  (9.6)
4 Copper Booze  (9.6)
5 TRSAC, Gabber & Pebe..  (9.5)
6 Rainbow Connection  (9.5)
7 Dawnfall V1.1  (9.5)
8 It's More Fun to Com..  (9.5)
9 Daah, Those Acid Pil..  (9.5)
10 Birth of a Flower  (9.5)
Top Groups
1 Nostalgia  (9.4)
2 Oxyron  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 SHAPE  (9.3)
Top Crackers
1 Mr. Z  (9.9)
2 Antitrack  (9.8)
3 OTD  (9.8)
4 S!R  (9.7)
5 Fungus  (9.7)

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