Bad Apple HD
An Atari 8-bit demo by Lucy, MotionRide and JAC! for Silly Venture 2k18 with the following unique selling points
- works on unexpanded Atari 400 with 16k RAM or higher machine
- works on both PAL and NTSC machines, PAL recommended
- only uses passive ROMs and standard tapes, no external CPU, microcontroller etc.
- 384 x 232 pixels, full overscan display
- 50 frames per second, dynamically adapted on NTSC
- real voice audio from the "educational soft" left tape channel
- additional intro and outro part resulting in 5:35 total runtime
- 177 MB of raw video compressed to 41 MB of video using unique ANTIC hardware compression
- 29 MB uncompressed 16-bit PCM audio recorded on the tape
I started this one in 2013 when FLM released the first conversion of the Bad Apple video for the Sega Megadrive.
As probably every coder on a low-end platform, I started thinking about how this great video could be best transformed my most beloved hardware. So I downloaded the video and started to play around with it, analyzing its structure and complexity and thinking about a way how this could be made possible on the Atari 8-bit computer.
Over the years, Bad Apple advanced to the modern "Hello World" for the retro computing demoscene. It has been converted to even the most obscure platforms including Atari VCS and Vectrex, often with very interesting and unexpected results. The creators of most versions set themselves the constraints they wanted to do their "personal" version of the demo. Of course, given the amount of data for 3:39 minutes of video, everybody used modern storage devices. I mean everybody except Algorithm, but I think that goes without a saying :-)
After experimenting with different screen resolutions and compression strategies, I finally had a working version in 2016. It didn't have sound yet only worked on the emulator, because it used the unlimited speed of the emulator when loading multi-segment executables from the host drive. But of course, my aim was to run this on the real hardware. Maybe even have cartridges produced by Atariage or something like this. Hence I targeted the 4 MB cartridge from Bigben. This was the same size as the video data in the original version, so it seemed enough and was supported by emulators.
But after some attempts in different directions, it turned out that nobody could produce this cartridge anymore because the chips used were no longer available or too expensive now.
The next idea was to use "The!Cart", which offers up to 128 MB. But there are only 100 such carts in the world, so the target audience was very limited.
In March 2016, playsoft released his version for the Atari 8-bit computer on AtariAge. Damn, he beat me to it. He was the first. Yet the conversions were straightforward bitplane compression and the frame rate was very low. The unique features of this version are the different resolutions and the music by Dhor.
In June 2017, R0ger released his version for the Atari 8-bit computer on AtariAge. Honestly, I was totally shocked. This version uses a standard 1 Megabyte / 8 Megabit Atarimax cartridge. It has a very nice POKEY conversion of the original tune and wonderful artwork by PG. The unique features of this version are the different visualization options, karaoke mode, and the beautiful end screen. It is definitively the best you can achieve within 1 MB.
Finally, at SillyVenture 2k17, a Bad Apple version for the Atari ST was presented, and I felt the air was getting thin. So SillyVenture 2k18 definitively had to be the release date for my version.
At Fujiama 2018, with the great help of Insane, I managed to completely automate over 20 previously manual steps of the conversion process from the original video to the Atari executable. With this, I could verify that the Atari is by no means capable of unpacking the data at the framerate I wanted. Actually, with the full overscan resolution that I was targeting, the ANTIC keeps the CPU blocked the majority of the time.
Because of this, and because of another 100 pieces of The!Cart had meanwhile been sold with even more to come, I decided to go for The!Cart. I wanted to push the quality to the maximum, no matter how much space that takes. After all, this should be a showcase of what unique things the Atari 8-bit hardware can do without modifications:
- 384 x 232 pixels full overscan display
- 50 frames per second
- real voice audio from the "educational soft" left tape channel
When I finally had the ROM working in September 2018, I saw a video posted by MotionRide on Facebook. I had met him and his wife at last year's Silly Venture. This style of animation was exactly what was missing to introduce the history of my version to the audience. Without it, it would just be a tech demo, nobody was able to understand or judge. But with it, it would be the best 1979 Atari commercial that never was.
So I contacted him on Facebook, created a script describing my ideas and we spent the next 4 weeks chatting, skyping, discussing uncounted problems with resolutions, frame rates, audio issues, bitrates and sending updates and tips.
Ultimately also an outro part was added. It is based on the famous end screen of State of the Art demo by Spaceballs on the Amiga 500. The demo won the The Party amiga demo compo in 1992 with a presentation that was unprecedented. The whole demo was a movie and streamed from the disk, just like Bad Apple HD streams the data from The!Cart. And just like "the real coders" back then stated "How could this demo win?? Lame programming and a useless track loader.", there will probably be people who will say just the same about this version. On the other hand, "State of the Art" is one of the most remembered demos on the Amiga because it simply looks and sounds f..king great even by today's standards. And looking at the 1979 hardware I've been using here, I am very proud of the result of the 5 years of work that went into it.
Running the demo in emulation
- Extract the complete archive to a local folder.
- Double click "BadAppleHD.bat" to start the emulator with the cartridge "BadAppleHD.car" and tape file "BadAppleHD-Altirra.wav" mounted correctly.
- Because Altirra turned out to have slightly different speeds for playing the audio, a separate WAV file is provided.
- Make sure to activate full-screen mode when the menu is shown.
Running the demo on real hardware
- The demo uses both The!Cart (64 MB or 128 MB) and regular audiotape as storage media. You can obtain The!Cart from the member shop on the A.B.B.U.C. website.
- The datasette must be a standard Atari datasette that can handle audio correctly.
- Preferably an XC11 as it has the best audio circuit.
- Make sure the datasette drive is connected directly to the Atari and not via another SIO device.
- The "BadAppleHD.wav" file is a stereo wave file you need to record on tape.
- You can loop the recording to use the loop mode of the demo later.
- The folder "studio" contains the The!Cart Studio workbook file "BadAppleHD.tcw" and the corresponding "BadAppleHD.tcd" folder with the data files.
- You can open it as is in the latest version of The!Cart Studio and export it to flash the content on a The!Cart with 64MB or 128MB.
- You can also add the data files individually to an existing The!Cart workbook.
In that case, the "BadAppleHD-Data.bin" must be assigned to the fixed bank 256 and must be set to content type "Executable File".
Use the context menu to make the two columns "Start Bank Fixed" and "Start Bank visible", in case they are not.
Select the "Start Bank Fixed" flag for the "BadAppleHD-Data.bin" entry and enter "256" as start bank.
If there is enough free space, but the content of the workbook is fragmented or the bank is already in use, click "Edit / Reassign Banks"
- In that case, the "BadAppleHD-Data.bin" must be assigned to the fixed bank 256.
- Flashing with POKEY divisor 0 and AspecQt takes about 2 hours.
- Insert the flashed "The!Cart" in the module port.
- Power-on the Atari, hold down "SHIFT" and press "RETURN" to start the demo.
- You will see a white screen prompting you to insert the tape.
- Insert the tape in the datasette and rewind it to the beginning.
- The press "RETURN" again and enjoy the demo.
- Pressing "ESC" during the demo performs a cold start and restarts the demo from the very beginning.
- 20 seconds after the demo has ended, it will automatically restart in loop mode and run as a storefront demo.
- In that mode, you do not need to press any keys anymore.
- The loader will sync the tape position automatically and play the video again until the tape is over.
- Narration / Voice Over: Lucy
- Pixel Graphics: MotionRide
- Code: JAC!
- To the creators of the original Bad Apple tune and video and their conversions on the different platforms. I must have heard it several thousand times in these 5 years and it's still great and enjoyable.
- To Insane for helping me through the darkness and trapdoor of the AVI format and the FFMPEG command line parameters.
- To Lucy and Pete without whom, this release would only have been yet another awesome-build-chain-tech-demo thing. Your ideas and creativity are the reason why this demo has finally reached the big screen in a way I am really proud of.
- To my beloved wife Patricia and my kids for motiving me and keeping many things off my back, so I do these crazy things.
- To Grey for organizing SillyVenture and periodically kicking my ass to get my things done. Without you, this would not even have been finished in 10 years.
- To all fellow sceners and Atari fans who actively contribute to SillyVenture, stay Atari!