Open utterances-bot opened 3 years ago
Kewl! We actually had to do the same not long ago. Nobody had the source and using it in the PC based tool chain we needed source. We ripped it from out intro maker though.
/Bacchus of FairLight
Thank you for sharing @Bacchus! It was a great experience to look behind the curtain.
Thank you very much for this awesome journey ! Explaining is details all this must have been time consuming, but that's for the best. And since you asked for it, mayne will dare you go for disassembling and commenting this really epic little masterpiece : https://csdb.dk/release/?id=118639 ("Dah those Acid Pills" by Censor Design), one of the most beautifull scroller with tons of colors and mind blowing wave effect. Sure, lots of tech in it (VSP obviously) and lots of speed code :P
Woodo coded it, but all optimisation was done by Gollum. When we reassembled it (pretty much like you did) we ran into the issue that the intromaker optimised it by zeroing out all characters in the font that weren't used. All to save bytes.
I do my cracking work quite like yours. I trace the execution of the program to the point where the program starts and on the way I save out all the files it has loaded. Then II use Regenerator. It's a reassembler but my ambition is not to be able to assemble it again - I just do it to document the program.
Your article is most interesting and well written. And on the question "How many coders does it take to change a light bulb?" the answer is 100. One to do the job and 99 to say that they could do it better ;-)
Having said this, please find my remarks on your way of working: On the reassembly, the first two bytes of a file is a word pointing to the next basic instruction. If it's the last one, it should point to three zeros. The next two are the line number. Your reassembly looks like it's only the first byte.
I also use a block of text to define the number that is the SYS address. This from a program I just worked with:
.WORD a0817
.WORD $000A
.BYTE $9E
.TEXT " (2073) PETSPEED"
.BYTE $00
a0817 .BYTE $00,$00
Adding to this, the version you addressed is really old and a lot of optimisations were done to it after this.
In the recent incarnations, the code runs from 0801 and copies the data to high in memory. Font to $f800 and screen to $fc00.
We populate the screen by copying text rows and logo to it, and the sprite is also copied to the desired destination.
The sine is only 128 bytes and the data is generated using a function in KickAssembler.
We do also use a zero byte to terminate the scroller.
The very recent changes is work on the raster bars. They are now stable and they are stable both on PAL and NTSC.
Current code is this: https://csdb.dk/release/?id=203906
Thank you BacchusFLT for sharing all these insights about the creation of the intro back then and the improvements made to it today. This all enriches this article a lot, very appreciated! \o/
Join the FairLight fan page on Facebook, and you can chat with Kresten / Woodo directly. :)
I do not use Facebook anymore, please say "hi!" from me to Woodo! I would love to get his feedback and I hope he's okay with my article? Cheers to the Fairlight crew!
Hi Ingo you little ....argg... you made an astonishing article! i did a few ago more or less remixed intros of the Force which where made 1988-1990 and it was big fun to make them from scratch with my flavour , i think this is a great way to learn ASM and intros/demos code . you did a great "break-down step to step" articel and i can't say how much i proud of your incredible work here. hugs from Delysid crew! btw i don't think if its helps but the C64 Debugger can helps a lot of analyzing the assembler with a lot of great C64 views like (GFX modes , memory , disassembly and much more) and now do a covnersion to Kick Asm insread of ACME which i find its a bit less friendly and powerful than Kick ASM ,
awww Alex, you keep on cheering me up, thank you so much for your support :)
@paich64 thank you for your kind feedback. This article indeed took quite a while and might leave the impression that I actually know what I'm talking about - a huge mistake :) I think your request is quite a bit too hard for me to understand really. That would be like making a gold fish understand quantum physics... :)
Yeah, "Dah Those Acid Pills" is obviously very complex to understand :) @Esshahn I also realize nice people are always here... Thinking about @alexgoldblat who knows me very well, but he may not recognize me because of my nickname, but yeah @alexgoldblat is a so beautifull person, and he helped me a lot to start assembly coding on c64, he's simply my mentor :).
You might try to give doom_workstage.d64 a dissassembler treatment:
https://csdb.dk/release/?id=81157&show=notes
This is an amazing piece of code for C64.
yes, please disassemble and explain another intro. This was a great read!
Wow!
Just saw this - amazing work! Thanks for bringing this back to life :-) This is so long ago.
As I recall, I didn’t write this using an assembler, but directly in an interactive machine code monitor. The relevant slice of memory would then be saved from there.
/Woodo
Thank you so much for your comment Woodo! It means the world to me that you like this article. I am the one who has to say thanks, as your cracktro helped shape what would become my professional life. Cheers!
If you want more background on the intro, feel free to have a look here: https://youtu.be/g7ltah2VmQ8
I wanted to have a chat with Kresten as well in that one, but that never happened.
I have done a video of my reassembly work here: https://youtu.be/97h3pDRfHRM
As you can see I have changed to 6502 bench over the Regenerator I used before.
awsm - The Fairlight Intro
retro computing with a flavor of nerdiness
https://www.awsm.de/blog/fairlight-intro/