Bad Apple 64

แชร์
ฝัง

ความคิดเห็น • 108

  • @shootingstar7101
    @shootingstar7101 7 ปีที่แล้ว +747

    "Bad Apple 64"
    Oh, hey, it's Bad Apple running on the Nintendo 64! Maybe it's even in 480p...?
    *Commodore 64*
    "... oh my god."

    • @формула-пика
      @формула-пика 5 ปีที่แล้ว +16

      я теж подумав, що це лунає N64

    • @user-zk4st3sk2f
      @user-zk4st3sk2f 3 ปีที่แล้ว +2

      That's me

    • @KairuHakubi
      @KairuHakubi 3 ปีที่แล้ว +51

      yeah the janky sprites looked like low-poly models from the thumbnail. I was hoping someone actually did that and re-animated the whole thing in those models. That would be impressive.

    • @tw-ck7xf
      @tw-ck7xf 3 ปีที่แล้ว +2

      damn

    • @quorrafromtron
      @quorrafromtron 3 ปีที่แล้ว +2

      I literally had the exact same thought process when clicking this video lol

  • @suadcokljat1045
    @suadcokljat1045 4 ปีที่แล้ว +355

    Imagine demonstrating this during C64 launch on CES 1982... ;-)

    • @bastardhyena7882
      @bastardhyena7882 3 ปีที่แล้ว +26

      People would be like: "YO ARE YOU SEEING THIS RIGHT NOW?" And "THIS IS SO RAD!!!"

    • @nintendhoe_693
      @nintendhoe_693 3 ปีที่แล้ว +22

      People would be pissing their pants

    • @robertasm20
      @robertasm20 2 ปีที่แล้ว +1

      @@nintendhoe_693 I don't think so…
      th-cam.com/video/Ko9ZA50X71s/w-d-xo.html

    • @victorfigueroa9385
      @victorfigueroa9385 ปีที่แล้ว +10

      @@nintendhoe_693 People would be shitting thier pants

    • @Relkond
      @Relkond ปีที่แล้ว +8

      This is honestly about what I expected for a c64. Bit disappointed that there arn’t voices, but that would have probably been the straw to break the single-disk limit. (Yes, C64 audio can do voices with at least landline quality - it can also render different parts of the screen in different display modes if you know the correct voodoo to invoke - really an impressive machine for it’s era). _Might_ be possible to get better image quality too, but there are clear trade-offs (machine code vs basic, display modes requiring more bytes, etc)

  • @markpenrice6253
    @markpenrice6253 6 ปีที่แล้ว +315

    Well, it's distorted as heck, but considering you had all of 70 bytes to play with per frame (so, like, 560 bits, equivalent of 28x20 raw pixels), I think we can let that slide. And it's still remarkably smooth, and recognisable throughout. Pretty goddamn astonishing.
    Just needs that last little twiddle to make the video actually match up with the audio ;) particularly the bit where the band appears is way off.

    • @konbiex4684
      @konbiex4684 3 ปีที่แล้ว +1

      here even weaker computer only had 124 threads (piksel) at its disposal th-cam.com/video/zh8MiNzKkiA/w-d-xo.html

    • @anonymousanonymous8216
      @anonymousanonymous8216 3 ปีที่แล้ว +4

      @愛してるよ!私は毛皮です。 lol the song is fine, the video is just way too fast

    • @religiousindustrialaliens
      @religiousindustrialaliens 2 ปีที่แล้ว +3

      @@anonymousanonymous8216 yeah, memory issues on an old computer. impressive nonetheless and simply a problem you can fix with editing.

    • @MixedSnowFoxPlays
      @MixedSnowFoxPlays ปีที่แล้ว +1

      @@religiousindustrialaliens yeah, at normal speed it's way too fast comparing to the original, then at 0.75x speed it's a little bit too slow, so i guess adjusting it to 0.85x or so would make it sync up (at least comparing this video to the original video)
      now listening the original and this one side by side made me notice that the audio is also a bit faster than the original one, so well, a lot of fine tuning would be necessary lol

  • @chainswordcs
    @chainswordcs 4 ปีที่แล้ว +128

    kinda wish the music lined up but this is still super impressive

    • @capnbug
      @capnbug ปีที่แล้ว +13

      Dude i was going crazy since the music was out of sync

    • @RyanB_VR
      @RyanB_VR ปีที่แล้ว +3

      @@capnbug
      s
      a
      m
      e

  • @AlchemiconSilver
    @AlchemiconSilver 7 ปีที่แล้ว +243

    I thought this was for the Nintendo 64, and not the C64...
    I guess it's a coincidence that they both have the number 64 in them...

    • @DogsRNice
      @DogsRNice 7 ปีที่แล้ว +50

      SlidingSilver the 64 in the Nintendo 64 refers to its 64 bit processor (something new to gaming consoles so that's why they pushed it)
      The 64 in the Commodore 64 refers to the 64KB of RAM it has (quite a lot for the time)

    • @da703
      @da703 3 ปีที่แล้ว +8

      We have come so far.

    • @JaredtheRabbit
      @JaredtheRabbit 3 ปีที่แล้ว +1

      Same

  • @naveedkhugiani3912
    @naveedkhugiani3912 10 ปีที่แล้ว +181

    Ok brief write-up as below. I have omitted the more technical details such as clustering, genetic mutation and hill climbing, but the below should give a rough idea of what was involved in the production of this demo.
    The original untouched video had over 6000 unique frames running at 30fps
    The first step was to decimate these frames to around 2200 frames (This would result in the video having the same length if played back at 10fps)
    According to rough calculations, I decided to encode each set of 128 frames separately.
    Each chunk of 128 frames would consist of individual graphic definitions and tile lookups together with the frame-packed data.
    Each set of 128 frames were fed through my tile quantizer (2x2) 16x16 pixels which would generate 256 (optimum tiles in 16x16 pixels)
    As the whole sequence of frames is reduced to 256 16x16 tiles, there are only 1024 8x8 unique graphic occurrences in this data.
    This data is then fed through the 8x8 genetic/hill climbing vq encoder which results in the whole set of 128 frames only requiring 256 tiles.
    There is still the issue that each frame uses 1k in size. Luckily as this data was previously quantized using the 16x16 variant, the entire 128k of frame lookups can be reduced to 32k as there are only 256 unique 2x2 tiles in the frame definitions.
    The 2x2 lookups are extracted from the frame data (this takes up 1k) and the 128k (128 frames) converted to 32k with no loss in quality.
    The next stage is delta packing, I am using a bit delta variant. First frame is uncompressed 240 bytes. The next frames store only the differences. the indication on whether or not a 2x2 block has changed or not is determined by the 30 byte bit-buffer that skips or reads a lookup value.
    On average this 32k of data for this animation sequence gets packed to around 12k
    Semi uncompressed data that is used for each 128 frames is the following
    2x2 tile lookup (1k)
    codebook (2k)
    compressedframes(approx 12k)
    Finally this entire chunk is lz packed resulting in the whole 128 bytes being packed to around 10k
    The decoder uses two main buffers.
    While playing back the 128 frames from one buffer, it loads the next set into the other buffer
    Decoder is running at 12frames per second (I could have optimized the decoder more - by also de-interleaving the 2x2 lookups for major speedup) but it worked fine as it is.
    Yes, quality does leave a lot to be desired, but I dont think much can be done in 60-70 bytes per frame (Although using vector plotting and filling would work for smooth simple area's (but eat on the frame rate)
    Objective was to include the sequence from beginning to end on a single disk side. And this has been achieved

    • @darinarrick824
      @darinarrick824 10 ปีที่แล้ว +1

      Who was the skeptic, and what have they said about it? :) Excellent work!

    • @antivanti
      @antivanti 10 ปีที่แล้ว +2

      Darin Arrick Perhaps a daemon sitting on his shoulder whispering in his ear? =)

    • @thealgorithm
      @thealgorithm  10 ปีที่แล้ว +18

      Ahaaa. The sceptic was indeed made up :-)

    • @ssicosomatico
      @ssicosomatico 11 วันที่ผ่านมา

      It’s simply magnificent; although I know I’m talking nonsense, since they are two completely different systems, in an NES hack I’m involved with, we use a simple palette trick extensively to store twice as many graphics in the same space. Depending on the palettes displayed on the screen, a different image is shown: th-cam.com/video/y8R5u11iA1g/w-d-xo.html

  • @Relkond
    @Relkond ปีที่แล้ว +4

    From the title, was expecting Nintendo 64, very much not disappointed to find this was on a C64 from the early 80s.

  • @skins4thewin
    @skins4thewin 6 ปีที่แล้ว +20

    My god I freaking LOVE the sound chip on the C64!

  • @Nieveria
    @Nieveria 6 ปีที่แล้ว +53

    video and audio are *very* off-sync, but good job as a whole

    • @Hi-ix5bb
      @Hi-ix5bb ปีที่แล้ว +1

      the video is playing too fast

  • @NoorquackerInd
    @NoorquackerInd 3 ปีที่แล้ว +3

    Commodore 64, ok, no Nintendo 64 yet, I will now port since I just got the dev kit running

  • @sithsmasher7685
    @sithsmasher7685 10 ปีที่แล้ว +5

    I always knew you were badass with a C64 Algo, but you never cease to surprise us.

  • @NoLongerTwee
    @NoLongerTwee ปีที่แล้ว +2

    This music video always makes me cry no matter the form

  • @hecateb581
    @hecateb581 6 ปีที่แล้ว +8

    Mad props to you this is incredible

  • @SuperWiiBros08
    @SuperWiiBros08 2 หลายเดือนก่อน

    I thought it was N64 but this is amazing too

  • @fuzzybad
    @fuzzybad 10 ปีที่แล้ว +3

    Most impressive!

  • @SianaGearz
    @SianaGearz 9 ปีที่แล้ว +3

    When watching it, first thought "Yep, VQ, and a honking big computer. Something a 90ies scener wouldn't have had". But facing the task, i still wouldn't be sure whether it would look any good at all, and well, it's OK.
    But the quality leaves something to be desired. I have some terrible ideas on the subject that probably won't work, but perhaps good for experience brownies.

  • @Sparkbomber
    @Sparkbomber 3 ปีที่แล้ว +1

    Impressive, very impressive indeed.

  • @AmirGrozki
    @AmirGrozki 10 ปีที่แล้ว +20

    Impressive!
    Would love to read on how that was achieved!

    • @disgustof-riley8338
      @disgustof-riley8338 ปีที่แล้ว

      The comment right above yours lol

    • @disgustof-riley8338
      @disgustof-riley8338 ปีที่แล้ว +1

      Here you go! (Screencaps) drive.google.com/drive/folders/1fbykuE0FmDAxuqZwJWkn44SeD8FePmHe

  • @MrFixer1983
    @MrFixer1983 10 ปีที่แล้ว +4

    Great demo!!!
    And that on the C64 ^_^

  • @merman1974
    @merman1974 10 ปีที่แล้ว +3

    That's impressive!

  • @antivanti
    @antivanti 10 ปีที่แล้ว +3

    That is quite un-sane! I second the requests for a write up. =)

  • @spookyhogan
    @spookyhogan ปีที่แล้ว

    When I saw the title I assumed it was about the Nintendo 64

  • @FluffyAngelUwU
    @FluffyAngelUwU 3 ปีที่แล้ว +5

    "does it make noise?"
    "Yes."
    "Does it have a screen?"
    "Yes."
    "Can I record it?"
    "Yes."
    **Bad apple ensues**

    • @Chocomint_Queen
      @Chocomint_Queen ปีที่แล้ว +2

      >Does it have a screen
      Someone recorded Bad Apple in stop motion _on apples._ More like as long as it has at least two states.

  • @user-ik5sk3fr8t
    @user-ik5sk3fr8t 2 ปีที่แล้ว

    Trust me the algorithm will bless this video sooner or later.

  • @sudonautilus4739
    @sudonautilus4739 2 ปีที่แล้ว +1

    Woah 4K quality

  • @TheSaival
    @TheSaival ปีที่แล้ว

    boy I would love to hear how you have compressed this in another video

  • @thealgorithm
    @thealgorithm  10 ปีที่แล้ว +2

    Write up as below by Naveed Khugiani (myself) but I had logged in under my non-scene handle name :-)

  • @FireyDeath4
    @FireyDeath4 ปีที่แล้ว +1

    No no no. I rather think that when something can be done, then you say it can
    :-)

  • @kimgkomg
    @kimgkomg 3 ปีที่แล้ว

    On my first watch I assumed it was done in text mode but on a second watch I am thoughly confused

  • @goeuldi
    @goeuldi 6 ปีที่แล้ว

    What the hell. Good job!

  • @ff_crafter
    @ff_crafter ปีที่แล้ว +1

    nice

  • @xiang-yue-fung
    @xiang-yue-fung ปีที่แล้ว +1

    failed but success

  • @Deadbay
    @Deadbay 4 ปีที่แล้ว

    This sounds like a 8-bit cover for bad apple

    • @cleverhardy5230
      @cleverhardy5230 3 ปีที่แล้ว +2

      It is. The entire music video was programmed for the Commodore 64, and since the computer couldn't handle MP3 files (being from the 80's), the programmers converted the song onto the Commodore's sound chip, SID.

  • @kiwibro6454
    @kiwibro6454 4 ปีที่แล้ว

    Of course the n64 could run bad apple, oh that's not the 64 we were talking about

  • @wolfetteplays8894
    @wolfetteplays8894 2 ปีที่แล้ว

    0.75x for the speed of the actual song

  • @vevakan7838
    @vevakan7838 2 ปีที่แล้ว

    woah

  • @RichardCyberPunk
    @RichardCyberPunk ปีที่แล้ว

    Comming from the Atari scene , the C64 has better sound but worse gfx for Bad Apple demo. Greetings from SOD/DCW! from old Atari 8bit demoscene.

  • @thewhitefalcon8539
    @thewhitefalcon8539 8 ปีที่แล้ว +43

    Audio is out-of-sync with video.

    • @jadsi
      @jadsi 5 ปีที่แล้ว +5

      Alex C IKR someone has to fix this

  • @da703
    @da703 3 ปีที่แล้ว

    Music get behind eventually

  • @Taidanaoineko
    @Taidanaoineko ปีที่แล้ว

    real

  • @fishernatethespaceman5015
    @fishernatethespaceman5015 6 ปีที่แล้ว +1

    Look like torn paper art

  • @FunkyM217
    @FunkyM217 10 ปีที่แล้ว +3

    If you can do it in 170k on C64, who knows what you can do on a standard A500 in 880k!

    • @thealgorithm
      @thealgorithm  9 ปีที่แล้ว +4

      I have started on Amiga actually :-) Look for the demo Amigalicious on Pouet. There is a youtube video of this somewhere, but destroyed via the frame skipping (which the decoder somewhat relies on alternate pixel fields to recreate the video

  • @amigademos
    @amigademos 6 ปีที่แล้ว +1

    didnt they run this on an pc 808 from 1981? lol

  • @ktheveg
    @ktheveg ปีที่แล้ว +1

    The audio and video seem slightly too fast, particularly the video is much too fast, creating an awful desync. I'm sure you can add a dt limiter or SOMETHING to keep the whole thing on-track (not speeding) and adjust frame timings to ensure the audio plays in the right time in-sync with the video. Good job though

  • @Uber_Versace
    @Uber_Versace ปีที่แล้ว +2

    As always 144p is mandatory

  • @lekanraposte6732
    @lekanraposte6732 ปีที่แล้ว

    Music is not in synch, but it's still impressive!

  • @redtails
    @redtails 9 ปีที่แล้ว +3

    honest question. Would a hardware-C64 be able to play this? E.g. can it read from disk fast enough, can it write to ram fast enough, can it execute the code in realtime?

    • @thealgorithm
      @thealgorithm  9 ปีที่แล้ว +5

      Yes, all running on a stock c64 and disk drive. If you have a real c64, you can download the disk image and transfer to real floppy, (or alternatively run it in an emulator) The depack and player code in this particular demo is not optimized but can still manage over 12fps video full screen and stream and depack from standard floppy. Link to disk images here. csdb.dk/release/?id=131628

    • @redtails
      @redtails 9 ปีที่แล้ว +1

      thealgorithm thanks for answering. I don't have a hardware c64. The reason I asked was that emulators are not bound by the same limits as hardware is. The 1mhz cpu can easily be run at much higher frequency in software. In addition, the disk drive was pretty slow, at only 300 bytes/sec stock.

    • @thealgorithm
      @thealgorithm  9 ปีที่แล้ว +3

      ***** By default the c64 emulators have exactly the same restrictions as the real hardware (although its possible to warp speed or increase sid chip amount etc)
      All demo's (Well by myself) on c64 run on stock hardware with no expansion.
      The speed of the 1541 by default using kernal rom routines is around 400 bytes per second yes, but can theoretically load up to 50 times the speed using no expansion or additions. Usually the speedup by default (IRQ loaders etc is around 10x)

    • @redtails
      @redtails 9 ปีที่แล้ว +1

      thealgorithm ah okay, that makes sense. Theoretically the disc drive is fast enough, in practice it'd have be to be determined, though your demo is likely to work on the c64 for real.
      So how are you generating this video? Is this like 8088 Corruption where you're forcing the text-only mode to output video-like stuff?

    • @thealgorithm
      @thealgorithm  9 ปีที่แล้ว +6

      ***** It does work on a real unexpanded c64 with floppy drive. Have tested it myself before releasing.
      This is how I am generating the video. (although this method is now outdated now :-))
      The original untouched video had over 6000 unique frames running at 30fps
      The first step was to decimate these frames to around 2200 frames (This would result in the video having the same length if played back at 10fps)
      According to rough calculations, I decided to encode each set of 128 frames separately.
      Each chunk of 128 frames would consist of individual graphic definitions and tile lookups together with the frame-packed data.
      Each set of 128 frames were fed through my tile quantizer (2x2) 16x16 pixels which would generate 256 (optimum tiles in 16x16 pixels)
      As the whole sequence of frames is reduced to 256 16x16 tiles, there are only 1024 8x8 unique graphic occurrences in this data.
      This data is then fed through the 8x8 genetic/hill climbing vq encoder which results in the whole set of 128 frames only requiring 256 tiles.
      There is still the issue that each frame uses 1k in size. Luckily as this data was previously quantized using the 16x16 variant, the entire 128k of frame lookups can be reduced to 32k as there are only 256 unique 2x2 tiles in the frame definitions.
      The 2x2 lookups are extracted from the frame data (this takes up 1k) and the 128k (128 frames) converted to 32k with no loss in quality.
      The next stage is delta packing, I am using a bit delta variant. First frame is uncompressed 240 bytes. The next frames store only the differences. the indication on whether or not a 2x2 block has changed or not is determined by the 30 byte bit-buffer that skips or reads a lookup value.
      On average this 32k of data for this animation sequence gets packed to around 12k
      Semi uncompressed data that is used for each 128 frames is the following
      2x2 tile lookup (1k)
      codebook (2k)
      compressedframes(approx 12k)
      Finally this entire chunk is lz packed resulting in the whole 128 bytes being packed to around 10k
      The decoder uses two main buffers.
      While playing back the 128 frames from one buffer, it loads the next set into the other buffer
      Decoder is running at 12frames per second (I could have optimized the decoder more - by also de-interleaving the 2x2 lookups for major speedup) but it worked fine as it is.
      Yes, quality does leave a lot to be desired, but I dont think much can be done in 60-70 bytes per frame (Although using vector plotting and filling would work for smooth simple area's (but eat on the frame rate)
      Objective was to include the sequence from beginning to end on a single disk side. And this has been achieved

  • @purpleisdebeste
    @purpleisdebeste 3 ปีที่แล้ว +2

    The music being out of sync was a great touch!

  • @alek11-37
    @alek11-37 3 ปีที่แล้ว +1

    The video (but not the sound - or not as much as the sound) should be slower

  • @esturk102
    @esturk102 4 ปีที่แล้ว +1

    にほんじーーーん

  • @theprodiamondboy4039
    @theprodiamondboy4039 ปีที่แล้ว

    The fact it was too fast

  • @achsunshee
    @achsunshee ปีที่แล้ว

    Oh wait, it's commodore 64, not nintendo 64!

  • @johndesacada9893
    @johndesacada9893 ปีที่แล้ว

    Um, It looks glitchy and way faster then the song

  • @larata1643
    @larata1643 6 ปีที่แล้ว +1

    0:46 c mon realy

  • @aliceaddison8638
    @aliceaddison8638 5 ปีที่แล้ว +2

    Audio out of sync

  • @amanosatoshitranslates
    @amanosatoshitranslates ปีที่แล้ว +1

    sound don't sync

  • @DirtJutter
    @DirtJutter ปีที่แล้ว

    I liked the Atari 8 bit with it's interlaced solution better.

  • @Waspeil
    @Waspeil ปีที่แล้ว +1

    This is very cool but also incredibly off-putting how not dinner the song is to the video.

  • @romastra
    @romastra ปีที่แล้ว

    IMHO ZX Spectrum cover is way better, both sound and video.

  • @user-bw4pc3xw1o
    @user-bw4pc3xw1o ปีที่แล้ว

    Классно но z80 все таки круче

  • @fr_schmidlin
    @fr_schmidlin 3 ปีที่แล้ว +1

    That time when Z80 systems leave 6502 systems eating dust. Even the ZX-Spectrum is better than this... Not to mention the Amstrad CPC, SMS and the best version on MSX2. :)

    • @haraldhimmel5687
      @haraldhimmel5687 2 ปีที่แล้ว

      Not to mention the gameboy! But the big issue here is surely the storage limitation .

  • @Nbrother1607
    @Nbrother1607 8 หลายเดือนก่อน

    music too fast
    video too faster

  • @inphanta
    @inphanta 6 ปีที่แล้ว

    This could’ve been better tbh.