Yes, this is incompatible! To work around that a global substitution
was done which garbled the source. Oh well does not assemble...
Also added new sound.
Quite some code added to make it into the megademo.
Sound is now good, but fullscreen vanished. THis may be due
to the assembler optimizing. Change the sample to infinity.dmn
and then you can see the scroller, but the sound is broken.
Very funny to debug that...
Assembple with 0 for digitest and you see color switches where the
soundplayer is located. Needs to be every second line.
Little speed gain: a multiplier table by 208 at _mul208:
there were some clockcycles missing. Usage of a7 to address hardware
registers with movep. Quite some heavy code rearrangement of which I forgot
what it was all about. Note that the background now bounces with double
speed as that looking more fluid.
the hardscroller and you can move with the numpad around.
the digirout is doing color changes. the white bars should be on every
second line to enable a nice and clean sound
reading switches from a table. This had to be put in all copyrouts.
Now it shows that it's sometimes important where on the screen you
place your code.
Some marcros added to ease integration.
8 copy routines have been integrated: nicely aligned colors.
digisound player code pasted after "end" is inactive.
annoying flicker as I need to integrate the scroll copy routines
The scroll is looking funny becauuse I force always cpy00 which is
the first to be integrated into overscan. First step: place color
changes instead of resolution switches.
CPU time is now completely used as a little routine got added to copy
the scroll into double buffer.
Could it be more optimized? Yes, but does it have to?
screenadr and we need to use a virtual address (logbase) to draw the scroll.
Notice some places where lea is replaced by add and other places where move is
replaced by lea. Takes less time.
right. You can change the wave by uncommenting lines in wavetab to get other
moves. The code moving right breaks the overscan on the lower part of the screen.
the classic 32 pixel height to 26, because there is not enough CPU time
left to do 32 pixel! We can do this because there is no 8 lines/scroll limit
when using the hardscroller.
to save space. But we do not shift the scroll buffer around. Instead
there are 416/16=26 different cases in the scroll buffer where the left
border of the scroller is. We simply use 26 different copy routines.
If you scroll now too far with the numpad, the copied scroller will
overwrite code, devpac or system. Crash ahoi!