Ok, since I don't like to bash things without poking at them thoroughly, I decided to look seriously inside the code of Shadow of the Beast on the ST.
I got myself the original STX (Pasti) files, the DBUG "hdd/falcon compatible" version, as well as two "filed" versions (one from Automation and one from Medway Boys).
I used a mix of Easy Rider and Steem Boiler 3.9.4 for debugging/tracing, and then applied a bunch of patches to my version to make sure the code did do what I think it was supposed to do.
The bottom line is: NO, Shadow of the Beast is not as good as it could have been, not by a giant margin: The code is as best "good enough" for a prototype, but most of the patterns I've seen in the code suggest a "beginner++" level at best.
Among the issues:
- The coder NEVER use absolute short addressing mode, so all the color changes take way longer than necessary
- All the color changes are done with move.w, he never move.l two consecutive colors, he never (an)+ or movem.l them either
- He uses JSR in many places where he could have used BSR
- He loves to JSR / RTS (instead of JMP)
- The famed "Copper Emulator" is a mess, a lot of time is spent jumping to empty routines
- The code is full of mulu #400 and divu #25
- He often uses clr.l dn instead of moveq #0
For the ones who are interested, I added some posts with screenshots and comments on the "Atari pour toujours and beyond !" Facebook group
https://www.facebook.com/groups/1518006 ... 342887471/
Trivia: The Eldritch the Cat logo is just an IFF/ILBM animation in ANIM format, so whoever feels like doing a SOTB++ can easily change that.
Now, from what I've learned:
- The code is a mess, but a proper disassembly should probably not be too difficult to understand
- Adding STe palettes is trivial
- There's enough free cpu time in the small things I signaled to probably either add a music (hint: You have three chiptunes from FFT in the Phaleon you can use for that) or put back the missing scrolling barrier at the bottom
I'm going to stop my investigation there, if some of you want to have fun I've attached my "loader source code".
Just assemble it with vasm, then copy it over the floppy with the original files (or overwrite the original beast.prg).
Code: Select all
vasm.exe -m68000 -Ftos -noesc -no-opt -o %SOTB%beast2.prg %SOTB%beast.s
BEAST.s.txt
rasters_jitter_timer_b.png
muls_jsr_rts.jpg
timer_b_palette_change.png
You do not have the required permissions to view the files attached to this post.