STOTRO source code..

STOTRO source code..

Messagede ChrisTOS » Mar 24 Mar 2009 23:26

After popular request :)

Code: Tout sélectionner
' SNDH Replayer for GFA
' Original by Swe/YesCrew
' Modified version by gwEm
'
CLS
OPTION BASE 0
DIM r%(16)
INLINE sndhplay%,186
INLINE sndhtune%,18906
DEFWRD "A-z"
'
' Address of the zik
r%(14)=sndhtune%
'
' Frequency
'
r%(7)=50
'
super%=GEMDOS(&H20,L:0)
RCALL sndhplay%+28,r%()
~GEMDOS(&H20,L:super%)
'
' Align buffer to 256 byte boundary just to be sure :)
'
DIM buffer|(288256-1)
DIM x%(8032)
buf_address%=(V:buffer|(0)+256) AND &HFFFFFF00
'
' do mask
screen_address%=XBIOS(2)
FOR i=0 TO 15
  VSETCOLOR i,0,0,0
NEXT i
COLOR 5
CIRCLE 14,15,15
COLOR 2
CIRCLE 15,15,15
FOR y=0 TO 31
  FOR x=0 TO 1
    adr%=screen_address%+x*8+y*160
    mask%=NOT (DPEEK(adr%) OR DPEEK(adr%+2) OR DPEEK(adr%+4) OR DPEEK(adr%+6))
    DPOKE adr%+16,mask%
    DPOKE adr%+18,mask%
    DPOKE adr%+20,mask%
    DPOKE adr%+22,mask%
  NEXT x
NEXT y
'
' BLOAD "data\stot7.pi1",buf_address%
OPEN "i",#1,"data\stot7.pi1"
BGET #1,buf_address%,34
~XBIOS(6,L:buf_address%+2)
VSYNC
BGET #1,buf_address%,32000
CLOSE #1
~XBIOS(5,L:buf_address%,L:buf_address%,-1)
'
OPEN "i",#1,"data\stot8.pi1"
SEEK #1,34
BGET #1,buf_address%+32000,32000
CLOSE #1
'
OPEN "i",#1,"data\chess.pi1"
SEEK #1,34
BGET #1,buf_address%+32000+32000,32000
CLOSE #1
'
OPEN "i",#1,"data\hello.pi1"
SEEK #1,34
BGET #1,buf_address%+64000+32000,32000
CLOSE #1
'
FOR i=1 TO 200
  VSYNC
NEXT i
FOR i=0 TO 200
  sc%=buf_address%+i*160
  SPOKE &HFFFF8201,SHR(sc%,16)
  SPOKE &HFFFF8203,SHR(sc%,8) AND 255
  SPOKE &HFFFF820D,sc% AND 255
  VSYNC
NEXT i
~XBIOS(5,L:sc%,L:sc%,-1)
DIM precalc(4000,1)
BLOAD "data\fuzzy.chr",V:precalc(0,0)
FOR i=1 TO 3990
  chroma=precalc(i,1)/10
  IF chroma=16
    chroma=15
  ENDIF
  COLOR chroma
  PLOT precalc(i,0),precalc(i,1)
NEXT i
FOR i=0 TO 200
  sc%=buf_address%+32000+i*160
  SPOKE &HFFFF8201,SHR(sc%,16)
  SPOKE &HFFFF8203,SHR(sc%,8) AND 255
  SPOKE &HFFFF820D,sc% AND 255
  VSYNC
NEXT i
~XBIOS(5,L:sc%,L:sc%,-1)
~XBIOS(5,L:buf_address%+64000,L:buf_address%+64000,-1)
FOR i=1 TO 10000
NEXT i
r#=90
i=0
DO
  VSYNC
  INC i
  r#=r#-0.1
  x%=159+r#*COSQ(i)
  y%=79+r#*SINQ(i)
  RC_COPY screen_address%,32,0,32,32 TO buf_address%+64000,x%,y%,1
  RC_COPY screen_address%,0,0,32,32 TO buf_address%+64000,x%,y%,7
  EXIT IF r#<0
LOOP
FOR i=0 TO 200
  sc%=buf_address%+64000+i*160
  SPOKE &HFFFF8201,SHR(sc%,16)
  SPOKE &HFFFF8203,SHR(sc%,8) AND 255
  SPOKE &HFFFF820D,sc% AND 255
  VSYNC
NEXT i
~XBIOS(5,L:sc%,L:sc%,-1)
~XBIOS(5,L:buf_address%+96000,L:buf_address%+96000,-1)
'
' plasma
'
FOR i=1 TO 5
  BLOAD "data\pic"+STR$(i)+".pic",buf_address%+(i*32000+96000)
NEXT i
DO
  INC k
  FOR i=1 TO 5
    ~XBIOS(5,L:buf_address%+96000+(i*32000),L:buf_address%+(i*32000+96000),-1)
    FOR m=1 TO 15
   FOR j=0 TO 15
     VSETCOLOR j,0,0,(j+m) MOD 16
   NEXT j
   VSYNC
    NEXT m
  NEXT i
  EXIT IF k=10
  INC k
  FOR i=4 TO 1 STEP -1
    ~XBIOS(5,L:buf_address%+96000+(i*32000),L:buf_address%+(i*32000+96000),-1)
    FOR m=1 TO 15
   VSYNC
   FOR j=0 TO 15
     VSETCOLOR j,0,0,(j+m) MOD 16
   NEXT j
    NEXT m
  NEXT i
  EXIT IF k=10
LOOP
'
' Scroller using blitter
' Coded by GGN/Paradize in 06-08-2006
' Dedicated to those that still use GFA :)
'
super%=GEMDOS(&H20,L:0)
s%=V:x%(0)
ARRAYFILL buffer|(),0
scr1%=buf_address%
scr2%=buf_address%+32000
BLOAD "DATA\goldfont.pi1",s%
~XBIOS(6,L:s%+2)
ADD s%,34
'
s_x_inc%=&HFF8A20
s_y_inc%=&HFF8A22
s_hw%=&HFF8A24
s_lw%=&HFF8A26
end_1%=&HFF8A28
end_2%=&HFF8A2A
end_3%=&HFF8A2C
d_x_inc%=&HFF8A2E
d_y_inc%=&HFF8A30
d_hw%=&HFF8A32
d_lw%=&HFF8A34
x_cnt%=&HFF8A36
y_cnt%=&HFF8A38
hop%=&HFF8A3A           !Byte
op%=&HFF8A3B            ! >>
skew%=&HFF8A3D          ! >>
blit%=&HFF8A3C
'
' Construct an array of pointers that contain the letter start addresses
' (try to understand how that happens :P )
'
DIM lt_addr%(90)
off%=0
FOR i=32 TO 90
  lt_addr%(i)=s%+off%-8
  off%=off%+16
  IF off%/160=off%\160       !hehehehe
    ADD off%,31*160
  ENDIF
NEXT i
scroll_amount=4
scroll_offset=0
scroller_pos=1
right_endmask=SHR&(&HFFFF,16-scroll_amount)
text$=" THANKS FOR WATCHING THIS INTRO! CREDITS ARE: CODE: CHRISTOS, STOT LOGO: SH3-RG, MUSIC: 505, OTHER GRAPHICS: CHRISTOS: MUSIC REPLAY ROUTINE: GWEM-PHF, THIS SCROLLER: GGN-D-BUG. SO WHY DID YOU WATCH IT?"
text$=text$+" THE ST OFFLINE TOURNAMENT TEAM WOULD LIKE TO ANNOUNCE OUR PRESENCE AT OUTLINE 08 WHERE WE WILL HOLD A SPEEDBALL TOURNAMENT (ON ST). OUTLINE 08 WILL BE HELD"
text$=text$+" IN BRAAMT NL BETWEEN MAY 1 AND 4 2008. IT IS A MULTIPLATFORM PARTY AND GUARANTEED TO BE A LOT OF FUN! SO BE THERE! MANY THANKS GO TO GGN (THANKS MAN :)) , AND CYRANO JONES AND SHOWADDYWADDY FOR THEIR HELP WITH THIS INTRO."
text$=text$+"ALSO THANKS TO SH3 AND 505 FOR LENDING US THEIR TALENT AND TO THE #ATARISCNE PEOPLE. STOT ARE CHRISTOS AND KRADD. GREETINGS GO TO JA ------WRAP----- "
wrap=LEN(text$)
l_addr%=lt_addr%(ASC(MID$(text$,0,1)))  !Initialise this
shift=11
'
pixels=50
DIM offst%(pixels,1)
HIDEM
FOR i=0 TO pixels
  y=RANDOM(160)
  x=RANDOM(320)
  col=RAND(3)
  offst%(i,0)=y*160+(x\16)*8+i*2
  offst%(i,1)=SHL(1,15-(x AND 15))
NEXT i
DO
  '  CARD{&HFF8240}=&HFFF
  VSYNC
  ' CARD{&HFF8240}=0
  ~XBIOS(5,L:scr2%,L:scr2%,-1)
  '
  ' Scroll the screen
  '
  CARD{x_cnt%}=20    !20 words/line
  CARD{s_x_inc%}=8   !skip 8 bytes to get to next src word
  CARD{s_y_inc%}=8   ! ..  .. ..   ..  .. ..  ..  ..  line
  CARD{d_x_inc%}=8   ! ..  .. ..   ..  .. ..  ..  dst word
  CARD{d_y_inc%}=8   ! ..  .. ..   ..  .. ..  ..  ..  line
  CARD{end_1%}=&HFFFF   !left endmask (not used)
  CARD{end_2%}=&HFFFF   !middle ..    ( ..  .. )
  CARD{end_3%}=&HFFFF   !right  ..    ( ..  .. )
  BYTE{skew%}=-scroll_amount
  BYTE{hop%}=2        !HOG mode
  BYTE{op%}=3      !copy all src pixels
  '  CARD{&HFF8240}=&H500
  LONG{s_hw%}=scr1%+26880   !src address
  LONG{d_hw%}=scr2%+26880   !dst address
  CARD{y_cnt%}=32       !32 lines to blit
  BYTE{blit%}=192        !go for it! (freezes cpu :)
  LONG{s_hw%}=scr1%+26880+2   !src address
  LONG{d_hw%}=scr2%+26880+2   !dst address
  CARD{y_cnt%}=32       !32 lines to blit
  BYTE{blit%}=192        !go for it! (freezes cpu :)
  LONG{s_hw%}=scr1%+26880+4   !src address
  LONG{d_hw%}=scr2%+26880+4   !dst address
  CARD{y_cnt%}=32       !32 lines to blit
  BYTE{blit%}=192        !go for it! (freezes cpu :)
  LONG{s_hw%}=scr1%+26880+6   !src address
  LONG{d_hw%}=scr2%+26880+6   !dst address
  CARD{y_cnt%}=32       !32 lines to blit
  BYTE{blit%}=192        !go for it! (freezes cpu :)
  '  CARD{&HFF8240}=&H3
  '
  ' STARS
  FOR i=0 TO pixels
    off=offst%(i,0)
    val%=offst%(i,1)
    IF val%=&H8000
   CARD{ADD(scr1%,off)}=0
   CARD{ADD(scr2%,off)}=0      !APARADEKTO!!!!!!
   CARD{SUB(ADD(scr1%,off),8)}=1
   CARD{SUB(ADD(scr2%,off),8)}=1     !APARADEKTO!!!!!!
   SUB off,8
   IF off<=0
     off=ADD(off,26872)
   ENDIF
   offst%(i,0)=off
   offst%(i,1)=1
    ELSE
   val%=ADD(val%,val%)
   CARD{ADD(scr1%,off)}=val%
   CARD{ADD(scr2%,off)}=val%
   offst%(i,1)=val%
    ENDIF
  NEXT i
  '
  ' Blit portion of character
  '
  '  shift&=0 !15-(scroll_offset& AND 15)
  CARD{x_cnt%}=2     !3 word/line (2 words + 1 for shifting)
  CARD{s_x_inc%}=8   !skip bytes to get to next src word
  CARD{s_y_inc%}=152    ! ..  ..   ..  .. ..  ..  ..  line
  CARD{d_x_inc%}=8   ! ..  ..   ..  .. ..  ..  dst word
  CARD{d_y_inc%}=152    ! ..  ..   ..  .. ..  ..  ..  line
  CARD{end_1%}=&H0   !left endmask (unused)
  CARD{end_2%}=&H0   !middle ..    (unused)
  CARD{end_3%}=right_endmask   !right  ..    (
  BYTE{skew%}=shift
  BYTE{hop%}=2        !HOG mode
  BYTE{op%}=3      !copy all src pixels
  '  CARD{&HFF8240}=&H60
  LONG{s_hw%}=l_addr%    !src address
  LONG{d_hw%}=scr2%+27024    !dst address
  CARD{y_cnt%}=32       !32 lines to blit
  BYTE{blit%}=192        !go for it! (freezes cpu :)
  LONG{s_hw%}=l_addr%+2    !src address
  LONG{d_hw%}=scr2%+27024+2    !dst address
  CARD{y_cnt%}=32       !32 lines to blit
  BYTE{blit%}=192        !go for it! (freezes cpu :)
  LONG{s_hw%}=l_addr%+4    !src address
  LONG{d_hw%}=scr2%+27024+4    !dst address
  CARD{y_cnt%}=32       !32 lines to blit
  BYTE{blit%}=192        !go for it! (freezes cpu :)
  LONG{s_hw%}=l_addr%+6    !src address
  LONG{d_hw%}=scr2%+27024+6    !dst address
  CARD{y_cnt%}=32       !32 lines to blit
  BYTE{blit%}=192        !go for it! (freezes cpu :)
  SUB shift,scroll_amount
  ' CARD{&HFF8240}=&H424
  '
  ' Character logic
  '
  ADD scroll_offset,scroll_amount
  IF scroll_offset=32
    scroll_offset=0      !get new character
    shift=16-scroll_amount
    INC scroller_pos
    IF scroller_pos=wrap   !oops, need to wrap!
   scroller_pos=1
    ENDIF
    l_addr%=lt_addr%(ASC(MID$(text$,scroller_pos,1)))
  ENDIF
  IF scroll_offset=16
    ADD l_addr%,8         !point to 2nd chunk
    shift=16-scroll_amount
  ENDIF
  SWAP scr1%,scr2%
  '  CARD{&HFF8240}=&H422
LOOP UNTIL INKEY$<>""
~GEMDOS(&H20,L:super%)
~XBIOS(5,L:screen_address%,L:screen_address%,-1)
super%=GEMDOS(&H20,L:0)
RCALL sndhplay%+28+4,r%()
~GEMDOS(&H20,L:super%)
CLS


Feel free to do what you want with it. Not much in there anyway :)
ChrisTOS
 
Messages: 10
Inscription: Mar 16 Déc 2008 22:01

Retourner vers Demo

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron