pouët.net

Go to bottom

RED REDUX by Virtual Vision Group

       
        .00000&,       .000000. &00000&       .@@@000.%&@@@@@@@@@@@@@@       
        ,@@@@@@%.      &@@@@@@@@&@@@@@&     .@@@0000&#.@@@@@@@@@@@@@@@       
        .@@@@@@@@.     #@@@@@@&@%@@@@@@     @@@00000@.@@@@@@@0@@@@@@@&        
         .@@@@@@@@.    %@@@@@@@@%@@@@@%   &&&@000000.@@%                    
          .@@@@@@@@@.  %&@@@@@@@%@@@@@@.,@@@@0000%.@@#       
            .@@@@@@@@%.&@@@@@@@@%@@@@@@@,@@@@@000.%%%&                 
              .@@@@@@@@@@@@@@@@@%@@@@@@@@@@@00&%.@@@@        .&&&&&&&       
                %@@@@@@@@@@@@@@@%@@@@@@@@@@@@00.%@@@@.       &@@@@@@@   
                 .@@@@@@@@@@@@@@%@@@@@@@@@@@&0.%@@@@@.       @@@@@@@@       
                  .@@@@@@@@@@@@@%%@@@@@@@@@@@.%&@@@@@@&      @@@@@@@@       
                    #@@@@@@@@@@@%@@@@@@@@@@% .@@@@@@@@@@@@@@@@@@@@@@@       
                      @@@@@@@@@&%0@@@@@@@@%   @@@@@@@@@@@@@@@@@@@@@@@      
                       #@@@@@@@@.%@@@@@@%     .@@@@@@@@@@@@@@@@@@@@@%     
                         #&@@@@% %#&@@@# 2o25  .#@@@@@@@@@@@@@@@@@@@#       
                          ''''''  '''''          ''''''''''''''''''' 
-------- ------ ----- ---- --- -- - - -- --- ---- ----- ------ ------- --------

        RED REDUX 256 byte intro - a contribution to Multimatograf 2025
                         by Virtual Vision Group.

                         for ZX Spectrum 48K+AY
                        and also ZX Spectrum Next

-------- ------ ----- ---- --- -- - - -- --- ---- ----- ------ ------- --------

  This 256 byte intro refers to Red Supremacy,a 4KB intro released earlier this
month at Speccy.PL Party 2025 (https://www.pouet.net/prod.php?which=103873).
While the visuals here convey the basic idea, calling it a "redux" is of course
tongue-in-cheek, as the 4KB intro has much much more in it - go watch it if you
haven't.

  The intro is supplied both as a 48K+AY and as a ZX Spectrum Next binary, but
it had been entered in the classic (48/128K) compo. I decided to pay respects
to the original platform (plus it doesn't benefit from the Next capabilities).

  HOWEVER, this means that unlike many 256 byte intros for 48/128K, this intro
does not use any ZX Spectrum ROM routines.

  I think this is the first ZX 256b intro that plays a Protracker (or simply
non-trivial) music. I haven't extensively checked all of them, so feel free to
correct me if I'm wrong.

                                 Credits
                               ============

  - Code - RCL

  - Music - Kenotron (with modifications by RCL).

  - The intro is using ZX2 compression algorithm and code by Einar Saukas


                                How to run
                               ============

  For the 48K + AY / 128K version:

  - Just load the provided .tap file that contains the BASIC loader
  or
  - Load the separate code block at 24576 and run it:
        CLEAR 24575: LOAD "" CODE: RANDOMIZE USR 24576

  Note: if you don't turn on the sound or don't have the AY, you will be rather
disappointed.


  For the ZX Spectrum Next version:

  - You can run the .dot file anywhere from the SD card using NextZXOS browser.

                               Under the hood
                              ================

  This was born out of my music compression experiments while working on Red
Supremacy. I noticed that the beginning of the (excellent) Kenotron soundtrack
(originally from Voodoo invtro from 2000 by the way) had a rather simple 
structure and stood a chance to be redone to fit a 256b intro format.

  Of course it wasn't that simple. The music structure wasn't regular enough 
to rewrite it in the code, so I decided to compress the register dump. A 
pattern of music (64 notes) with tempo 4 takes 256 bytes per AY register, so 
I was looking at compressing up to 3584 bytes into <= 256. Gladly, as I said
Kenotron's track was somewhat simple in the beginning so it only needed values 
for 12 registers, one of which was a constant. That simplified things but still
the result compressed to about 200-220 bytes, not leaving much space for the
player or the decompressor routine (I used ZX2 with some minor mods).

  I had to make compromises and reduced the AY register update from once per 
frame to once per 4 frames, effectively bringing the dump size to 1/4. Most 
of the track was regular enough to allow that with minimal differences for 
the ear, but the kick in the beginning noticeably suffered. However I still 
wanted to have at least some visuals so I had to leave it at that.

  First version of the code ran fine and was ready for submission, but when 
doing a soak test on my real Spectrum 48K+AY, I noticed that it would stomp 
the memory and lock up after several minutes of running. While I judged that 
practically unimportant as no one would leave it running for that long, it 
didn't sit well with me. I rewrote the code so it can now run indefinitely long
without any ill effects.

  As I said above, due to the code being able to run both on 48K/128K and the
Next (within the same 256 byte limit), it is self-contained and free from
any ZX Spectrum ROM use. Ded aka Unbeliever aka MMA would approve of this :-)

  Expect the sources on github shortly after the party.

 -RCL, 2025-04-26
------------------ ----- ---- --- -- -  
Go to top