12 January 2019, 14:34 | #581 | |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Quote:
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 |
|
12 January 2019, 14:56 | #582 |
Registered User
Join Date: Feb 2017
Location: Caladan
Posts: 33
|
Very Good! Congratulations!
|
12 January 2019, 16:33 | #583 |
Inviyya Dude!
Join Date: Sep 2016
Location: Amiga Island
Posts: 2,775
|
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. |
12 January 2019, 22:47 | #584 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
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 |
12 January 2019, 22:52 | #585 |
Ex nihilo nihil
Join Date: Oct 2017
Location: CH
Posts: 4,896
|
Really nice done !!!
Looks as hard as Bomb Jack |
13 January 2019, 01:33 | #586 | |
Banned
Join Date: Aug 2005
Location: London / Sydney
Age: 47
Posts: 20,420
|
Quote:
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. |
|
13 January 2019, 08:38 | #587 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Sorry about that, too much ale.
|
13 January 2019, 10:11 | #588 |
Inviyya Dude!
Join Date: Sep 2016
Location: Amiga Island
Posts: 2,775
|
Yeah, let's not give that dude free publicity.
|
13 January 2019, 10:41 | #589 |
Registered User
Join Date: Feb 2007
Location: Melbourne, Australia
Age: 41
Posts: 3,773
|
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.
|
13 January 2019, 10:57 | #590 | |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Quote:
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. |
|
13 January 2019, 10:59 | #591 |
Registered User
Join Date: Feb 2018
Location: Kidderminster
Posts: 16
|
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.
|
13 January 2019, 11:07 | #592 |
Ex nihilo nihil
Join Date: Oct 2017
Location: CH
Posts: 4,896
|
|
13 January 2019, 13:23 | #593 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
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 |
13 January 2019, 14:21 | #594 |
Banned
Join Date: Aug 2005
Location: London / Sydney
Age: 47
Posts: 20,420
|
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. |
13 January 2019, 14:30 | #595 | |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Quote:
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 |
|
13 January 2019, 19:10 | #596 |
Registered User
|
Damn, even in my wildest dreams, I did not think we could get as close to the Arcade version ... and the sound ... I'm on the ass ... really great taf ...
|
13 January 2019, 19:22 | #597 |
Registered User
Join Date: Apr 2015
Location: Spain
Posts: 512
|
Just congratulate McGeezer and DJMetune for their work on this project. keep it up guys!
gratz! |
14 January 2019, 18:31 | #598 | |
Registered User
Join Date: Dec 2017
Location: Denmark
Posts: 179
|
Quote:
That solved most of my performance problems. Last edited by LaBodilsen; 14 January 2019 at 19:42. |
|
15 January 2019, 23:04 | #599 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Tonight I added more sound into the game...
I had to disable Cycle Exact mode to get the recording to work...my system isn't quite powerful enough. I tried to run this on my real A1200 tonight and I have a memory leak somewhere which I need to fix - very frustrating! http://109.228.4.199/rygarsound.mp4 Geezer |
16 January 2019, 03:13 | #600 |
Registered User
Join Date: Jan 2019
Location: Sweden
Posts: 20
|
The issue here with the sound effects taking over one of the music channels sometimes, (muting one note from the chords in the ingame music), will not occur with the next music version. The chords will instead be mixed to use only one channel instead of two. So the sound effects gonna have two clean channels to use freely in polyphonic.
The music mod will eat slightly more chipmem though, but I'll optimize it ofcourse to keep the filesize down as much as possible without lowering the quality. It's a must to have it like that anyways. Because during the waterfall periods, there should, (to keep it faithful to the original), also be a water sound playing simultaneously as the music and the normal sound effects. There should better not in that case be any polyphonic mode for the normal SFX during those special water periods. For the intro and interval music etc that needs to play more music notes simultaneously, all four channels is engaged for the music. As there's no SFX playing there anyways. Always maximal use of the audio channels in various but wisely ways! :-) / DJ METUNE |
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 | 75 | 28 February 2019 20:41 |
On the Ball - World Cup Edition AGA | djcasey | request.Old Rare Games | 4 | 25 January 2013 12:39 |
On The Ball League Edition AGA , Player Manager 2 | StarEye | Games images which need to be WHDified | 11 | 22 January 2010 18:21 |
The Vague #1 AGA-RTG edition is released ! | kas1e | Amiga scene | 12 | 30 October 2007 00:27 |
On The Ball: World Cup Edition AGA | CodyJarrett | request.Old Rare Games | 11 | 27 May 2003 06:14 |
|
|