Jump to content
IGNORED

Laser Demo dissasembly


Estece
 Share

Recommended Posts

  • 1 month later...

Every sprite use from 4 to 9 chars. I draw one sprite in one big loop:

 

In 128K version:

lda background_char,y
and mask,y
ora shape,y
sta sprite_char,y    ;4 color sprites

Shape takes 4chars*8bytes*16phases+ 3shifts*6chars*8bytes*16phases=512+3*768=2816bytes

Mask takes the same 2816bytes

5 enemy shapes + explosion shape (only 3 phases) (2*5*2816+2*528=29216)

 

------

 

Version 64K use forbidden instruction "LAX":

lax shape,y
and background_char,y
ora oratab[1-3],x    ;3 different tabs , I can change one color in sprite(2 colors) or print normal(3 colors) sprite
sta sprite_char,y

Only 3 shapes + explosion shape (3 phases) (3*2816+528=8976)

3 oraTab 768bytes

  • Like 6
Link to comment
Share on other sites

Dziękuje Shanti77 ;)

Can You describe it little more ?

How a one frame looks like in the code and what display list and interrupts bosconian use ?

Do You use double buffer for screen display in mode 4?

Great that You use powerful instructions on 65 XE! That is the only way to use that hardware to the maximum.

Mr.Fish and others ,please don't derail this topic.This forum is like junkyard with trash here and there that is not on topic and nobody cares to clean that up.

I like good work that Shanti77 do and want a detailed and technical info on software sprites in practical and good software on real hardware :)

Link to comment
Share on other sites

Hi!

 

Version 64K use forbidden instruction "LAX":

lax shape,y
and background_char,y
ora oratab[1-3],x    ;3 different tabs , I can change one color in sprite(2 colors) or print normal(3 colors) sprite
sta sprite_char,y
Only 3 shapes + explosion shape (3 phases) (3*2816+528=8976)

3 oraTab 768bytes

 

Clever.

 

So, only limitation is you can use only 3 colors in the sprites, but changing "oratab" table you can select any three colors.

 

To select the shift, do you modify the "shape" pointer in place, or have different loops?

Link to comment
Share on other sites

@dmsc 4 procedures:

DX==0,DY=0
chars:
13
24

dx>0,DY=0
135
246

DX=0,DY>0 (2 loops)
14
25
36

DX>0,DY>0 (2 loops)
147
258
369

@Estece

I use double buffer, clear frame, draw all objects (starts,rocket,bases,mines,metors,explosions,etc), at last I draw sprites . After I draw frame I check collisions. Ship shoots are draw 2x for frame (1/50 or 1/60).

 

One DLI interrupt run POKEY interrupt (64Khz), last intterupt switch off POKEY interrupt, I change vector and AUDF value every IRQ.

DLIST is very simple:

Blank_lines+DLI
$04+LMS+VSCROL+HSCROL,SCREEN_ADR
$04+VSCROL+HSCROL
.
.
.
$04
jvb dlist
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

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