When SA96 is started, it
Structs/Files
(A) .img file (example for 800x600x16 image)
"imginfo"
info | dc.b | 'SA962048IMG',0 | just to check if itīs a correct file |
size | dc.l | 960000 | |
width | dc.l | 800 | |
height | dc.l | 600 | |
depth | dc.l | 16 | |
format | dc.l | RGBFF_R5G6B5PC | |
fadincnt | dc.l | 1 | number of checked faders |
fadoutcnt | dc.l | 3 | number of checked faders |
empty | ds.l | 10 | for future use |
imgdata | ds.l | size | raw image data |
colortab | ds.l | 256*3 | for chunky images |
(B) memory for patches and module communication
"patchmem"
patch1 | dc.l 0 | backup addr of patched function |
patch2 | dc.l 0 | backup addr of patched function |
quitit | dc.l 0 | 0=patches active (no screen switching) |
1=ignore patches (i donīt remove them) | ||
patch3 | dc.l 0 | backup addr of patched function |
empty | dc.l 0 | |
patch4 | dc.l 0 | backup addr of patched function |
fadeinstat | dc.l 0 | status of running fadein module |
fadeoutstat | dc.l 0 | status of running fadeout module |
actioncnt | dc.l 0 | number of running action modules |
actioninst | dc.l 0 | instuctions for running action modules |
stopmaxwait | dc.l 0 | 0=countdown maxwait |
1=stop maxwait countdown (while waiting for MUFS-login) | ||
wbstartup | dc.l 0 | 1=ShowAmiga96_Close has been executed |
actionpaused | dc.l 0 | number of paused action modules |
(C) ramfile (ram:showamiga96.dat)
"ramfile"
screenptr | dc.l | 0 | pointer to screen-struct of bootscreen |
imagememptr | dc.l | 0 | pointer to buffer with raw image data |
patchmemptr | dc.l | 0 | pointer to patchmem (B) |
size | dc.l | 0 | size of raw image data (w*h*d) |
width | dc.l | 0 | from imginfo (A) |
height | dc.l | 0 | from imginfo (A) |
depth | dc.l | 0 | from imginfo (A) |
format | dc.l | 0 | from imginfo (A) |
fadeincnt | dc.l | 0 | from imginfo (A) |
fadeoutcnt | dc.l | 0 | from imginfo (A) |
empty | ds.l | 10 | |
fadeoutmod | ds.b | 200 | filepathname of picked fadeoutmodule |
colortab | ds.l | 256*3 | from imginfo (A) |
p96driver | ds.b | 200 | pathname of monitordriver |
loadfast | dc.l | 0 | donīt use buffer, load to p96bitmap |
monidelay | dc.l | 0 | |
currentpic | dc.l | 0 | |
maxtrans | dc.l | 0 | |
randomimages | dc.l | 0 | |
waitwindowx | dc.l | 0 | |
waitwindowy | dc.l | 0 | |
closedelay | dc.l | 0 | |
backgroundcolx | dc.l | 0 | |
backgroundcoly | dc.l | 0 | |
waitwbstartup | dc.l | 0 | |
usewaitwindow | dc.l | 0 | |
usebackgpixel | dc.l | 0 | |
useclosedelay | dc.l | 0 | |
backgpixelcol | dc.l | 0 |
Tasks of a fadein module
When a fadein module is launched, the screen is ready, the raw imagedata buffer
is allocated and filled.
First you have to read the ramfile (if it doesnīt exist just quit) and check
the fadeinstat longword in the patchmem struct. It must be 3, which indicates
that the module may be started. If itīs not equal to 3 just quit.
If everything is ok and your module is running, you have to set fadeinstat to 1.
While patchmemptr->fadeinstat is equal to 1, you have full access to the
bootscreen - action and fadeout modules have to wait.
Now you can copy (or whatever) ramfile.imagememptr to the p96 bitmap. If
necessary you have to loadrgb32 ramfile.colortab for chunky images.
When you are finished, you have to set patchmemptr->fadeinstat to 0, which
is the signal for all other modules that they can start.
Last but not least you must freemem ramfile.imagememptr with ramfile.size.
Here you can download a little demo module
...I hope itīs more helpful...
The SA96 prefs program recognizes the faders by a file called
"modulename.inf" in showamiga96/modules/fadein which contains
the following information:
dc.b | 0 | module supports 8 bit images |
dc.b | 0 | module supports 16 bit images |
dc.b | 0 | module supports 24 bit images |
dc.b | 0 | module supports 32 bit images |
dc.b | 0 | module supports fastload (probably only 8bit colorcycle effects) |
dc.b | 0 | empty |
dc.b | 0 | empty |
dc.b | 0 | empty |
dc.b | 0 | empty |
dc.b | 0 | empty |