![]() |
![]() |
#1 |
Posts: n/a
|
Sprite positioning, vertical limit?
Hi! I'm new to this forum, I left a presentation in this thread:
http://eab.abime.net/showthread.php?t=72031 I tried to make a small effect on the Amiga today, and had to limit the displaysize a bit heightwise (at the bottom to be precise) to allow the clipping to work: https://www.facebook.com/photo.php?v...type=2&theater It seemed like the highest possible vstop position was $10c (#299). Since I used a screen height of 256 and display screen from $2c (44) this adds upp (256+44=300) ... (I added the: 02 SV8 Start vertical value high bit 01 EV8 End (stop) vertical value high bit ..too when values exceeded $ff.) Is cutting the display size of the window the way to go if you need to clip sprites at the bottom of the screen? My sprites are 32 pixels high and at the top this works great (which is no wonder since they are of course hidden by the border ranging to 0x2c). Sorry if I'm sounding a bit dizzy, it's 6.21am after all ;-) |
![]() |
#2 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,573
|
There isn't any hard sprite vstop limits (expect register size limit). What happens when you have larger vstop? (which is much more important than seeing what happens when it works as expected
![]() Perhaps you have something in copper list at the end of display that breaks sprites? |
![]() |
![]() |
#3 |
Posts: n/a
|
![]()
Ok, I'm submitting my source :-) In this version the effect has the unwanted glitches :-) I'm sure I missed something since this is right now more an exercise to learn motorola assembler rather than exploring all the possibilities in the Amiga.
Code:
WIDTH=320 HEIGHT=288 BITPLANES=1 DATASIZE=(WIDTH*HEIGHT*BITPLANES)>>3 ; Bits, not Bytes. init: move.l 4.w,a6 ;execbase clr.l d0 ;clear version nr move.l #gfxname,a1 jsr -408(a6) ;oldopenlibrary move.l d0,a1 move.l 38(a1),oldcopper ;original copper ptr 38=first, 50=second jsr -414(a6) ;close library move $dff01c,oldbits ;save old bits move #$7fff,$dff09a ;disable all bits in INTENA move.l #copper,$dff080 ;set copper data address move.w #0,$dff088 ;start copper list moveq #0,d0 lea movement,a1 mainloop: vblank: btst #0,$dff005 beq vblank vblank2 btst #0,$dff005 bne vblank2 move.l #sprite1,$dff120 move.l #sprite2,$dff124 move.l #sprite3,$dff128 move.l #sprite4,$dff12c move.l #sprite5,$dff130 move.l #sprite6,$dff134 move.l #sprite7,$dff138 move.l #sprite8,$dff13c ; set screen move.l #screen,$dff0e0 ; main move d0,d4 move #0,d1 lea sprite1,a2 iloop: sub.w #10,d4 move.w d4,d2 * Check range cmp #0,d2 bge c1 moveq #0,d2 c1: cmp #639,d2 ble c2 move #639,d2 c2: * /Check range move.w (a1,d2.w),d3 ;fetch height value sk0: moveq #0,d5 cmp #$ff,d3 ble sk1 bset #2,d5 sk1: move.b d3,(a2) ;vstart add #2,a2 add #$20,d3 ;height of sprite cmp #$ff,d3 ble sk2 bset #1,d5 and #$ff,d3 sk2: lsl #8,d3 move.b d5,d3 move.w d3,(a2) ;vstop+sprite control word add.b #1,d1 add.w #sprite2-sprite1-2,a2 cmp #8,d1 blo iloop ;/iloop add.w #2,d0 cmp #320*2+20*8,d0 blt skip move #0,d0 skip: btst #6,$bfe001 ;test mouse button bne mainloop exit: move.l oldcopper,$dff080 move.w #0,$dff088 ;start copper list or #$c000,oldbits move oldbits,$dff09a move.l #$deadbeef,d0 rts oldbits: dc.w $00 gfxname: dc.b "graphics.library",0 EVEN oldcopper: dc.l $00000000 SECTION tut,DATA_C copper: dc.w $1fc,0 ; slow fetch mode dc.w $092,$38 ;DMA horisontal start dc.w $094,$d0 ;DMA horisontal stop dc.w $102,$00 ;shift dc.w $104,36 ;sprite & playfield priority 0/36 dc.w $108,0 ;modulo 1,3,5 dc.w $10a,0 ;modulo 2,4,6 dc.w $08e,$2c81 ;display window top left dc.w $090,$2cc1 ;display window bottom right dc.w $100,$1000 ;BPLCON1, ..$1200 ;dc.w $0e0,0,$0e2,0 dc.w $180,$000 dc.w $182,$116 dc.w $01a2,$0abd,$01a4,$0cdf,$01a6,$0568 dc.w $01aa,$0abd,$01ac,$0cdf,$01ae,$0568 dc.w $01b2,$0abd,$01b4,$0cdf,$01b6,$0568 dc.w $01ba,$0abd,$01bc,$0cdf,$01be,$0568 dc.w $7f07,$fffe dc.w $096,0 dc.w $ffff, $fffe dummy: dc.w $0000,$0200 dc.w $0000,$0000 dc.w $0000,$0000 dc.w 0,0 sprite1: dc.w $1a70,$3a00 ;vstart,hstart,vstart+lines,control dc.w $0000,$0000,$1ffc,$0000,$3ffe,$0000,$7fff,$0000 dc.w $7fff,$0000,$7fff,$0000,$7fff,$0000,$7e3f,$0000 dc.w $7e3f,$0000,$7e3f,$0000,$7e3f,$0000,$7e3f,$0000 dc.w $7e3f,$0000,$7e3f,$0000,$7e3f,$0000,$3c1e,$4221 dc.w $4221,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7fff,$7fff,$7fff,$7fff dc.w $7fff,$7fff,$7fff,$7fff,$3ffe,$3ffe,$1ffc,$1ffc dc.w 0,0 sprite2: dc.w $2078,$4000 dc.w $0000,$0000,$7e3f,$0000,$7e3f,$0000,$7e3f,$0000 dc.w $7e3f,$0000,$7e3f,$0000,$7e3f,$0000,$7e3f,$0000 dc.w $7e3f,$0000,$7e3f,$0000,$7e3f,$0000,$7e3f,$0000 dc.w $7e3f,$0000,$7e3f,$0000,$7e3f,$0000,$3c1e,$4221 dc.w $4221,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7fff,$7fff,$7fff,$7fff dc.w $7fff,$7fff,$7fff,$7fff,$3ffe,$3ffe,$1ffc,$1ffc dc.w 0,0 sprite3: dc.w $3080,$5000 dc.w $0000,$0000,$7fff,$0000,$7fff,$0000,$7fff,$0000 dc.w $7fff,$0000,$7fff,$0000,$7fff,$0000,$03e0,$0000 dc.w $03e0,$0000,$03e0,$0000,$03e0,$0000,$03e0,$0000 dc.w $03e0,$0000,$03e0,$0000,$03e0,$0000,$01c0,$0220 dc.w $0220,$03e0,$03e0,$03e0,$03e0,$03e0,$03e0,$03e0 dc.w $03e0,$03e0,$03e0,$03e0,$03e0,$03e0,$03e0,$03e0 dc.w $03e0,$03e0,$03e0,$03e0,$03e0,$03e0,$03e0,$03e0 dc.w $03e0,$03e0,$03e0,$03e0,$03e0,$03e0,$03e0,$03e0 dc.w 0,0 sprite4: dc.w $3088,$5000 dc.w $0000,$0000,$7ffc,$0000,$7ffe,$0000,$7fff,$0000 dc.w $7fff,$0000,$7fff,$0000,$7fff,$0000,$7e3f,$0000 dc.w $7e3f,$0000,$7e3f,$0000,$7e3f,$0000,$7e3f,$0000 dc.w $7e3f,$0000,$7e3f,$0000,$7fff,$0000,$3ffe,$4000 dc.w $4000,$7ffc,$7ffe,$7ffe,$7fff,$7fff,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7fff,$7fff,$7fff,$7fff dc.w $7fff,$7fff,$7fff,$7fff,$7ffe,$7ffe,$7ffc,$7ffc dc.w 0,0 sprite5: dc.w $3090,$5000 dc.w $0000,$0000,$7ffc,$0000,$7ffe,$0000,$7fff,$0000 dc.w $7fff,$0000,$7fff,$0000,$7fff,$0000,$7e3f,$0000 dc.w $7e3f,$0000,$7e3f,$0000,$7e3f,$0000,$7e3f,$0000 dc.w $7e3f,$0000,$7e3f,$0000,$7fff,$0000,$3ffe,$4000 dc.w $4000,$7ffc,$7ffe,$7ffe,$7fff,$7fff,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f dc.w 0,0 sprite6: dc.w $3098,$5000 dc.w $0000,$0000,$7fff,$0000,$7fff,$0000,$7fff,$0000 dc.w $7fff,$0000,$7fff,$0000,$7fff,$0000,$7e00,$0000 dc.w $7e00,$0000,$7e00,$0000,$7e00,$0000,$7e00,$0000 dc.w $7e00,$0000,$7e00,$0000,$7fe0,$0000,$3fc0,$4020 dc.w $4020,$7fe0,$7fe0,$7fe0,$7fe0,$7fe0,$7e00,$7e00 dc.w $7e00,$7e00,$7e00,$7e00,$7e00,$7e00,$7e00,$7e00 dc.w $7e00,$7e00,$7e00,$7e00,$7fff,$7fff,$7fff,$7fff dc.w $7fff,$7fff,$7fff,$7fff,$7fff,$7fff,$7fff,$7fff dc.w 0,0 sprite7: dc.w $60a0,$8000 dc.w $0000,$0000,$1ffc,$0000,$3ffe,$0000,$7fff,$0000 dc.w $7fff,$0000,$7fff,$0000,$7fff,$0000,$7e3f,$0000 dc.w $7e3f,$0000,$7e3f,$0000,$7e3f,$0000,$7e3f,$0000 dc.w $7e3f,$0000,$7e3f,$0000,$7fff,$0000,$3ffe,$4001 dc.w $4001,$7fff,$7fff,$7fff,$7fff,$7fff,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f dc.w 0,0 sprite8: dc.w $60a8,$8000 dc.w $0000,$0000,$7e3f,$0000,$7e3f,$0000,$7e3f,$0000 dc.w $7e3f,$0000,$7e3f,$0000,$7e3f,$0000,$7e3f,$0000 dc.w $7e3f,$0000,$7e3f,$0000,$7e3f,$0000,$7e3f,$0000 dc.w $7e3f,$0000,$7e3f,$0000,$7fff,$0000,$3ffe,$4000 dc.w $4000,$7ffc,$7ffe,$7ffe,$7fff,$7fff,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f dc.w $7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f,$7e3f dc.w 0,0 movement: * Top dc.w $00,$00,$00,$00,$00,$00,$00,$00 dc.w $00,$00,$00,$00,$00,$00,$00,$00 dc.w $00,$00,$00,$00,$00,$00,$00,$00 dc.w $00,$00,$00,$00,$00,$00,$00,$00 dc.w $00,$00,$00,$00,$00,$00,$00,$00 dc.w $00,$00,$00,$00,$00,$00,$00,$00 dc.w $00,$00,$00,$00,$00,$00,$00,$00 dc.w $00,$00,$00,$00,$00,$00,$00,$00 * In dc.w $00,$04,$08,$0b,$0f,$13,$17,$1b dc.w $1e,$22,$26,$2a,$2d,$31,$35,$38 dc.w $3c,$3f,$43,$46,$4a,$4d,$50,$53 dc.w $57,$5a,$5d,$60,$63,$66,$69,$6c dc.w $6e,$71,$74,$76,$79,$7b,$7d,$80 dc.w $82,$84,$86,$88,$8a,$8b,$8d,$8f dc.w $90,$92,$93,$94,$95,$96,$97,$98 dc.w $99,$9a,$9a,$9b,$9b,$9c,$9c,$9c * Still dc.w $9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c dc.w $9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c dc.w $9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c dc.w $9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c dc.w $9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c dc.w $9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c dc.w $9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c dc.w $9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c * Out dc.w $9c,$9c,$9c,$9c,$9d,$9d,$9e,$9e dc.w $9f,$9f,$a0,$a1,$a2,$a3,$a4,$a6 dc.w $a7,$a8,$aa,$ab,$ad,$af,$b0,$b2 dc.w $b4,$b6,$b8,$ba,$bc,$bf,$c1,$c3 dc.w $c6,$c8,$cb,$ce,$d0,$d3,$d6,$d9 dc.w $dc,$de,$e1,$e5,$e8,$eb,$ee,$f1 dc.w $f4,$f8,$fb,$fe,$101,$105,$108,$10c dc.w $10f,$113,$116,$119,$11d,$120,$124,$127 * Bottom dc.w $12b,$12b,$12b,$12b,$12b,$12b,$12b,$12b dc.w $12b,$12b,$12b,$12b,$12b,$12b,$12b,$12b dc.w $12b,$12b,$12b,$12b,$12b,$12b,$12b,$12b dc.w $12b,$12b,$12b,$12b,$12b,$12b,$12b,$12b dc.w $12b,$12b,$12b,$12b,$12b,$12b,$12b,$12b dc.w $12b,$12b,$12b,$12b,$12b,$12b,$12b,$12b dc.w $12b,$12b,$12b,$12b,$12b,$12b,$12b,$12b dc.w $12b,$12b,$12b,$12b,$12b,$12b,$12b,$12b movement_end: screen: blk.b DATASIZE,$ff ;dcb.b END Last edited by thec; 04 January 2014 at 12:44. Reason: Updated source to working version |
![]() |
#4 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,573
|
You are updating sprite pointers at line $12c, which of course won't work very well if sprites are still active
![]() Sprite pointers are not latched like copper or audio pointers, new address will be in use immediately. Update them during vblank, sprite pointers can be 100% safely updated from line 0 to 24 (PAL) or 0 to 19 (NTSC), lines when sprite dma is internally inhibited. |
![]() |
![]() |
#5 |
Posts: n/a
|
I'm not sure what you mean line $12c, but if you're talking about "move.l #sprite1,$dff120" and 8 lines onward I have tried to move them around quite a bit but nothing really seems to help :-/
Thanks for replying tho. |
![]() |
#6 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,573
|
Code:
wframe: btst #0,$dff005 beq wframe cmp.b #$2c,$dff006 bne wframe |
![]() |
![]() |
#7 |
Posts: n/a
|
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
GUI positioning on multimonitor setup | Dr.Venom | request.UAE Wishlist | 2 | 16 July 2012 14:58 |
Looking for vertical shooter | amiades | Looking for a game name ? | 2 | 03 February 2012 11:43 |
Weird horizontal positioning with Hardwired demo | Maren | support.WinUAE | 4 | 10 September 2009 16:11 |
I'm looking for a specific vertical shooter. Help? | blackfiber | Looking for a game name ? | 2 | 30 June 2008 09:48 |
vertical sync flickers | PiCiJi | support.WinUAE | 2 | 25 September 2004 14:34 |
|
|