English Amiga Board


Go Back   English Amiga Board > Coders > Coders. Contest

 
 
Thread Tools
Old 12 January 2019, 02:38   #581
dlfrsilver
CaptainM68K-SPS France
dlfrsilver's Avatar
 
Join Date: Dec 2004
Location: Melun nearby Paris/France
Age: 41
Posts: 7,912
Send a message via MSN to dlfrsilver
Superb !!!
dlfrsilver is offline  
Old 12 January 2019, 05:18   #582
DJ METUNE
Registered User

 
Join Date: Jan 2019
Location: Sweden
Posts: 6
Smile Thank you!

Many thanks to you all for the positive responses regarding this music conversion!! :-)

I've been unknown in the Amiga scene with my mods until just relatively recent with the release of the Amiga game Golden Wing by Coppersky, and the Axel F, (thanx Galahad/FLT for your comment!!), mod reconstruction experiment I did some years earlier.

You'll find my uploads here, it's not particularly much yet though .

https://modarchive.org/index.php?req...es&query=89011

Music creation was the biggest reason for me I felt to buy my first Amiga, (A500), followed in later years by an A1200 equipped with Blizzard 1260, and DigiBooster Pro as my then most exciting software. Though Protracker 2.3D is my all time favourite.

Within most of my Amiga-only decades I've been like a lone wolf in the hidden, with strong intentions to release mods for the Amiga scene. But my perfectionist inside me never really let me feel satisfied with anything I did. And mostly I gave those hundreds of tunes I made no beginnings and/or ends.

Though now after the highly positive responses I've got for my Protracker mods online, I finally realised that I've had set the requirements slightly too high. Sickly high perhaps.

But my basic reasoning is that Protracker has many limitations. Some things is just not possible, or not ment to be possible to do. Just as it is with the Amiga. But on the other hand, that's what makes it so addictive I think, to find ways to go beyond.

Only the sky is the limit. . . ...and the amount of chipmem!

/ DJ METUNE
DJ METUNE is offline  
Old 12 January 2019, 05:22   #583
DJ METUNE
Registered User

 
Join Date: Jan 2019
Location: Sweden
Posts: 6
Quote:
Originally Posted by saimon69 View Post
Am curious on how you generate your samples
It depends on what I'm supposed to accomplish. If I want to make new stuff in Protracker, I usually nowadays use modern music programs to actually compose the music first. Renoise is my best friend when it comes to this. It gives me considerably freer hands than if I were to start directly in PT. It gives me more control of the way things sound together in realtime and helps to get through the creation in a more indestructible way. Brings also the abilities to use eg VSTi synths for the instrument sources, plus effects. But keeping in mind that it should be later optimized for fairly short samples for the reconstruction in Protracker.

For arcade music conversions, this type of preparation is already done in the original. The only thing to do is to analyse what and how notes play simultaneously as other notes, and with what intruments. Try to find the most optimal sample in a melody for instance. So that It's possible to get the best and most out of it in the final reconstruction in Protracker. Making sure to resample all instrumets to the most useful sample rates, depending on what notes the instruments need to play. As arcade music often use 8 channels or even more at once, I sample the mix of the needed parts, such as chords. But always take the time to cut everything to the most perfect memory saving and optimal sounding loops, to rather allow them to play in high sample rates, than having them as unnecessary long shots in lower rates.

Also maximise the audio with a hard limiter, (while having them as a 32bit sample, before saving them as 8 bit), to not let the instruments fade in or out in in the actual samples, but instead let them fade as intended later with Protracker commands. This method gives in return much less white noise and makes the samples more easily perfectly looped.
DJ METUNE is offline  
Old 12 January 2019, 09:55   #584
jotd
This cat is no more
jotd's Avatar
 
Join Date: Dec 2004
Location: FRANCE
Age: 47
Posts: 2,793
yeah, C could have helped you to initialize stuff and all, but for the mainloop you may have needed asm. The A1200 can probably take the extra overhead in memory and CPU C needs. The A500 could not.

If you have complex stuff to do, you can always create some C code & interface it with asm or generate asm with it...

great work!
jotd is offline  
Old 12 January 2019, 15:34   #585
mcgeezer
Registered User

 
Join Date: Oct 2017
Location: Sunderland, England
Posts: 787
Quote:
Originally Posted by DJ METUNE View Post
Many thanks to you all for the positive responses regarding this music conversion!! :-)

I've been unknown in the Amiga scene with my mods until just relatively recent with the release of the Amiga game Golden Wing by Coppersky, and the Axel F, (thanx Galahad/FLT for your comment!!), mod reconstruction experiment I did some years earlier.

You'll find my uploads here, it's not particularly much yet though .

https://modarchive.org/index.php?req...es&query=89011

Music creation was the biggest reason for me I felt to buy my first Amiga, (A500), followed in later years by an A1200 equipped with Blizzard 1260, and DigiBooster Pro as my then most exciting software. Though Protracker 2.3D is my all time favourite.

Within most of my Amiga-only decades I've been like a lone wolf in the hidden, with strong intentions to release mods for the Amiga scene. But my perfectionist inside me never really let me feel satisfied with anything I did. And mostly I gave those hundreds of tunes I made no beginnings and/or ends.

Though now after the highly positive responses I've got for my Protracker mods online, I finally realised that I've had set the requirements slightly too high. Sickly high perhaps.

But my basic reasoning is that Protracker has many limitations. Some things is just not possible, or not ment to be possible to do. Just as it is with the Amiga. But on the other hand, that's what makes it so addictive I think, to find ways to go beyond.

Only the sky is the limit. . . ...and the amount of chipmem!

/ DJ METUNE

Believe me - you're known now, you wont be short of Amiga prod work.

Your songs are of the highest quality and much above the standard required!

And whatever happens - I WILL FIND YOU THE CHIPMEM!

Geezer
mcgeezer is offline  
Old 12 January 2019, 15:56   #586
Zoltar3.1
Registered User

Zoltar3.1's Avatar
 
Join Date: Feb 2017
Location: Caladan
Posts: 19
Very Good! Congratulations!
Zoltar3.1 is offline  
Old 12 January 2019, 17:33   #587
Steril707
OCS rocks!

 
Join Date: Sep 2016
Location: Amiga Island
Posts: 567
I hate coding all the "infrastructure" crap like title screens, game over, lives count, and especially the hiscore list in asm.

Wish I had done this in C back then.
Steril707 is offline  
Old 12 January 2019, 23:47   #588
mcgeezer
Registered User

 
Join Date: Oct 2017
Location: Sunderland, England
Posts: 787
Here we are... an actual game!

I've worked on the loss of lives and transition routines so that the Rygar is now an actual game that can be played!

Lots of bugs still but that's only natural at this stage... I suspect February will all just be about bug hunting and enemy/round configuration.... might not get all levels done by the compo closing date I'm afraid so it may go in as a playable demo.

Enjoy...
Geezer

[ Show youtube player ]

http://109.228.4.199/rygargame1.mp4
mcgeezer is offline  
Old 12 January 2019, 23:52   #589
malko
Registered User

malko's Avatar
 
Join Date: Oct 2017
Location: CH
Posts: 1,078
Really nice done !!!
Looks as hard as Bomb Jack
malko is offline  
Old 13 January 2019, 01:02   #590
Amigajay
醉拳
Amigajay's Avatar
 
Join Date: Jan 2010
Location: >
Posts: 2,026
Congrats on getting to this stage! Not sure about the message on the title screen, i think you are above all that, but your work rate is unchallenged nonetheless!
Amigajay is offline  
Old 13 January 2019, 02:33   #591
DamienD
Global Moderator

DamienD's Avatar
 
Join Date: Aug 2005
Location: London / Sydney
Age: 42
Posts: 13,245
Quote:
Originally Posted by Amigajay View Post
Not sure about the message on the title screen, i think you are above all that
I agree Graeme, loads and loads of people will play your cool port

Anyone who doesn't know who "Amiten" is, or the shocking recent events, will look him up and might end up doing the opposite of what you've written; if they're stupid enough.

Forget about him, it's not worth giving him free publicity; especially in a class game like yours.
DamienD is offline  
Old 13 January 2019, 09:38   #592
mcgeezer
Registered User

 
Join Date: Oct 2017
Location: Sunderland, England
Posts: 787
Sorry about that, too much ale.
mcgeezer is offline  
Old 13 January 2019, 11:11   #593
Steril707
OCS rocks!

 
Join Date: Sep 2016
Location: Amiga Island
Posts: 567
Yeah, let's not give that dude free publicity.
Steril707 is offline  
Old 13 January 2019, 11:41   #594
Hewitson
Registered User
Hewitson's Avatar
 
Join Date: Feb 2007
Location: Melbourne, Australia
Age: 36
Posts: 2,735
Yeah, I agree that this game is far above having any connection to do with him. Having said that, I did laugh when I saw the message.
Hewitson is offline  
Old 13 January 2019, 11:57   #595
mcgeezer
Registered User

 
Join Date: Oct 2017
Location: Sunderland, England
Posts: 787
Quote:
Originally Posted by Hewitson View Post
Yeah, I agree that this game is far above having any connection to do with him. Having said that, I did laugh when I saw the message.
It's what happens when I drink too much Peroni... I've done worse on a Saturday night.

A couple of years ago my best mate wound me up so much about winning the Fantasy Football League that on the Saturday night before the final games of the season I hacked his FFL account and changed his entire team.

I then did a Hitler/Downfall parody video to go with it for extra humiliation in our Whatsapp group.

He didn't speak to me for weeks.
mcgeezer is offline  
Old 13 January 2019, 11:59   #596
wodan
Registered User

 
Join Date: Feb 2018
Location: Kidderminster
Posts: 4
It looks really good in not that much time (I'm assuming you didn't do this full time), makes you wonder how much time they took for the commercial games back then.
wodan is offline  
Old 13 January 2019, 12:07   #597
malko
Registered User

malko's Avatar
 
Join Date: Oct 2017
Location: CH
Posts: 1,078
But, but.... it's an arcade conversion... so the text is certainly present on the original

More seriously :
Quote:
Originally Posted by Hewitson View Post
Yeah, I agree that this game is far above having any connection to do with him. Having said that, I did laugh when I saw the message.
+1
malko is offline  
Old 13 January 2019, 14:23   #598
mcgeezer
Registered User

 
Join Date: Oct 2017
Location: Sunderland, England
Posts: 787
I just had to upload this... simply awesome by DJ METUNE.

The little clicks are to do with my system not being fast enough to record and emulate the Amiga.

[ Show youtube player ]

http://109.228.4.199/rygarmusic.mp4

Geezer
mcgeezer is offline  
Old 13 January 2019, 15:21   #599
DamienD
Global Moderator

DamienD's Avatar
 
Join Date: Aug 2005
Location: London / Sydney
Age: 42
Posts: 13,245
Looks awesome Graeme

One small thing which I'm sure you're aware of; in the arcade version when you jump on top of someone Rygar then jumps / flips; it's not just a normal jump.
DamienD is offline  
Old 13 January 2019, 15:30   #600
mcgeezer
Registered User

 
Join Date: Oct 2017
Location: Sunderland, England
Posts: 787
Quote:
Originally Posted by DamienD View Post
Looks awesome Graeme

One small thing which I'm sure you're aware of; in the arcade version when you jump on top of someone Rygar then jumps / flips; it's not just a normal jump.
Yep, aware of it... the logic of Rygar's animation is a bit complex now but will do it.

Code:
; Rygar Sprite Animation Definitions
RYGAR_STAND_RIGHT:	equ	0
RYGAR_STAND_LEFT:	equ	1
RYGAR_RUNNING_RIGHT:	equ	2
RYGAR_RUNNING_LEFT:	equ	3
RYGAR_JUMP_RIGHT:	equ	4
RYGAR_JUMP_LEFT:	equ	5
RYGAR_CROUCH_RIGHT:	equ	6
RYGAR_CROUCH_LEFT:	equ	7
RYGAR_ATTACK_RIGHT:	equ	8
RYGAR_ATTACK_LEFT:	equ	9
RYGAR_CROUCH_ATTACK_RIGHT:	equ	10
RYGAR_CROUCH_ATTACK_LEFT:	equ	11
RYGAR_JUMP_ATTACK_RIGHT:	equ	12
RYGAR_JUMP_ATTACK_LEFT:	equ	13
RYGAR_CAROUSEL:		equ	14
RYGAR_FACING:		equ	15
RYGAR_DEATH:		equ	16
RYGAR_ROLLFALL_LEFT:	equ	17
RYGAR_ROLLFALL_RIGHT:	equ	18

; Sprite States
SPRITE_INSTATE_DIRECTION_LEFT:	equ	1
SPRITE_INSTATE_DIRECTION_RIGHT:	equ	0
SPRITE_INSTATE_ONPLATFORM:	equ	8
SPRITE_INSTATE_JUMPING:		equ	9
SPRITE_INSTATE_FALLING:		equ	10

RYGAR_LEFT_BARRIER:		equ	32
RYGAR_MOVE_SPEED:		equ	2
RYGAR_LEAP_DELAY:		equ	1			; Delay scrolling frame for when Rygar leaps



; Private Variables
RYGAR_LAST_DIRECTION:		equ	12		; Last direction travelled

; Test the jump button
RYGAR_JUMP_CHECK:
		tst.w	RYGAR_LEAPING_STATE
		bmi.s	.leap_done
		subq.w	#1,RYGAR_LEAPING_STATE
.leap_done:	tst.w	RYGAR_JUMP_STATE		; Already jumping?
		bne	.exit				; Yes
		tst.w	BTN2_STATE
		bne.s	.set_jump
		bra	.exit
; Fire button pressed
.set_jump:	tst.w	RYGAR_JUMP_STATE		; Is it jumping already		
		bne	.exit				; No
		move.w	#-1,RYGAR_JUMP_STATE		; Only Rygar landing will unset this.	
		move.w	RYGAR_YPOS,RYGAR_LAST_JUMP_POS
		clr.w	RYGAR_SINE_INDEX	; Reset Jump Sine pointer.
		move.w	#RYGAR_LEAP_DELAY,RYGAR_LEAPING_STATE
		bsr	CHECK_JUMP_STONE

; Check here to see if we need to push a stone.
.exit:		rts

; Test the weapon button
RYGAR_DISKARM_CHECK:
		tst.w	RYGAR_DISKARM_STATE		; Already attacking
		bne	.exit				; Yes
		tst.w	BTN1_STATE
		bne.s	.set_diskarm
		bra	.exit
; Weapon button pressed
.set_diskarm:	move.w	RYGAR_LAST_DIRECTION(a2),d3
		move.b	d3,RYGAR_MOVE_DIRECTION
		tst.w	RYGAR_DISKARM_STATE		; Is it attaking already		
		bne	.exit				; No
		move.w	#-1,RYGAR_DISKARM_STATE	; Only hittin an enemy will reset this or it finishes the sequence.	
		clr.w	DISKARM_CURRENT_FRAME	; Reset Disk armour attack pointer.
.exit:		rts


HDL_RYGAR:	
		SPRITE_INITIATE

;--------------------------------------------------------
.constructor:	; Variables that will only be ran once while sprite is active.

		move.w	#SPRITE_INSTATE_ONPLATFORM,THIS_SPRITE_STATUS(a2)

		;move.w	#$770,FIRECOLOUR
		;bsr	FIREWAIT

.active:	
		move.w	THIS_SPRITE_STATUS(a2),RYGAR_DEBUG

		cmp.w	#98,RYGAR_SANCTUARY_COMMAND		; 100 means that Rygar is facing 	
		beq.s	.enemy_disable
		cmp.w	#99,RYGAR_SANCTUARY_COMMAND		; 100 means that Rygar is facing 	
		beq.s	.enemy_enable		

		tst.w	RYGAR_SANCTUARY_COMMAND			; if not 0 then Rygar is somewhere in the sanctuary
		beq	.no_sanctuary

		cmp.w	#100,RYGAR_SANCTUARY_COMMAND		; 100 means that Rygar is facing 	
		beq.s	.is_facing
		cmp.w	#101,RYGAR_SANCTUARY_COMMAND
		bge.s	.is_facing_and_scroll
; anything else means Rygar is in the sanctuary.


.in_carousel:	move.w	RYGAR_SANCTUARY_COMMAND,d1
		lsr.w	#2,d1
		
		tst.w	SANCTUARY_STAGE
		bne.s	.right_carousel

.left_carousel:	move.w	d1,LEFT_CAROUSEL_POSITION
		bra.s	.carousel

.right_carousel:
		move.w	d1,RIGHT_CAROUSEL_POSITION
		bra.s	.carousel
		nop

.carousel:	move.w	RYGAR_XPOS,d1
		add.w	RYGAR_SANCTUARY_COMMAND,d1		; This will be a positive number to offset Rygar to.
		move.w	d1,2(a1)
		moveq	#RYGAR_CAROUSEL,d1
		bra	ANIMATE

.enemy_enable:	clr.w	DISABLE_ENEMIES
		bra	.exit
.enemy_disable:	move.w	#-1,DISABLE_ENEMIES
		bra	.exit


.is_facing:	moveq	#RYGAR_FACING,d1
		bra	ANIMATE

.is_facing_and_scroll:
		move.w	RYGAR_SANCTUARY_COMMAND,d3
		move.w	RYGAR_XPOS,d1
		sub.w	#101,d3
		sub.w	d3,d1
		move.w	d1,2(a1)
		moveq	#RYGAR_FACING,d1
		bra	ANIMATE

.anim_death_sequence:

		nop
		nop
		swap	d0
		swap	d0
		nop
		nop
		subq.w	#1,2(a1)
		lea	RYGAR_DEATH_SINE,a0
		move.w	RYGAR_SINE_INDEX,d2
		move.w	(a0,d2*2),d2			; Get the value to adjust by.
		cmp.w	#$8000,d2
		beq.s	.death1
		add.w	d2,4(a1)
		addq.w	#1,RYGAR_SINE_INDEX

.death1:	moveq	#RYGAR_DEATH,d1
		bsr	ANIMATE
		tst.w	d6
		bpl	.exit
	;move.w	#$ff0,FIRECOLOUR
	;bsr	FIREWAIT
		move.w	#-1,RYGAR_LIFE_LOST
		subq.w	#1,RYGAR_LIVES
		;move.w	MAP_PIXEL_POSX,LAST_MAP_PIXEL_POSX
		move.w	MAP_PIXEL_POSX,d5
		addq.w	#8,d5
		and.w	#$fff0,d5
		move.w	d5,LAST_MAP_PIXEL_POSX
		bra	.exit

.no_sanctuary:
		bsr	RYGAR_DISKARM_CHECK
		bsr	RYGAR_JUMP_CHECK
		move.w	#DISKARM_STANDPOS,DISKARM_VERT_OFFSET		; Disk Armour Position when standing or running.

		move.w	RYGAR_FALL_STATE,RYGAR_FALLPREV_STATE			; Save previous fall state for collision

		cmp.w	#RYGAR_DEATH,THIS_SPRITE_STATUS(a2)
		beq	.anim_death_sequence

		tst.w	RYGAR_JUMP_STATE			; Is Jump flag set?
		beq	.apply_gravity				; runing or standing
; Collisions need to happen on decent. So we check the blocks under Rygar.
		cmp.w	#SPRITE_INSTATE_ONPLATFORM,THIS_SPRITE_STATUS(a2)
		bne.s	.jump_or_fall
		move.w	#SPRITE_INSTATE_JUMPING,THIS_SPRITE_STATUS(a2)	; Set to jumping.

.jump_or_fall:	cmp.w	#SPRITE_INSTATE_JUMPING,THIS_SPRITE_STATUS(a2)
		beq.s	.jump					; Rygar is lifting
		cmp.w	#SPRITE_INSTATE_FALLING,THIS_SPRITE_STATUS(a2)
		beq.s	.fall					; Rygar is falling
		bra	.apply_gravity				; Neither, apply normal Earth gravity

; Jump in flight
.jump:		clr.w	DISKARM_DISABLE
		clr.w	RYGAR_BLOCKED_STATE		; Default to allow scrolling
		lea	RYGAR_JUMP_SINE,a3
		moveq	#0,d2
		move.w	RYGAR_SINE_INDEX,d2
		
		move.w	(a3,d2*2),d3
		cmp.w	#$8000,d3				; Has the jump completed?
		beq.s	.jump_done				; Yes
		bsr	CHECK_TILE				; No check tile for left/right obstacles
		add.w	d3,SPRITE_PLOT_YPOS(a1)				; Modify Y value for jump
		addq.w	#1,RYGAR_SINE_INDEX		
		clr.w	RYGAR_CROUCH_STATE
		bra	.run_or_stand
.jump_done:		move.w	#SPRITE_INSTATE_FALLING,THIS_SPRITE_STATUS(a2)		; Set Rygar falling.
		clr.w	RYGAR_SINE_INDEX
		bra	.run_or_stand

; Fall in flight
.fall:		
		move.w	#-1,RYGAR_FALL_STATE			; Set rygar falling
		lea	RYGAR_FALL_SINE,a3
		moveq	#0,d2
		move.w	RYGAR_SINE_INDEX,d2
		
		move.w	(a3,d2*2),d3
		addq.w	#1,RYGAR_SINE_INDEX
		nop
		nop
		cmp.w	#184-32,SPRITE_PLOT_YPOS(a1)			; Has fall killed Rygar?
		bge.s	.fall_done			; Yes
		cmp.w	#$8000,d3			; Has
		beq.s	.fall_done
		bsr	CHECK_TILE
		tst.w	d7
		bmi.s	.keep_falling			; Platform not found... keep falling.
		and.w	#$fff0,4(a1)			; Snap to upper 16 pixels on Y axis for sprite
		;addq.w	#RYGAR_Y_TILEOFFSET,4(a1)
		add.w	d5,SPRITE_PLOT_YPOS(a1)
		bra.s	.fall_done
.keep_falling:	add.w	d3,4(a1)			; Modify Y value
		clr.w	RYGAR_CROUCH_STATE
		bra	.run_or_stand
.fall_done:		move.w	#SPRITE_INSTATE_ONPLATFORM,THIS_SPRITE_STATUS(a2)		; Set Rygar on platform.
		clr.w	RYGAR_SINE_INDEX
		clr.w	RYGAR_JUMP_STATE
		clr.w	RYGAR_FALL_STATE
		clr.w	RYGAR_ROLLFALL_STATE
		bra.s	.run_or_stand

; Executed when Rygar is not jumping or falling.
.apply_gravity:	
		bsr	CHECK_TILE
		tst.w	d7			; On a platform yet?
		beq.s	.landed			; Yes
		addq.w	#6,SPRITE_PLOT_YPOS(a1)		; No, Keep falling
		move.w	#-1,RYGAR_FALL_STATE
		cmp.w	#184-32,4(a1)		; Hit the depths of Hell though?
		bge.s	.dead			; Yes, he's dead
		cmp.w	#SPRITE_INSTATE_DIRECTION_LEFT,RYGAR_LAST_DIRECTION(a2)
		beq	.is_falling_left
		bra	.is_falling_right

		bra.s	.run_or_stand		; No, so fall animation


.dead:		;COL0_RED
		move.w	#184-32,4(a1)
		move.w	#-1,RYGAR_LIFE_LOST
		subq.w	#1,RYGAR_LIVES

		move.w	MAP_PIXEL_POSX,d5
		;and.w	#$fff0,d5
		addq.w	#8,d5
		and.w	#$fff0,d5
		move.w	d5,LAST_MAP_PIXEL_POSX
		;bra.s	.run_or_stand
		bra	.exit

.landed:	and.w	#$fff0,4(a1)
		;addq.w	#RYGAR_Y_TILEOFFSET,4(a1)
		add.w	d5,4(a1)
		
.run_or_stand:	
		bsr	CHECK_TILE
		tst.w	SCROLL_DIRECTION_X
		beq.s	.is_standing
		bmi	.is_running_left
		bra	.is_running_right

.is_standing:					; check last direction previous value here.
		cmp.w	#SPRITE_INSTATE_DIRECTION_LEFT,RYGAR_LAST_DIRECTION(a2)
		beq.s	.is_standing_left
		bra.s	.is_standing_right

.is_standing_left:
		moveq	#RYGAR_ATTACK_LEFT,d1
		tst.w	RYGAR_DISKARM_STATE				; Scrolling pauses when weapon is discharges when running
		bmi.s	.attack_left		
		moveq	#RYGAR_STAND_LEFT,d1
.attack_left:
		tst.w	RYGAR_CROUCH_STATE				; Is Rygar Crouching?
		beq.s	.no_crouch_left

		moveq	#RYGAR_CROUCH_ATTACK_LEFT,d1
		tst.w	RYGAR_DISKARM_STATE				; Scrolling pauses when weapon is discharges when running
		bmi.s	.crouch_attack_left		
		moveq	#RYGAR_CROUCH_LEFT,d1
.crouch_attack_left:
		move.w	#DISKARM_CROUCHPOS,DISKARM_VERT_OFFSET		; Disk Armour Position when crouching
		bra	.animate

.no_crouch_left:
		tst.w	RYGAR_JUMP_STATE
		beq	.animate
.is_falling_left:
		moveq	#RYGAR_JUMP_ATTACK_LEFT,d1
		;tst.w	RYGAR_ROLLFALL
		;beq.s	.no_roll_left
		;moveq	#RYGAR_ROLLFALL_LEFT,d1
		;bsr	FIREWAIT

.no_roll_left:	move.w	#DISKARM_JUMPPOS,DISKARM_VERT_OFFSET
		tst.w	RYGAR_DISKARM_STATE				; Scrolling pauses when weapon is discharges when running
		bmi	.jump_attack_left1	
		moveq	#RYGAR_JUMP_LEFT,d1
.jump_attack_left1:
		bra	.animate

.is_standing_right:
		moveq	#RYGAR_ATTACK_RIGHT,d1
		tst.w	RYGAR_DISKARM_STATE				; Scrolling pauses when weapon is discharges when running
		bmi	.attack_right	
		moveq	#RYGAR_STAND_RIGHT,d1
.attack_right:
		tst.w	RYGAR_CROUCH_STATE
		beq.s	.no_crouch_right
		moveq	#RYGAR_CROUCH_ATTACK_RIGHT,d1
		tst.w	RYGAR_DISKARM_STATE				; Scrolling pauses when weapon is discharges when running
		bmi	.crouch_attack_right		
		moveq	#RYGAR_CROUCH_RIGHT,d1
.crouch_attack_right:
		move.w	#DISKARM_CROUCHPOS,DISKARM_VERT_OFFSET		; Disk Armour Position when crouching
		bra	.animate

.no_crouch_right:
		tst.w	RYGAR_JUMP_STATE
		beq	.animate
.is_falling_right:
		moveq	#RYGAR_JUMP_ATTACK_RIGHT,d1

		;moveq	#RYGAR_JUMP_ATTACK_RIGHT,d1
		;tst.w	RYGAR_ROLLFALL
		;beq.s	.no_roll_right
		;moveq	#RYGAR_ROLLFALL_RIGHT,d1

.no_roll_right:	move.w	#DISKARM_JUMPPOS,DISKARM_VERT_OFFSET
		tst.w	RYGAR_DISKARM_STATE				; Scrolling pauses when weapon is discharges when running
		bmi	.jump_attack_right1	
		moveq	#RYGAR_JUMP_RIGHT,d1
.jump_attack_right1:
		bra	.animate

.is_running_left:
		tst.w	d6
		beq.s	.no_obs_left
		move.w	#-1,RYGAR_BLOCKED_STATE
		moveq	#RYGAR_RUNNING_LEFT,d1
		bra	.animate

.no_obs_left:	clr.w	RYGAR_BLOCKED_STATE
		tst.b	SCROLL_EDGE_LOCK_X		; 0 if locked.
		bmi.s	.static_left
		
; Here we move Rygar to the left toward the left edge of the screen
		cmp.w	#RYGAR_LEFT_BARRIER,2(a1)
		ble.s	.static_left
		subq.w	#RYGAR_MOVE_SPEED,2(a1)			; Move Rygar

.static_left:	move.w	#SPRITE_INSTATE_DIRECTION_LEFT,RYGAR_LAST_DIRECTION(a2)
		moveq	#RYGAR_RUNNING_LEFT,d1
		tst.w	RYGAR_JUMP_STATE
		beq.s	.animate
		
		move.w	#DISKARM_JUMPPOS,DISKARM_VERT_OFFSET
		moveq	#RYGAR_JUMP_ATTACK_LEFT,d1
		tst.w	RYGAR_DISKARM_STATE				; Scrolling pauses when weapon is discharges when running
		bmi	.jump_attack_left2	
		moveq	#RYGAR_JUMP_LEFT,d1
.jump_attack_left2:
		bra	.animate

.is_running_right:
		tst.w	d6
		beq.s	.no_obs_right
		move.w	#1,RYGAR_BLOCKED_STATE
		moveq	#RYGAR_RUNNING_RIGHT,d1
		bra	.animate

.no_obs_right:	clr.w	RYGAR_BLOCKED_STATE
		tst.b	SCROLL_EDGE_LOCK_X		; 0 if locked.
		bmi.s	.static_right

; Scroll lock off but has Rygar rygar reach the mid point.
		;cmp.w	#SCROLL_LOCK_POSX,2(a1)			; reach position 109 yet?
		;bge.s	.static_right
		addq.w	#RYGAR_MOVE_SPEED,2(a1)

.static_right:	move.w	#SPRITE_INSTATE_DIRECTION_RIGHT,RYGAR_LAST_DIRECTION(a2)
		moveq	#RYGAR_RUNNING_RIGHT,d1
		tst.w	RYGAR_JUMP_STATE
		beq.s	.animate
		;moveq	#RYGAR_JUMP_RIGHT,d1
		move.w	#DISKARM_JUMPPOS,DISKARM_VERT_OFFSET
		moveq	#RYGAR_JUMP_ATTACK_RIGHT,d1
		tst.w	RYGAR_DISKARM_STATE				; Scrolling pauses when weapon is discharges when running
		bmi	.jump_attack_right2	
		moveq	#RYGAR_JUMP_RIGHT,d1
.jump_attack_right2:
		bra.s	.animate
mcgeezer is offline  
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
Entry: Rygar AGA Edition mcgeezer Coders. Entries 62 20 January 2019 00:53
On the Ball - World Cup Edition AGA djcasey request.Old Rare Games 4 25 January 2013 13:39
On The Ball League Edition AGA , Player Manager 2 StarEye Games images which need to be WHDified 11 22 January 2010 19:21
The Vague #1 AGA-RTG edition is released ! kas1e Amiga scene 12 30 October 2007 01:27
On The Ball: World Cup Edition AGA CodyJarrett request.Old Rare Games 11 27 May 2003 07:14

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 04:59.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, vBulletin Solutions Inc.
Page generated in 0.10683 seconds with 16 queries