Jump to content
IGNORED

Sintro, how was it done?


Recommended Posts

By the way, check this out for some interesting player effects: A 256 byte intro.

 

How was this demo done?

 

I know that these four bars are players, and the priority has been set to allow them to OR colors of the playfield.

 

But how are they moved? It isn't done in a DLI. VBI? That wouldn't work I think, so mainline code? The mainline code would have to be synced to the screen draw somehow wouldn't it?

 

I guess I will have to disassemble it to see what is going on.

post-2472-1057770466_thumb.jpg

Link to comment
Share on other sites

My guess is that since there's nothing else going on, it's done with a VBI and a bunch of:

 

Move the Players, then WSYNC, Move the Players, then WSYNC, etc...

 

It's only 256 bytes (&some of that is text), so it can't be too hard to disassemble. :)

 

-Bry

Link to comment
Share on other sites

I just verified that it doesn't use a VBI, it syncs to the screen via wysnc out of mainline code.

 

I verified it like this in Atari800Win:

 

Load sintro.com, F8

 

A 6000

lda $14

sta $2c8

jmp $e462

 

c 224 00 60

 

That adds my own vbi to the program changing the border every vbi from the rtclock+2.

 

Running dis6502 on the program gives me some strange output, but it might be because I don't know how to use it. It identified two segments in the program (?)

Link to comment
Share on other sites

must be something like this:

 

DLI pha

txa

pha

tya

pha

ldy #240 ; 240 rasterlines

loop ldx posp0

lda xpos_tab,x ; your positiontab idealy a sinus wave

sta wsync ; sync to raster beam

sta hposp0

ldx xpos_tab,x

sta hposp0+1

...

dey

bne loop

pla

tay

pla

tax

pla

rti

 

and the vbi is increasing the positions in the lookup tables each 50 vbl for pal...

 

VBL inc posp0

inc posp0+1

jmp xitVBL

 

and the sintab is done in turbo basic like this

 

c=0

deg

for i=0 to 359 step 360/256

poke lookup+c,int(sin(i)*128+127)

c=c+1

next i

 

hve

Link to comment
Share on other sites

I just realized why there is two segments!  They load the text into the graphics screen that way at BDD9, thus no code to write to the screen.  Tricky devils.

 

Neat. Why waste bytes on what the OS has already done!

 

-Bry

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...