Jump to content
IGNORED

8-ways scrolling games


Cybergoth

Recommended Posts

Zone Ranger does not scroll... ;)

 

what about Rally Speedway?

Schloss Schreckenstein

Last V8

Action Biker

Red Max

7 cities of Gold

Gauntlet/Dark Chambers

Zeppelin

Spelunkler

Murder on the Zinderneuf

Fort Apocalypse

 

just to name few which came to my mind...

Edited by Heaven/TQA
Link to comment
Share on other sites

Not so sure about the smoothness, but Survivor from Synapse maybe? And Zone Ranger

 

I didn't manage to run Survivor in Atari800Win, but Zone Ranger at least. It sure is a pretty cool scrolling, but I'm assuming it is probably cheating and just using missiles and sprites for the effect?

 

Is there anything with "more" background?

Link to comment
Share on other sites

just to name few which came to my mind...

 

Hey, I just found one that pretty much does what I was looking for, it's called Venus Express :lolblue:

 

Did you ever release the source code? Is that kind of scrolling very expensive? What are its limits? E.g can it be expanded to fullscreen?

Link to comment
Share on other sites

Manuel,

 

Aleksi generates a whole map in memory and on c64 he copies the damned stuff into screen ram when needed while adjusting the soft scroll registers.

 

on atari the hscrol register was treated with an additional lsr, as on atari you are scrolling in colour clocks not high res pixels and thanks to Antic the display list was set with 256 bytes scanlines so each charline has 256 bytes length if i remember it correct.

 

but as soon as I can get hold on the source I can post it here. no problem at all...

Link to comment
Share on other sites

haven't got the source here but maybe i posted it in this thread:

 

Thanks, I'll have a look.

 

no...scrolling is far less time consuming than on c64...

 

Could the Venus engine also scroll a more complex background, made of the whole charset? And what are the color limitations? For example I just stumbled accross the A8 Druid conversion, which both looks pretty ugly and scolls only a small portion of the screen.

Link to comment
Share on other sites

Manuel,

 

aehm... what do you want to do?

 

you can scroll whatever you want... bitmap, charset made screens etc. due to flexibility of the chipset you don't need to move whole screen parts in screen ram around.... simply adjust the screen pointers (LMS commands of the display list). Fullscreen 48x28 screens in antic mode 4 (f.e. 192x224x4) are piece of cake... no need for FLD and other VIC-tricks.

 

http://www.atariarchives.org/dere/chapt06.php

 

scrolling methods are many possible...

 

you can use the "game boy" mode like I have used in Boinxx prototype. http://www.atariage.com/forums/index.php?s...5&hl=boinxx

 

Gameboy style means scrolling 1 screen size while building "behind" the 2nd one and when reaching the end of the window jumping back to the new build one. the map is build in realtime using tiles (charpad from c64 for designing the tiles)

 

complete map in memory means like in East Front or Venus Express. So the level layout is complete depacked in memory

 

Cavelord:

 

http://atari.fandal.cz/detail.php?files_id=1668

 

Schloss Schreckenstein

 

http://atari.fandal.cz/detail.php?files_id=4420

 

 

there are more complex scroll techniques possible http://www.atariage.com/forums/index.php?s...p;hl=mario+bros

 

unfortunatly the source codes seems to be deleted... this one was really clever but very weird to understand. Does anybody have all sources Analmux posted here in the forums??? Together with the pictures how the scrolling works?

Link to comment
Share on other sites

Manuel,

 

aehm... what do you want to do?

 

I just have a vague project idea at the moment and am considering it's doability. I'm not even sure wether I want to target the A8 or the NES for it or wether it is a good idea or not, just checking out what the machines can do. I'm often tempted to try A8 programming and maybe try writing a game for the Abbuc contest.

 

The project idea itself in two words is "Paradroid 2".

 

My three major points of critic regarding Paradroid are

 

- The small scrolling area.

- The generic graphics

- The single ship level

 

The Miggy version (Paradroid 90) actually remedies all three of them, but is missing perfection by the flawed vertical only scrolling.

 

So my vision of Paradoid 2 is an 8-ways scrolling version of Paradroid 90 returning to an 8-Bit machine.

Link to comment
Share on other sites

http://www.atariage.com/forums/index.php?s...p;hl=mario+bros[/url]

 

unfortunatly the source codes seems to be deleted... this one was really clever but very weird to understand. Does anybody have all sources Analmux posted here in the forums??? Together with the pictures how the scrolling works?

 

hmm gameboy style only works in one dir right? no way one could predict the direction otherwise. is it not possible to have the screen wrap around so the problem solves itself nicely ? that would be the best. the analmux thread is completely ruined :(

Link to comment
Share on other sites

hmm gameboy style only works in one dir right? no way one could predict the direction otherwise. is it not possible to have the screen wrap around so the problem solves itself nicely ? that would be the best. the analmux thread is completely ruined :(

 

IMHO gameboy style works in 8way scrolling too, you just need 2x2 screen buffer and have to update more bytes. Here somewhere on Aage is thread with MWP (Minimum Wrap/Warp? Principal) method of scrolling and some demo. It uses only just slightly more than 1 screen of ram. Sidebuffers are there automatically from setting hscroll so ANTIC fetch more bytes than screen width. Verticall buffer is not needed. You use 2 LMS instructions and change it's position inside DLIST to wrap the screen around... for me it's really hard to understand and try to code something around it.

 

The MWP was also discussed in Crownland preview thread, and there is the demo with source too, from gauntman.

Edited by MaPa
Link to comment
Share on other sites

ok. here is the source code MADS compatible...

 

;=======================================================================
; Minimum Warp Principal Demo
;
; Written by Mark Schmelzenbach (aka Gauntman)
; Sep 14,2004
;
; Developed with ATasm, although should work with most other assemblers
; as no specialized macros or non-standard features are used
;
; This is the rudimentary framework for a MWP engine, a more interesting
; demo would uncompress screen data into the borders as necessary.
; MWP allows large maps to take up minimal space, if clever compression
; is used (useful for when RAM is tight, or for 5200 games)
;
; The MWP concept was first described by AnalMux (the coder formerly
; known as ANALogue MUltipleXer) on the Atari Age prgorammig forums 
; (www.atariage.com);  Perform a search there for more theory...
;=======================================================================

; Some useful equates
SETVBV	= $E45C
XITVBV  = $E462
STICK0	= $278

;=======================================================================
	org $4000
begin
	lda #<dlist	; point to our dlist
	sta $230
	lda #>dlist
	sta $231

   ; dummy screen filler for demo
	lda #<screen
	sta $c0
	lda #>screen
	sta $c1
	ldx #33
g0	  ldy #24
	txa
g1	  sta ($c0),y
	dey
	bpl g1
	lda $c0
	clc
	adc #24
	sta $c0
	lda $c1
	adc #0
	sta $c1
	inx
	cpx #54
	bne g0

   ; note that the last line and line 0 MUST be duplicates
   ; any data written to the last line must also be represented in
   ; sline0!
	lda #53
	ldx #23
g2	  sta sline0,x
	dex
	bpl g2

	ldy #<vblank; set vertical blank
ldx #>vblank
lda #$07; deferred
jsr setvbv

   ; loop forever
done	jmp done

;==================================================================
; VBLANK - read joystick and perform scrolling
;==================================================================
vblank
	lda 20				 ; just a byte on screen
	lsr					; changing to add interest...
	lsr
	sta screen+4

   ; read stick0 and scroll...
	lda stick0
and #$02	;down bit?
bne chkup

lda finey
bne okdn
lda #8
sta finey
lda #0
jsr mwp
okdn	dec finey
chkup	lda stick0
and #$01	; up bit?
bne chkrt

lda finey
cmp #7
bne okup
lda #$ff
sta finey
lda #1
jsr mwp
okup	inc finey
chkrt	lda stick0
and #$08	;right bit?
bne chklf

lda finex
cmp #7
bne okrt
lda #$ff
sta finex
lda #3
jsr mwp
okrt	inc finex
chklf	lda stick0
and #$04	;left bit
bne vdone

	lda finex
bne oklf
lda #8
sta finex
lda #2
jsr mwp
oklf	dec finex

vdone
	lda finex
	sta $d404			  ; update fine-scroll registers
	lda finey
	sta $d405
	jmp xitvbv

;==================================================================
; MWP - routine to perform MWP scroll, updates display list
;	   appropriately.  This routine could be made tighter still
;	   mostly left unoptimized to aid readability
;
;	   Parameters: A direction 0 - down; 1 - up; 2 - right; 3 - left
;	   Clobbers A,X,Y
;==================================================================
mwp
	ldy mwpy
	sta tdir

	cmp #2
	bcc mwp_erase ; up/down
	beq mwp_left

; Note: When HSCROLL bit is set in the DLIST, ANTIC will grab
; extra data on each character line;  This means that on a regular
; width screen there are 24 characters per row instead of 20!
; This is good, as it provides a hidden buffer for us to write
; screen data into without having to resort to masks...
mwp_right
	lda mwpx
	bne mwp_r1
	lda #24
	sta mwpx
	lda #0
	sta tdir
	beq mwp_erase
mwp_r1  dec mwpx
	lda #0
	jmp mwp_lms

mwp_left
	lda mwpx
	cmp #24
	beq mwp_l1
	inc mwpx
	jmp mwp_lms
mwp_l1  lda #0
	sta mwpx
	lda #1
	sta tdir

mwp_erase
	lda mwp_idx,y
	tax
	lda #$36		  ; erase old LMS
	sta lms1+3,x
	sta lms1+4,x
	cpx #18
	bne mwp_e1
	lda #$16		  ; a bit annoying, but last line of scroll map
					  ; should not have vscroll set; this prevents
					  ; 'popping'
mwp_e1  sta lms1+5,x

	lda tdir
	beq mwp_down
	cmp #1
	bne mwp_lms

mwp_up
	iny
	cpy #21
	bne mwp_lms
	ldy #0
	beq mwp_lms
mwp_down
	dey
	bpl mwp_lms
	ldy #20

mwp_lms sty mwpy

				   ; update lower LMS
	lda mwp_idx,y  ; get index into DLIST
	tax
	lda mwp_botlo,y
	clc
	adc mwpx	   ; this will never overflow worst-case: $18+$30
	sta lms1+4,x
	lda #>sline0
	adc #0
	sta lms1+5,x

	lda mwp_toplo+1,y  ; now, set top lms
	clc				; carry cleared above, no need to clc here
	adc mwpx
	sta lms1+1
	lda mwp_tophi+1,y
	adc #0
	sta lms1+2

	lda #64+$36		; actual instruction for lower LMS
	cpx #18			; see note above
	bne mwp_lms2
	lda #64+$16
mwp_lms2
	sta lms1+3,x
	rts
;==================================================================
; Look-up tables for MWP
mwp_toplo
; .rept 22
 ; .byte <[sline0+[*-mwp_toplo]*24]
; .endr
   .byte $00,$18,$30,$48,$60,$78,$90,$A8,$C0,$D8,$F0
   .byte $08,$20,$38,$50,$68,$80,$98,$B0,$C8,$E0,$00;$F8

mwp_tophi
; .rept 22
 ; .byte >[sline0+[*-mwp_tophi]*24]
; .endr
   .byte $44,$44,$44,$44,$44,$44,$44,$44,$44,$44,$44
   .byte $45,$45,$45,$45,$45,$45,$45,$45,$45,$45,$44

mwp_idx
   .byte 0,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0

; silly table, probably can be removed with a bit of thought...
mwp_botlo
   .byte $30,$00,$00,$00,$00,$00
   .byte $00,$00,$00,$00,$00,$00
   .byte $00,$00,$00,$00,$00,$00,$00,$00,$18
;==================================================================
; Misc data for MWP demo
tdir	.byte 0
mwpy	.byte 0 ; between 0-21
mwpx	.byte 0 ; between 0-23
finex   .byte 0
finey   .byte 0

dlist   .byte 112,112,112,64+2,<top,>top,2,0,2,0
lms1	.byte 64+$36,<screen,>screen
	.byte 64+$36,<(screen+24),>screen
	.byte $36,$36,$36,$36,$36,$36,$36,$36,$36
	.byte $36,$36,$36,$36,$36,$36,$36,$36,$16
	.byte 0,64+2,<(top+120),>(top+120),112
	.byte 65,<dlist,>dlist

top	dta '	  Minimum-Warp Principal Demo	   '
   dta '										'
   dta '										'
   dta '...and a line at the bottom			 '
;==================================================================
   org $4400
sline0 .ds 24
screen .ds 21*20

 

so...maybe I am stupid...but when scrolling to the right...the writing of the collum (adresses) always change? or is here a trick I do not get yet?

Link to comment
Share on other sites

so...maybe I am stupid...but when scrolling to the right...the writing of the collum (adresses) always change? or is here a trick I do not get yet?

 

I don't undersdtand what you mean, but when scrolling in any direction, you "just" change the two LMS's and eventually change position of one of those LMS inside DLIST. That's all.. of course in real use you need to fill buffers with new data etc.

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...
  • Recently Browsing   0 members

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