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


Forums > CSDb Entries > Event id #2889 : Intro Creation Competition 2019
2019-11-04 17:55
Didi

Registered: Nov 2011
Posts: 356
Event id #2889 : Intro Creation Competition 2019

Preface: Please use this thread for questions, discussion and everything else concerning this competition.


Many people were asking about the competition being held this year. It turned out to be a good place to have it after the big X party each second year. But why not give it a try in between?

This time I decided to add a second category to the well known rules: 4kB intro! It is different to the 4kB intro category you know from demo parties. There the executable file has the limit of 4096 bytes and may allocate as much as you like during runtime. Rules here only allow to use 4kB overall for a different challenge. Please check the rules for more details. Result will show if that was a good idea.

Here you go...


Competition runs from November 4th, 2019, until January 5th, 2020. So you have a full 2 months to deliver your creations. This should be enough for an intro.

RULES for both categories:

Your intro entry...
- has to work on a plain stock C64 (PAL standard) without any extensions.
- has to be a one-part intro. Short fade-ins and fade-outs are OK.
- has to contain at least one Logo at whatever size you like.
- has to contain a changing or moving text message (e.g. scrolling text, different lines fading in & out, etc.)
- has to be interruptable any time by pressing SPACE-key (exception are short fade-in and fade-out).
- does not need to have exclusive graphics, charsets or music. But the code should be exclusive, so reuse of existing code with just exchanged graphics and music is not allowed.
- has not been publicly used before entering the competition.
- has to be handed in as executable format startable with RUN (.prg or embedded in .t64 or .d64).

Your 16kB intro...
- has a maximum RAM footprint of $4000 bytes at one block, at whatever location you like. Screen RAM counts as used memory. Exclusions are system addresses like VIC (inkl. Color RAM), SID, CIA, Stack, Zero-page, IRQ vectors. This means RAM besides chosen $4000 bytes area and exceptions has to be the same before and after running the intro. What happens during runtime is up to you.
- has to contain music (not just a humming sound, please).
- is linked to this competition as "C64 Demo" entry (sorry, no other fitting entry exists).

Your 4kB intro...
- has a maximum RAM footprint of $1000 bytes at one block, at whatever location you like. Screen RAM counts as used memory. Exclusions are system addresses like VIC (inkl. Color RAM), SID, CIA, Stack, Zero-page, IRQ vectors. This means RAM besides chosen $1000 bytes area and exceptions has to be the same before and after running the intro. What happens during runtime is up to you.
- does not have to contain any sound, but feel free to add some.
- is linked to this competition as "C64 4k Intro" entry.

You are allowed to enter maximum 3 entries per participant and category, so you are can enter 6 entries at best. Entries might be taken back from the compo until deadline. That means if you want to remove one of your works from the compo to make space for another entry from you, this can be done until deadline.
Deadline for entry submission is Sunday January 5th, 2020 at 23:59:59 (11:59:59 pm) CET.
Voting closes at Sunday January 12th, 2020 at 23:59:59 (11:59:59 pm) CET.
Voting platform is CSDb (with all disadvantages it may have), therefore entries have to be posted here.
Entries will be ranked by weighted average of CSDb votes. Entries with the same weighted average are ranked by their percentages of 10s, 9s, etc.

No prices to win, just the fame. May the best creation win!
2019-11-04 19:22
hedning

Registered: Mar 2009
Posts: 2491
Awesome!!!
2019-11-04 20:37
T.M.R

Registered: Dec 2001
Posts: 748
Woohoo!

Love this 'ere competition, looking forward to seeing what everyone comes up with and have a few entries on the go myself. =-)
2019-11-04 21:40
spider-j

Registered: Oct 2004
Posts: 198
Quoting Didi
- is linked to this competition as "C64 Demo" entry (sorry, no other fitting entry exists).

Forgot about "Onefile-Demo"?!? ;-)

Anyway: great idea with the 4K category. I'll see if I find the time to come up with something.
2019-11-04 22:05
MCM

Registered: Apr 2018
Posts: 4
Amazing ! I am working on a demo since the last competition. I hope i can spare some time to get ready a least one for every categorie.
2019-11-05 16:10
aNdy

Registered: Jan 2004
Posts: 22
Plucking up the courage to give this a go now I've actually learned some 6502.
2019-11-05 16:57
T.M.R

Registered: Dec 2001
Posts: 748
Quoting aNdy
Plucking up the courage to give this a go now I've actually learned some 6502.


And totally not because I've nagged you or anything...
2019-11-05 17:36
Raistlin

Registered: Mar 2007
Posts: 180
I'm holding out for the 64kb intro competition. Speedcode and 16k don't go well together...
2019-11-05 19:16
Krill

Registered: Apr 2002
Posts: 1308
Quoting Raistlin
I'm holding out for the 64kb intro competition. Speedcode and 16k don't go well together...
Please feel welcome to submit an entry in any of the existing 4K demo competitions at regular demo parties. 4K executable size unfolding to the entire 64K goes very well with speedcode and whatnot. =)
2019-11-05 20:20
0xDB

Registered: Aug 2015
Posts: 23
Yes! Been waiting for this. :D

Question though:
Quoting Didi

This time I decided to add a second category to the well known rules: 4kB intro! It is different to the 4kB intro category you know from demo parties. There the executable file has the limit of 4096 bytes and may allocate as much as you like during runtime. Rules here only allow to use 4kB overall for a different challenge.

Ok... so that says usage of RAM outside that 4kB area is forbidden but then...
Quoting Didi

Your 4kB intro...
- has a maximum RAM footprint of $1000 bytes at one block, at whatever location you like. Screen RAM counts as used memory. Exclusions are system addresses like VIC (inkl. Color RAM), SID, CIA, Stack, Zero-page, IRQ vectors. This means RAM besides chosen $1000 bytes area and exceptions has to be the same before and after running the intro. What happens during runtime is up to you
...this says, usage of RAM outside that 4kB area is allowed if it gets restored (however that might be technically im/possible/limited by the amount one can store for restoration in the original 4kB area).

Please clarify. Only one of the rules can be right because they seem to contradict each other.
2019-11-05 22:06
ZeSmasher

Registered: Feb 2003
Posts: 367
thx Didi for organising the ICC once again!
question: will there be 2 rankings at the end (16k and 4k)? or just a big one?
2019-11-05 22:07
Didi

Registered: Nov 2011
Posts: 356
Clarification: You may use RAM outside the 4k/16k area but you have to restore it on exit.

I remember last year some people thought about realtime compression. But the RAM outside your intro is random filled and maybe already complessed, so the idea was withdrawn.
2019-11-05 22:07
Didi

Registered: Nov 2011
Posts: 356
Quote: thx Didi for organising the ICC once again!
question: will there be 2 rankings at the end (16k and 4k)? or just a big one?


There will be 2 rankings.
2019-11-06 15:15
iAN CooG

Registered: May 2002
Posts: 2486
Quote: Clarification: You may use RAM outside the 4k/16k area but you have to restore it on exit.

I remember last year some people thought about realtime compression. But the RAM outside your intro is random filled and maybe already complessed, so the idea was withdrawn.


The contestants should be provided with a prg for test linking their productions to, and it has to be 100% working. In the past there were "intros" that actually filled all mem, because most demo coders still don't even bother to understand what an intro is actually for and why it should have the smallest mem footprint possible =)
2019-11-06 17:11
Compyx

Registered: Jan 2005
Posts: 470
That would add extra code, so the rules have to change. I also think most of us demo coders understand the concept of linking. Remember those demos where you would press space and all of a sudden Sledgehammer II was decompressing the next part? :)
2019-11-06 18:19
ZeSmasher

Registered: Feb 2003
Posts: 367
Ian, we could use that Super Mario bros original as prg to link so Nintendo will be happy! :)
2019-11-06 18:43
Dwangi

Registered: Dec 2001
Posts: 115
Quote: There will be 2 rankings.

Didi:
But should both 4k and 16 be uploaded to this event id "2889"?
Isnt it better to create two events ICC 2019 4K and ICC 2019 16 K?
Othwerwise it is hard to see which place you have in the ranks before the compo is finnished.
2019-11-06 21:12
Dwangi

Registered: Dec 2001
Posts: 115
Reply to myself.
It will be uploaded as 4k or demo.
Forget my question above.
2019-11-06 22:54
aNdy

Registered: Jan 2004
Posts: 22
Quoting T.M.R
Quoting aNdy
Plucking up the courage to give this a go now I've actually learned some 6502.


And totally not because I've nagged you or anything...

I offer up a polite no comment! :D
2019-11-07 14:26
ChristopherJam

Registered: Aug 2004
Posts: 990
Quote: Ian, we could use that Super Mario bros original as prg to link so Nintendo will be happy! :)

Ahahahahaha
2019-11-08 19:57
Richard

Registered: Dec 2001
Posts: 556
I might be up for the compo, but pretty much busy at the moment. Although I do have an idea for an intro. :)
2019-11-09 17:11
goerp

Registered: Feb 2006
Posts: 8
Noob question (as I am working on my first 'real' intro):
Should it be runnable from basic, so start at $0801? If memory footprint can't exceed 4/16K does that mean that it has te be from $0801-$1801 (Or $0801-$4801)?
2019-11-09 17:56
T.M.R

Registered: Dec 2001
Posts: 748
Quoting goerp
Noob question (as I am working on my first 'real' intro):
Should it be runnable from basic, so start at $0801? If memory footprint can't exceed 4/16K does that mean that it has te be from $0801-$1801 (Or $0801-$4801)?


No, you just have to stay within a $1000 or $4000 byte block of RAM somewhere in memory and, as long as all of the rules are met like including the screen RAM in that block, you get to choose where that is. Using a cruncher on your code means it can start from a BASIC RUN command - the startline provided by the cruncher - without you having to include a BASIC stub at $0801
2019-11-09 19:34
Oswald

Registered: Apr 2002
Posts: 4487
translation: just use $4000-$8000 or wherever you like, and use a self extracting packer (cruncher) like exomizer, which will give you a runnable (0801) self ectracting prg.
2019-11-09 20:52
goerp

Registered: Feb 2006
Posts: 8
Quoting Oswald
translation: just use $4000-$8000 or wherever you like, and use a self extracting packer (cruncher) like exomizer, which will give you a runnable (0801) self ectracting prg.


OK, that's clear. Thanks
2019-11-10 11:02
T.M.R

Registered: Dec 2001
Posts: 748
Quoting Oswald
translation: just use $4000-$8000 or wherever you like, and use a self extracting packer (cruncher) like exomizer, which will give you a runnable (0801) self ectracting prg.


What can I say... I type 70 words per minute and some of them make sense. =-)
2019-11-11 22:18
TheRyk

Registered: Mar 2009
Posts: 641
be aware RAM bank choice $4000-$7FFF makes a lot of sense if you do not need character ROM for a 16K but have a lot of gfx data such as fonts, sprites or whatever bitmaps. For 4K under the current restriction (RAM besides 4K must look same before and after running, $0400-$07E7 counts if used) chosen area shouldn't matter a great deal, anyway, unless you want to use CharROM (then $0000-$3FFF or $8000-$BFFF) might even be preferrable as you get up to 2 complete ROM fonts "for free"
2019-11-11 22:27
ZeSmasher

Registered: Feb 2003
Posts: 367
best choice for a 4K: $0000-$10ff (cheat mode on) :)
2019-11-11 22:43
TheRyk

Registered: Mar 2009
Posts: 641
You mean $0000-$11ff! xD stack doesn't count either ^^ Not to speak of I/O... sometimes helpful if things get really tight though in some cases these tricks mean more trouble than they're worth
2019-11-11 22:45
tlr

Registered: Sep 2003
Posts: 1246
Quote: best choice for a 4K: $0000-$10ff (cheat mode on) :)

Even $FFFE to $11FF should work with the rules as described.
2019-11-11 22:45
TheRyk

Registered: Mar 2009
Posts: 641
LOL, yeah, true! xD
2019-11-11 22:47
ZeSmasher

Registered: Feb 2003
Posts: 367
oh, didn't read about stack. yeah, now wait for my 4.5k intro :)
2019-11-11 22:54
TheRyk

Registered: Mar 2009
Posts: 641
as I said, if it's a case of "every byte matters" it can help to know these "cheats". on other occasions that wizardry only helped me to place sprites all over the stack and feel very smart - only to find out they're clobbered by stack commands I didn't think of (e.g. from the music routine) ^^
2019-11-12 09:39
Golara

Registered: Jan 2018
Posts: 168
Quote: as I said, if it's a case of "every byte matters" it can help to know these "cheats". on other occasions that wizardry only helped me to place sprites all over the stack and feel very smart - only to find out they're clobbered by stack commands I didn't think of (e.g. from the music routine) ^^

If you don't do a lot of recursive JSR or IRQ then you can just set your stack pointer to some low value, say $10... 16 bytes of stack should be enough :P
2019-11-12 09:56
Krill

Registered: Apr 2002
Posts: 1308
My loader's 1541 code has a whopping 4 bytes of stack. =D
2019-11-12 10:05
Danzig

Registered: Jun 2002
Posts: 385
Quote: oh, didn't read about stack. yeah, now wait for my 4.5k intro :)

And in the end it's poor PetSCII Bad Apple ;-(
2019-11-14 14:59
0xDB

Registered: Aug 2015
Posts: 23
( http://sta.c64.org/cbm64mem.html memory map )

Question about "exclusions are system addresses...".

Besides ZP and STACK, does $0200-$03FF also count as "system addresses" which are free to use without having to restore their contents? There are some areas in there, e.g. "Datasette Buffer" and "Input Buffer" and some "unused" which look like they could be used freely without disturbing BASIC/KERNAL functions much.
2019-11-14 15:02
Oswald

Registered: Apr 2002
Posts: 4487
good old 828, when I started assembly, for months all my code went into there :)
2019-11-14 15:21
TheRyk

Registered: Mar 2009
Posts: 641
Didn't read anything about tape buffer, so I'd assume it COUNTS, i.e. it is counted as used RAM. Wouldn't mind if Didi decides differently, but as this would mean $0334-03ff, we'd really get close to or even above 1.5k then ;)
2019-11-14 15:23
Didi

Registered: Nov 2011
Posts: 356
I count 0200-03ff as used Memory.
2019-11-14 15:28
TheRyk

Registered: Mar 2009
Posts: 641
OK, so this is clear.

Just BTW about "disturbing" BASIC/KERNAL: Tape Buffer till end of page $03 is rather safe, but AFAIR stuff before(!) $0334 contains vectors and other BASIC/KERNAL stuff that would result in trouble unless you restore them which might even be done via JSRing ROM $KERNAL routine (if these still work in spite of your modifications, that is, hehe)
2019-11-14 20:06
Compyx

Registered: Jan 2005
Posts: 470
I interpret the rules as: a slab of 4KB/16KB contiguous memory containing all code, gfx, music. And any memory outside of that being memory you cannot do without and don't have to restore, ie zp, stack, IO, colorram, IRQ vectors.

This would exclude $0200-$03ff unless your 4KB intro is using $0200-$11ff, or $0200-$41ff for a 16KB intro.

Last intro compo I had to fix my code since I used $0800-$47ff but used $0340-$03ff for sprites.
2019-11-18 00:10
0xDB

Registered: Aug 2015
Posts: 23
Alright, thx! for clarification.

Working on a 4kB intro. Yay, juggling bytes is fun!
2019-11-18 19:17
Didi

Registered: Nov 2011
Posts: 356
Quote:
User Comment by Dr.Science on 18 November 2019
(...) seems like the 4k intro compo is where to get the smallest tune ;-)
Well, that was not the intention but the compo is what you make of it.
2019-11-18 19:26
Hawk

Registered: Sep 2015
Posts: 17
Yes, find the smallest music, I have found enough but they are not at the address where I would like them, who I move them to the right address to use them in the 4kb intro and delete after space again from the memory that is okay? So if I understood correctly everything I read, it should be fine .....
2019-11-18 19:45
Dr.Science

Registered: Oct 2011
Posts: 30
@Hawk: you should try sidreloc.
2019-11-18 20:03
Hawk

Registered: Sep 2015
Posts: 17
@Dr.Science good idea!!! Will try !!
2019-11-18 21:26
TheRyk

Registered: Mar 2009
Posts: 641
true art is hacking an intro INTO A 4K tune ^^
^^ I'm also just hacking some bytes off from some tunes in order to make them fit. If iAN knew what I'm doing, his monocle would fall into his Martini again. However, I guess with or without hacking some 50-60% of my first 4K entry for this compo will consist of music.
2019-11-18 21:55
Dr.Science

Registered: Oct 2011
Posts: 30
@TheRyk: yes baby! :-)
@Didi: that was just a bit of subtle irony :-) And who knows, some new tiny SIDs might appear together with some great intros in the compo? Would be nice!
2019-11-19 15:24
Perplex

Registered: Feb 2009
Posts: 224
A list of tunes in HVSC #71 less than 1KB in size (including PSID/RSID header): https://gist.github.com/lhz/145125a0f07e89fe48e3f42f7d44040c
2019-11-19 16:25
Jammer

Registered: Nov 2002
Posts: 857
Brand new microtunes would be more classy, though :P
2019-11-19 17:51
Compyx

Registered: Jan 2005
Posts: 470
I'm working on a mini player for this, but it's been ~25 years since I wrote a player. I do have "Die Kunst der Fuge", so perhaps come clever reuse/alteration of melodies/themes will do the trick.
But I'll probably reuse some SID :(
2019-11-19 17:54
Krill

Registered: Apr 2002
Posts: 1308
Take a look at Tiny Sid 2 C64 Music Competition for some inspiration, as did i when i made the player in music.s from Artefacts source code and Fanta proceeded to compose a tune in it. :) Player is heavily based on GRG's work in Plaster (thanks mate!) but probably bears little resemblance now.
2019-11-19 18:13
Compyx

Registered: Jan 2005
Posts: 470
Thanks for the hints! I think Plaster has already been used in an entry for the current compo.

I'll check the Tiny SID (2) compo entries, see what can be implemented/ignored while still having some proper sound.

By the way, there's a lot of trailing whitespace in the Artifacts source code, when using VIM, do this (in ~/.vimrc):
set list listchars=tab:>-,trail:~

Sorry, I'm a little pedantic at times =)
2019-11-19 18:18
Krill

Registered: Apr 2002
Posts: 1308
Dude, that was made more than 13 years ago. Tell this to my younger self! :) (I've since switched OSes and editors, and use to have a keen eye on avoiding superfluous whitespace at line ends. :D)
2019-11-19 18:35
Compyx

Registered: Jan 2005
Posts: 470
Haha, well please do not look at my old code, I absolutely did not use CamelCase in C code (or asm) and such things.
2019-11-19 22:09
0xDB

Registered: Aug 2015
Posts: 23
My 4096 and a few bytes intro is basically done...got rasterbars, scrolltext, some sprites, still need to add music and I already squeezed some code and data hidden into the screen, so I have 299 bytes left in my code segment, 36 in my data segment and 86 in ZP. Think I'm going to read up on SID programming. :]
2019-11-19 22:39
Krill

Registered: Apr 2002
Posts: 1308
Quoting Compyx
I'm working on a mini player for this, but it's been ~25 years since I wrote a player. I do have "Die Kunst der Fuge", so perhaps come clever reuse/alteration of melodies/themes will do the trick.
But I'll probably reuse some SID :(
Oh, also https://codebase64.org/doku.php?id=base:256_bytes_tune_player =)
2019-11-20 10:10
Golara

Registered: Jan 2018
Posts: 168
If I use some KERNAL or BASIC function and it changes some of it's ram (that area after the stack) does that count as used memory ?
2019-11-21 22:35
Didi

Registered: Nov 2011
Posts: 356
Sorry for the late reply:
You are allowed to use kernel routines and as you do not have control of what addresse they modify, I would not mind as they will not set any adresses to invalid values what custom code probably would to.
2019-11-21 22:57
TheRyk

Registered: Mar 2009
Posts: 641
been there, tried that. only problem is there are just few useful routines in ROMs and the most useful (KERNAL CLRSCR) fills ColRAM differently on older ROM revs. ATM I'm not desperate enough yet to seek through ROM listings *knocks on wood*.

of course some might use JSR $EA31 or better $EA81 to end IRQs
2019-11-21 23:28
Krill

Registered: Apr 2002
Posts: 1308
I found the float routines extremely helpful here and there. Especially POLYX ($e043). =)
2019-11-22 07:01
ChristopherJam

Registered: Aug 2004
Posts: 990
Quoting TheRyk
only problem is there are just few useful routines in ROMs and the most useful (KERNAL CLRSCR) fills ColRAM differently on older ROM revs.


As Zyron pointed out a while back, you can safely use
	lda #col
	sta $d021
	jsr $e536
on both old and new ROMs
2019-11-22 20:49
TheRyk

Registered: Mar 2009
Posts: 641
ah thx for the hints, might grant me some extra RAM! :)
2019-11-23 20:58
TheRyk

Registered: Mar 2009
Posts: 641
Quote:
bytes at one block, at whatever location you like

Q: Must intro range cover $0801 ff or is a basic start/SYS line allowed without counting as used RAM?
If SYS-Line counts and $0801 ff must be part of my used RAM, I'm not in really big trouble but it would mean some more relocating work here which would make me go NARF...
2019-11-23 21:10
Golara

Registered: Jan 2018
Posts: 168
Quote: Quote:
bytes at one block, at whatever location you like

Q: Must intro range cover $0801 ff or is a basic start/SYS line allowed without counting as used RAM?
If SYS-Line counts and $0801 ff must be part of my used RAM, I'm not in really big trouble but it would mean some more relocating work here which would make me go NARF...


Well last year for 16kb intro almost everyone (including me) used $4000 - $7fff. Packed with self extracting exomizer at $801 with basic line. It didn't count as used ram.
2019-11-23 21:44
Richard

Registered: Dec 2001
Posts: 556
Expect a 4K PETSCII TND intro from me some time in December ;) I started on it today. I managed to create my own 1KB music player routine and started on the intro code. I should hopefully have it done within the next 2 or 3 weeks.
2019-11-23 22:17
wacek

Registered: Nov 2007
Posts: 365
Just uploaded our intro, hope everything is fine with the rules ;)
Hidden in Plain Sight
2019-11-24 14:00
ZeSmasher

Registered: Feb 2003
Posts: 367
is it just me who thinks the 4K compo has more sex appeal than the 16K one? :)
2019-11-24 14:31
Golara

Registered: Jan 2018
Posts: 168
Quote: is it just me who thinks the 4K compo has more sex appeal than the 16K one? :)

Maybe, 4K really made me think and do some tricks I didn't think before. Cool exercise
2019-11-24 14:33
Jammer

Registered: Nov 2002
Posts: 857
I'm onto 4k as well. Not sure if I manage to release 16k besides.
2019-11-24 16:47
Twilight

Registered: May 2007
Posts: 3
only end the intro with space and reset ?

or a real working intro with relocator for the crack ?
2019-11-24 16:49
Golara

Registered: Jan 2018
Posts: 168
Quote: only end the intro with space and reset ?

or a real working intro with relocator for the crack ?


Just call kernel reset on space.
Here's DESIRE 4k intro for the compo :) Fourkay

Any idea why it doesn't show up on the main page in latest releases ??? :(
2019-11-24 19:20
Didi

Registered: Nov 2011
Posts: 356
Yep, simply jumping to $FCE2 after spacebar is ok.
2019-11-24 19:23
Krill

Registered: Apr 2002
Posts: 1308
Quoting Golara
Any idea why it doesn't show up on the main page in latest releases ??? :(
It does. It just takes a while for the frontpage to update, i guess this is some kind of server-side optimisation.
2019-11-24 22:17
TheRyk

Registered: Mar 2009
Posts: 641
Quote: is it just me who thinks the 4K compo has more sex appeal than the 16K one? :)

Uncle Ryk told you so years ago/ kept telling everyone who didn't want to listen for years that 16K hasn't got to do anything with crack intro size and moreover is only 25% of the fun 4K provides :)

Seriously, though my 4K might not be impressive or win any fame, tough limits force to improve skills, as there were no vast RAM areas to fill with stupid skript kid copy & paste speed code.
2019-11-25 07:16
Oswald

Registered: Apr 2002
Posts: 4487
"to improve skills, as there were no vast RAM areas to fill with stupid skript kid copy & paste speed code."

your skill would improve more if you would try to fit a stupid script kiddie demopart that needs speedcode into 16k. its much tighter than one would think, and needs more creativity than I have all 64k to shit speedcode and tables in, and more than I only have 4k so I cant code something complex anyway so lets just have a scroller+logo.
2019-11-25 11:23
Krill

Registered: Apr 2002
Posts: 1308
Quoting Oswald
I only have 4k so I cant code something complex anyway so lets just have a scroller+logo.
Not sure if i'm getting you right, but 4K allows for more than just a logo and a scroller. And you can use (partially) unrolled code, of course, just not so much of it. =)
2019-11-25 12:42
Oswald

Registered: Apr 2002
Posts: 4487
Quote: Quoting Oswald
I only have 4k so I cant code something complex anyway so lets just have a scroller+logo.
Not sure if i'm getting you right, but 4K allows for more than just a logo and a scroller. And you can use (partially) unrolled code, of course, just not so much of it. =)


sure you can use partial speedcode in 256 bytes and have more than logo + scroller, but this is territory of speecode copy+paste script kiddies =)
2019-11-25 14:34
ChristopherJam

Registered: Aug 2004
Posts: 990
Quoting TheRyk
tough limits force to improve skills, as there were no vast RAM areas to fill with stupid skript kid copy & paste speed code.


That's fightin' talk, that is :D
2019-11-25 15:43
Golara

Registered: Jan 2018
Posts: 168
I don't know about you, but I never made any effect with the aim to fit into 4 or 16kb. I was just writing something and then it turns out it's small or could be smaller without much effort.. I guess I'll use it for 4/16kb intro then. Then you add music, graphics, "design" and it's over the limit by 500 bytes and rest few weeks is just triming the fat everywhere. I like it honestly
2019-11-25 15:54
ZeSmasher

Registered: Feb 2003
Posts: 367
Quote: I don't know about you, but I never made any effect with the aim to fit into 4 or 16kb. I was just writing something and then it turns out it's small or could be smaller without much effort.. I guess I'll use it for 4/16kb intro then. Then you add music, graphics, "design" and it's over the limit by 500 bytes and rest few weeks is just triming the fat everywhere. I like it honestly

I quote you 100% :)
2019-11-25 17:53
TheRyk

Registered: Mar 2009
Posts: 641
If you do sth with various extremely polished sprite fonts over a fancy bitmap gfx with some huge .SID, there might be stuff where a full VIC Bank of RAM comes quite handy and makes sense, agreed. I didn't want to bash 16K competitors, though I'm happy if some of you lazy bastards feel a little provoked/challenged, hehe.

All I'm saying is 16K frequently doesn't require any optimizing/half-smart coding. Maybe it's just me (who doesn't know any bitmap gfxians that ain't lazy bastards so I rather use ROM or coder gfx anyway so I never need much RAM for visuals), but 16K (=no) limit often made me go lazy and think "why bother optimizing stuff like unrolled loops, e.g. by a code generator or self-modifying routine - when exomizer can do all the work more efficiently anyway with regard to crunched file." That's why I like the 8K hosted by CJ better and this 4K even more. Looking 4wd to doing 2K and 1K ;)
2019-11-25 18:59
Krill

Registered: Apr 2002
Posts: 1308
Quoting TheRyk
"why bother optimizing stuff like unrolled loops, e.g. by a code generator or self-modifying routine - when exomizer can do all the work more efficiently anyway with regard to crunched file."
Because if you can generate code at run-time, you can squeeze in more variations and possibly more effects, too. =)

Really, any given set of platform limitations allows for a continuum of information density. Meaning if you can easily pull off an effect, it probably means there are more impressive things possible within the same limitations. :D
2019-11-25 22:04
Compyx

Registered: Jan 2005
Posts: 470
Perhaps a silly question, but what is the state the intro is supposed to start from? Stock C64 after a cold start without any cart/custom ROM? In other words: can I rely on a 'default' VICII, $01, CIA state?
2019-11-25 22:21
Didi

Registered: Nov 2011
Posts: 356
I smell dirty tricks. :-)
4kb should give enough space for proper initialisation of e.g. needed zero pages IMO. CIA and VIC values should be default post-reset state.
2019-11-26 10:38
TheRyk

Registered: Mar 2009
Posts: 641
Compyx: Feel free to check KERNAL ROM listing for initialised RAM, afair SOME values can be relied on :) Though I think compatibility is clearly desirable (and I even cared about old KERNAL revs), imho "working on stock KERNAL V3" must count as valid entry even if it fucks up with old rev or $hankypanky ROM/CRT
2019-11-26 11:17
Danzig

Registered: Jun 2002
Posts: 385
Quote: I smell dirty tricks. :-)
4kb should give enough space for proper initialisation of e.g. needed zero pages IMO. CIA and VIC values should be default post-reset state.


you can initialize with like sta $d000,x by the way. that was a well used pattern in the 80ies :-) so a little math here:

10 bytes lda#/sta$ for 8 x&y sprites results in 80 bytes.
lda$/sta$ to d000, with loop makes ~11 bytes + 16 for x&y is like 27 bytes or alike. setting $d010 makes + 1 byte or + 5 for lda#/sta$

and this is a naive approach, taking no optimizations into account. And it's not limited to sprites initalization, just taken as a proper example.

@Didi: please cancel 16k and start it after the 4k ;-)
2019-11-26 11:30
ZeSmasher

Registered: Feb 2003
Posts: 367
Quote:
@Didi: please cancel 16k and start it after the 4k ;-)

no
2019-11-26 12:22
Didi

Registered: Nov 2011
Posts: 356
Running 4k and 16k together is an experiment. Maybe the 16k entries just take a bit more time to think what to do with that lot of RAM. ;)
2019-11-26 18:48
Dwangi

Registered: Dec 2001
Posts: 115
No there are people who used to release intros in the last minute.
Remember last year Cruzer had the lead until the last day I think.
then Jammer came ..
2019-11-26 20:58
Danzig

Registered: Jun 2002
Posts: 385
Quote: Quote:
@Didi: please cancel 16k and start it after the 4k ;-)

no


I was just joking ;-)
2019-11-26 23:46
ZeSmasher

Registered: Feb 2003
Posts: 367
Quote: I was just joking ;-)

me too. Grumpy Cat mode is now off :)
2019-11-27 17:15
0xDB

Registered: Aug 2015
Posts: 23
Had a load fun! noop-tro-2019-4kB

This was the first time for me to write my own music and player code. It was quite the headache at first but after optimizing my other code and swapping some stuff around I could free up about 530bytes for music+player.

My player concept was still too big to fit into RAM, so I had to scratch the idea of having effect routines like frequency sweeps. Also... hadn't written my own music before and after some days of trying to compose anything good(yeah... nope, not a musician) I ended up stealing a few notes from J.S.Bach "Wir eilen mit schwachen...", modified them slightly and since his original composition, including soprano,alto and bass could not be replicated genuinely within the confines of the three SID voices and within the handful of bytes I had left (and due to the fact that my player code could not change octaves in the middle of a pattern), I decided it would be best not to smear his good name with this alteration, so a new persona was born: Johann Sebastian Bass. Tada!
2019-11-29 13:13
MCM

Registered: Apr 2018
Posts: 4
I am hard working on a 4k intro, it looks nice so far.
But i have a question about that screen ram counts as used memory rule.
The intro has a footprint from $0800-$17ff right now.

I am writing something like 160 Bytes to Screen ram for a Logo and some text.
the rest will be filled with $20 or $00 at setup.

Should i substract only these 180 bytes from the footprint or
the whole screen ram from $0400-$07e7 ? ( I am using only line 1-15 and line 18 so far ).

I like to have sum more bytes to add more effects. ;)=
2019-11-29 13:47
Didi

Registered: Nov 2011
Posts: 356
@MCM: RAM area will be counted as used from first used byte to last used byte in one block. But you are allowed to buffer the used area somewhere else at start and restore it on exit so it appears untouchted.
2019-11-29 14:54
Golara

Registered: Jan 2018
Posts: 168
Quote: I am hard working on a 4k intro, it looks nice so far.
But i have a question about that screen ram counts as used memory rule.
The intro has a footprint from $0800-$17ff right now.

I am writing something like 160 Bytes to Screen ram for a Logo and some text.
the rest will be filled with $20 or $00 at setup.

Should i substract only these 180 bytes from the footprint or
the whole screen ram from $0400-$07e7 ? ( I am using only line 1-15 and line 18 so far ).

I like to have sum more bytes to add more effects. ;)=


As I understand the rules, you can have screen at some other memory than your main program (for example the default screen at $400 while the intro is $3000 - $3fff) and only the bytes wasted by your logo or other graphics would be counted, but you can't expect the rest of the screen to be blank! If the intro was linked with a game or something that memory would be "random" and you'd possibly get garbage on the screen
2019-11-29 15:52
ZeSmasher

Registered: Feb 2003
Posts: 367
Quote:
As I understand the rules, you can have screen at some other memory than your main program (for example the default screen at $400 while the intro is $3000 - $3fff) and only the bytes wasted by your logo or other graphics would be counted, but you can't expect the rest of the screen to be blank! If the intro was linked with a game or something that memory would be "random" and you'd possibly get garbage on the screen

AFAIK it means:
- if you use $3000-$3fff for your intro you can simply set your screen RAM inside that area, e.g. at $3400. end of the story
- if you use $0400-$07ff (incl. sprite pointers, etc) for your screen RAM you can use $3400-$3fff for your intro. I think that's allowed by Didi's rules (but I could be wrong). you could even use $3000-$3fff but you need a way to save existing $0400-07ff somewhere first and restore that area at press space.
2019-11-29 16:15
Golara

Registered: Jan 2018
Posts: 168
Quote: Quote:
As I understand the rules, you can have screen at some other memory than your main program (for example the default screen at $400 while the intro is $3000 - $3fff) and only the bytes wasted by your logo or other graphics would be counted, but you can't expect the rest of the screen to be blank! If the intro was linked with a game or something that memory would be "random" and you'd possibly get garbage on the screen

AFAIK it means:
- if you use $3000-$3fff for your intro you can simply set your screen RAM inside that area, e.g. at $3400. end of the story
- if you use $0400-$07ff (incl. sprite pointers, etc) for your screen RAM you can use $3400-$3fff for your intro. I think that's allowed by Didi's rules (but I could be wrong). you could even use $3000-$3fff but you need a way to save existing $0400-07ff somewhere first and restore that area at press space.


You need to save the original screen, so if your intro is $3400-$3fff and you want to use screen $400, copy it to $3000 first. Then you have the full 4kb with no gaps
2019-11-29 16:31
ZeSmasher

Registered: Feb 2003
Posts: 367
mmmh, ya rite, I forgot about the "at one block" rule.
2019-11-30 18:15
Rudi

Registered: May 2010
Posts: 115
quote: "has a maximum RAM footprint of $4000 bytes at one block"

Does that mean code and data (graphics and music), i.e. everything has to fit within that area except usae of VIC and SID-registers and so on?
2019-12-01 09:06
TheRyk

Registered: Mar 2009
Posts: 641
pretty much yes if "so on" means complete I/O, zeropage and stack plus SYS-line
2019-12-01 19:22
MCM

Registered: Apr 2018
Posts: 4
Quoting Didi
@MCM: RAM area will be counted as used from first used byte to last used byte in one block. But you are allowed to buffer the used area somewhere else at start and restore it on exit so it appears untouchted.


Hmmm... so „buffer the used area somewhere else“ could be a simple
code like this :

Ldx#00
Lda 0400,x
Sta 8000,x
Lda 0500,x
sta 8100,x
Lda 0600,x
Sta 8200,x
Lda 0700,x
Sta 8300,x
Inx
Bne xx
...

The run the intro, after pressing space like this , to get back the whole ram like it was before :
Ldx#00
Lda 8000,x
Sta 0400,x
And so on ..

Then
Lda 7000,x
Sta 8000,x
And so on. This fills up the area $8000-$84ff with the random ram filled stuff like it was before, then just a simple jump $fce2 ?

Whole intro code incl. graphic stuff still will be from $0800 - $17ff, all the time.Plus some bytes ( 180—200) in screen ram for logo and text only while running.
2019-12-01 23:31
0xDB

Registered: Aug 2015
Posts: 23
If you use RAM outside your chosen block, you have to store/restore that RAM inside/from your chosen block as well. You can't just store it somewhere outside your block because then you'd overwrite something else there.

In other words: If you chose 0800-17ff any RAM from the default screen RAM will have to be stored into that range, if you want to use the default screen RAM for something else. But... it would seem wasteful, why not just use a different screen RAM?
2019-12-02 00:43
TheRyk

Registered: Mar 2009
Posts: 641
hmh if using a complete VIC bank RAM and then flooding it with the random-initialised content of another VIC bank RAM after PRESS SPACE was allowed (as MCM seems to consider), I would have wasted a lot of time complying to the rules, but it doesn't make much sense ;)
2019-12-02 14:21
ChristopherJam

Registered: Aug 2004
Posts: 990
TheRyk - just apply inverse Banach–Tarski then you should be able to store two of the banks into one 16k area no matter how random the data is :D
2019-12-02 14:57
Krill

Registered: Apr 2002
Posts: 1308
Does the Banach–Tarski paradox apply to finite sets of bits? =)
2019-12-02 15:42
ChristopherJam

Registered: Aug 2004
Posts: 990
OMG, look over there!
2019-12-03 15:52
MCM

Registered: Apr 2018
Posts: 4
Ok, long story short... i moved all code to a new vic bank , and no all works fine. I just had a sid at $1000, that was the Problem right from the beginning.
Maybe somebody could spare a nice Banach–Tarski paradox Routine with me. ;-)
2019-12-03 16:34
Didi

Registered: Nov 2011
Posts: 356
For many musics you can use Sidreloc 1.0 to move them to another memory location.
2019-12-08 11:41
ChristopherJam

Registered: Aug 2004
Posts: 990
rules check:

So the rules say what happens at runtime outside system addresses and my chosen $1000 bytes is up to me.

Does that mean that if an entry of mine
- loads to 0801-1800,
- then upon execution overwrites $0000-$01ff and $d800-$dc00
- then shuffles some other data into the $0801-1800 area for restoration at exit,

then as long as I restore at exit any ram I touch in step 3 outside of 0000-01ff, 0801-1800, I/O (incl. colour ram), and IRQ vectors, then I'm fine?

The reason I ask is that I need to write to colour ram as part of my initial memory shuffle, but a prior entry of mine in an earlier ICC was disqualified due to the cruncher I used initialising colour ram for me. This time the cruncher's going to be a fairly integral part of my entry (I need to do a lot of memory shuffling, so the demo really starts with the decompression stage, not after it), and I want to check that that's ok.
2019-12-08 12:46
Didi

Registered: Nov 2011
Posts: 356
Color RAM does not need to be restored.
Stack may be garbled as well, same goes for zeropage.
$00 and $00 should be in a valid state on exit.
Would be nice if the JMP on exit would be changeable later on which might pbe a problem if it is in crunched part. ;)
2019-12-08 12:47
Jammer

Registered: Nov 2002
Posts: 857
My intro is going to use $3000-$3fff, but exomized file is, naturally, placed after right $0800. Does it violate the rules? ;)
2019-12-08 12:48
Didi

Registered: Nov 2011
Posts: 356
Of cource not. But you should not rely on blanked screen or colors set by the decruncher.
2019-12-08 13:03
ChristopherJam

Registered: Aug 2004
Posts: 990
Quoting Didi
you should not rely on blanked screen or colors set by the decruncher.



Sure, but can we decrunch directly to color ram if the decruncher supports multiple destination segments?
2019-12-08 13:11
Didi

Registered: Nov 2011
Posts: 356
You can decrunch to color RAM if you like, if the decruncher is part of your custom area. If you use another area e.g. $1000-$2000 and your intro relies on colors set by a decruncher which is used to make it run-excecutable, it might look strange because the decruncher will not be present anymore in a later collection.
2019-12-08 13:15
ChristopherJam

Registered: Aug 2004
Posts: 990
Ah, that makes sense, thank you.

Ok, I'll just have 0801-1800 for my custom area I think, should avoid any confusion.
2019-12-09 23:53
Jammer

Registered: Nov 2002
Posts: 857
Tillax Intro

Count me in ;)
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
iceout/Avatar/HF
The MeatBall
csabanw
Dymo/G★P
Guests online: 29
Top Demos
1 Uncensored  (9.7)
2 Unboxed  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.7)
5 Comaland 100%  (9.6)
6 Lunatico  (9.6)
7 The Shores of Reflec..  (9.5)
8 Rivalry  (9.5)
9 C=Bit 18  (9.5)
10 X Marks the Spot  (9.5)
Top onefile Demos
1 Instinct  (9.6)
2 Crystal Gazer  (9.6)
3 Dawnfall V1.1  (9.5)
4 Smile to the Sky  (9.5)
5 The Tuneful Eight [u..  (9.5)
6 Field Sort  (9.5)
7 Space Demo  (9.5)
8 The Tuneful Eight (U..  (9.5)
9 Daah, Those Acid Pil..  (9.5)
10 Innervasion  (9.5)
Top Groups
1 Oxyron  (9.4)
2 PriorArt  (9.4)
3 Fossil  (9.4)
4 Booze Design  (9.4)
5 Censor Design  (9.4)
Top Coders
1 ZeroPaige  (9.9)
2 Axis  (9.8)
3 Luke  (9.8)
4 Freshness  (9.8)
5 CRT  (9.8)

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