15 January 2019, 23:04 | #61 |
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, 19:52 | #62 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
In other news I had a need to bust out the real hardware again tonight so thought I would make use of the Monster Joystick my wife got me for xmas...
Here's a video running on my real A1200 http://109.228.4.199/rygarhw1.mp4 If any of you want the ADF I've used then drop me a PM. Just a quick note as well to say a big thank you to @seuden for sending me an a1200 accellerator card which I will put to good use for testing! (Will let you know how it goes mate! ). Geezer Edit - a few requests for the ADF... http://109.228.4.199/RYGARFFS.adf You'll need about 1800Kb of chip ram. |
19 January 2019, 23:53 | #63 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Update here as I've been working on the consistency in the game...
Things like redrawing the scene when Rygar loses a life and fixing the sanctuary scene when entering a new round. Here's my current bug list...
If you spot more bugs then feel free to reply! [ Show youtube player ] Few more Ronnies then off to bed! Geezer |
24 January 2019, 23:39 | #64 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Unfortunately I haven't been feeling well since the weekend so not much coding has been done, however mostly fighting fit again I was able to get back to coding tonight so I've added the scoring and bonus routines.
Still lots of bugs but it's nearly there.... probably another hour work and it'll be sorted. Note - The sound is not right due to the speed of my systems ability to record and WINUAE running. http://109.228.4.199/rygarscore.mp4 [ Show youtube player ] |
27 January 2019, 21:26 | #65 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Here's another hardware performance test video...
On this one I've fixed a shit load of bugs but also brought back the hardware sprites. I get lots of comments like "Why does it need AGA?", "It should run on OCS?", "Why does it need so much memory?"... An OCS/ECS machine can't do this - simples. This means I can start adding the other enemies so things should pick up quite quickly now. [ Show youtube player ] http://109.228.4.199/RygarHardwareTest.mp4 Note - If you listen you can probably here the rain bouncing off the conservatory and my little Boy in the background! Geezer |
02 February 2019, 22:47 | #66 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Had a bit of time tonight to add in the small Rhino. Also added in is better enemy collision detection, you'll notice the enemies all respect the environment now like obstacles and platforms.
http://109.228.4.199/rygarrhino.mp4 Geezer |
03 February 2019, 22:07 | #67 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
If you like Game of Thrones you'll like this update.
http://109.228.4.199/herebedragons.mp4 [ Show youtube player ] PS. Personally I can't stand the fucking pile of shit program but each to their own. PPS. Although I don't mind the sexy time scenes in it PPPS. Yes I know there are bugs... bugs bugs and more bugs... but I'll fix them at the right time... fox now we need a working game. |
06 February 2019, 22:44 | #68 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
After a night of frustration trying to resolve a bug when an enemy hits an obstacle and Rygar moves the obstacle off either left or right, I'm going to rewrite the core routine.
I'm not happy with the current routine and it's just become a pile of shit code as I've added things in the wrong order. Specifically here's what I mean... 1) I coded the enemies spawning from left to right of where Rygar is 2) I then coded the grab/charge code for the Rhinos/Drones 3) I then coded the destroy/stun when Rygar jumps on an enemy 4) I then added the obstacle/platform collision routine of the enemy The upshot... major bugs! Here's how I should have done it. 1) coded the enemies spawning from left to right taking into account the obstacles/platforms and where Rygar is in the map 2) added the walking from left to right of the enemy in the map 3) coded the destroy/stun when Rygar jumps on an enemy 4) coded the grab/charge code Pretty much everything backward! For the coders ... here's how complex it is... (the worst code ever!) Code:
ENEMY_RHINO_XPOS: equ 500 ENEMY_RHINO_YPOS: equ 114 RHINO_WALK_SPEED: equ 14 ;FRAMES_OFFSCREEN_BEFORE_DESTROYED: equ 100 ; Number of frames after which the sprite will disappear and be destroyed. RHINO_STATUS_WALK_LEFT: equ 1 RHINO_STATUS_WALK_RIGHT equ 2 RHINO_STATUS_SWEEP_LEFT: equ 3 RHINO_STATUS_SWEEP_RIGHT: equ 4 RHINO_STATUS_BONES: equ 5 RHINO_STATUS_STUN_LEFT: equ 6 RHINO_STATUS_STUN_RIGHT: equ 7 RHINO_STATUS_GRAB_LEFT: equ 8 RHINO_STATUS_GRAB_RIGHT: equ 9 RHINO_PROXIMITY_RANGE: equ 64 RHINO_PROXIMITY_GRAB_SPEED: equ 15 RHINO_GRAB_TIME: equ 25 ; Private Variables RHINO_SPEED: equ 32 RHINO_SWEEP_INDEX: equ 34 ; index in sine table RHINO_TURNS: equ 36 ; Number of times the RHINO can turn to follow Rygar. RHINO_GRABS: equ 38 ; True or False ; This will configure the number of times the RHINO will attempt to run and grab Rygar. ; if zero then the enemy is less dangerous. RHINO_STUN_STATIC_TIMER: equ 40 RHINO_WALK_DIRECTION: equ 42 ; Current walking direction. RHINO_IN_PROXIMITY: equ 44 RHINO_PROXIMITY_LEFT: equ 46 ; RHINO_PROXIMITY_RIGHT: equ 48 ; ; Input ;d2=X Position of Enemy ;d3=Y position of Enemy ;a3 = Coordinates pointer x1,x2,y1,y2 ; Output ;d6=Return value (-1 is collision) RHINO_TO_DISKARM_COLLISION MACRO move.l d4,-(a7) move.l d5,-(a7) move.w d2,d4 ; Check a 32x32 boundary from x1/y1 move.w d3,d5 add.w #22,d3 ; 16x16 sprite. add.w #32,d4 add.w #32,d5 moveq #0,d6 .eny_coll_loop: tst.w (a3) bmi.s .eny_coll_exit cmp.w 2(a3),d2 bgt.s .eny_coll_next cmp.w (a3),d4 blt.s .eny_coll_next cmp.w 6(a3),d3 bgt.s .eny_coll_next cmp.w 4(a3),d5 blt.s .eny_coll_next moveq #-1,d6 bra.s .eny_coll_exit .eny_coll_next: addq.w #8,a3 bra.s .eny_coll_loop .eny_coll_exit: move.l (a7)+,d5 move.l (a7)+,d4 ENDM RHINO_TO_RYGAR_COLLISION MACRO move.l d4,-(a7) move.l d5,-(a7) move.w d2,d4 ; Check a 32x32 boundary from x1/y1 move.w d3,d5 add.w #16,d3 add.w #32,d4 add.w #32,d5 moveq #0,d6 .ryg_coll_loop: cmp.w 2(a3),d2 ; Check X1 against Rygar X2 bgt.s .ryg_coll_next cmp.w (a3),d4 ; Check X2 against Rygar X1 blt.s .ryg_coll_next cmp.w 6(a3),d3 ; Check Y1 against Rygar Y2 bgt.s .ryg_coll_next cmp.w 4(a3),d5 ; Check Y2 against Rygar Y1 blt.s .ryg_coll_next moveq #-1,d6 .ryg_coll_next: nop .ryg_coll_exit: move.l (a7)+,d5 move.l (a7)+,d4 ENDM HDL_RHINO: SPRITE_INITIATE move.w RHINO_TOGGLE,d2 and.w #1,d2 bne.s .spawn_right .spawn_left: ; RHINO start x position move.w #288,d2 move.w #RHINO_STATUS_WALK_LEFT,d3 bra.s .spawn .spawn_right: move.w #10,d2 move.w #RHINO_STATUS_WALK_RIGHT,d3 .spawn: move.w d3,THIS_SPRITE_STATUS(a2) ; Set status move.w d2,d4 lsl.w #SPRITE_MAG,d2 move.w d2,THIS_SPRITE_XPOS(a2) add.w MAP_PIXEL_POSX,d4 ; Set actual map x position of enemy sprite sub.w #256,d4 lsl.w #SPRITE_MAG,d4 move.w d4,THIS_SPRITE_MAP_XPOS(a2) lsr.w #SPRITE_MAG,d2 move.w d2,SPRITE_PLOT_XPOS(a1) move.w #ENEMY_RHINO_YPOS,SPRITE_PLOT_YPOS(a1) clr.w RHINO_SWEEP_INDEX(a2) move.w #0,RHINO_TURNS(a2) move.w #3,RHINO_GRABS(a2) move.w #RHINO_WALK_SPEED,RHINO_SPEED(a2) clr.w RHINO_IN_PROXIMITY(a2) move.w #FRAMES_OFFSCREEN_BEFORE_DESTROYED,THIS_SPRITE_OFFSCREEN(a2) .active: tst.w SPRITE_DESTROY_END_ROUND(a2) bmi .destroy_enemy ; These checks are only done when the enemy has been hit. cmp.w #RHINO_STATUS_BONES,THIS_SPRITE_STATUS(a2) beq .anim_bones cmp.w #RHINO_STATUS_SWEEP_RIGHT,THIS_SPRITE_STATUS(a2) beq .anim_sweep_rt cmp.w #RHINO_STATUS_SWEEP_LEFT,THIS_SPRITE_STATUS(a2) beq .anim_sweep_lt ; Test this enemy collided with the disk armour move.w SPRITE_PLOT_XPOS(a1),d2 .check_proximity_range: move.w RYGAR_XPOS,d3 move.w d3,d4 sub.w #RHINO_PROXIMITY_RANGE,d3 add.w #RHINO_PROXIMITY_RANGE,d4 move.w d3,RHINO_PROXIMITY_LEFT(a2) move.w d4,RHINO_PROXIMITY_RIGHT(a2) cmp2.w RHINO_PROXIMITY_LEFT(a2),d2 bcs.s .no_proximity tst.w RHINO_IN_PROXIMITY(a2) ; Proximity already running bne.s .no_proximity ; Yes... don't run again. tst.w RHINO_GRABS(a2) ; Check how many grabs there are beq.s .no_proximity ; zero so don't set grab subq.w #1,RHINO_GRABS(a2) move.w #RHINO_GRAB_TIME,RHINO_IN_PROXIMITY(a2) .no_proximity: move.w SPRITE_PLOT_YPOS(a1),d3 lea DISKARM_COORDS,a3 RHINO_TO_DISKARM_COLLISION tst.w d6 ; Did this sprite get hit with the disk armor bmi .set_sweep_direction tst.w RHINO_STUN_STATIC_TIMER(a2) bne.s .go_left_or_right ; Test this enemy collided with Rygar (the player) move.w SPRITE_PLOT_XPOS(a1),d2 move.w SPRITE_PLOT_YPOS(a1),d3 lea RYGAR_COORDS,a3 RHINO_TO_RYGAR_COLLISION ; Check if Rygar was falling here.... tst.w d6 ; Did this sprite collide with Rygar? bmi .check_collision_action ; These collision checks happen when the enemy is live. .go_left_or_right: tst.w THIS_SPRITE_STATUS(a2) beq .exit lea SPRITE_SCREEN_LIMITS_X,a3 move.w SPRITE_PLOT_XPOS(a1),d2 cmp2.w (a3),d2 ; if within limit then do not subtract. bcc.s .in_limit subq.w #1,THIS_SPRITE_OFFSCREEN(a2) tst.w THIS_SPRITE_OFFSCREEN(a2) bmi .disable bra.s .out_limit .in_limit: move.w #FRAMES_OFFSCREEN_BEFORE_DESTROYED,THIS_SPRITE_OFFSCREEN(a2) .out_limit: move.w THIS_SPRITE_OFFSCREEN(a2),DEBUG_OFFSCREEN cmp.w #RHINO_STATUS_WALK_LEFT,THIS_SPRITE_STATUS(a2) beq .RHINO_left cmp.w #RHINO_STATUS_WALK_RIGHT,THIS_SPRITE_STATUS(a2) beq .RHINO_right bra .exit .check_collision_action: tst.w RYGAR_FALLPREV_STATE bmi.s .stun_or_destroy IFNE DISABLE_ENEMY_COLLISION bra .go_left_or_right ELSE bra.s .set_rygar_death_sequence ENDC nop .stun_or_destroy: tst.w RHINO_STUN_STATIC_TIMER(a2) bne .go_left_or_right ;move.w #-1,RYGAR_ROLLFALL_STATE clr.w RYGAR_FALL_STATE ; Stop Falling move.w #-1,RYGAR_JUMP_STATE ; Start Jumping clr.w RYGAR_SINE_INDEX ; Reset Jump Sine pointer. ;move.w #-1,RYGAR_LEAPING_STATE ; Don't leap moveq #0,d2 lea HDL_SPRITE_STATUS,a0 lea TAB_64,a3 add.w (a3,d2*2),a0 move.w #SPRITE_INSTATE_JUMPING,THIS_SPRITE_STATUS(a0) ; Set to jumping. ; Check here if Rygar has Tiger power. move.w RYGAR_CURRENT_POWERS,d2 and.w #POWER_TIGER,d2 bne .destroy_enemy ; If Rygar has Tiger then enemy is destroy bra.s .set_stun ; If not then the enemy is stunned. nop .set_stun: move.w #TIGER_STUN_STATIC_TIME,RHINO_STUN_STATIC_TIMER(a2) moveq #SND_LAND_ON_ENEMY,d0 ; Play jump sample bsr PLAY_SAMPLE bra .exit .set_rygar_death_sequence: rept 20 nop endr tst.w RYGAR_DEAD_STATE bmi .exit ; Rygar already dead! move.w #-1,RYGAR_DEAD_STATE clr.w RYGAR_SINE_INDEX moveq #0,d2 lea HDL_SPRITE_STATUS,a0 lea TAB_64,a3 add.w (a3,d2*2),a0 move.w #RYGAR_DEATH,THIS_SPRITE_STATUS(a0) bsr STOP_TUNE moveq #SND_RYGARDEAD,d0 ; Play jump sample bsr PLAY_SAMPLE bra .exit .stun_enemy: bra .exit .destroy_enemy: clr.w SPRITE_DESTROY_END_ROUND(a2) .set_sweep_direction: move.w #-1,DISKARM_DISABLE ; Only with no Sun power. moveq #SND_DESTROY,d0 bsr PLAY_SAMPLE cmp.w #RHINO_STATUS_WALK_LEFT,THIS_SPRITE_STATUS(a2) beq .set_sweep_rt bra.s .set_sweep_lt nop ; Trigger enemy death toward the left .set_sweep_lt: move.w #RHINO_STATUS_SWEEP_LEFT,THIS_SPRITE_STATUS(a2) addq.w #1,REPULSE_BONUS_NUM add.l #200,VAL_PLAYER1_SCORE move.w #-1,UPDATE_SCORE bra .exit ; Trigger enemy death toward the right .set_sweep_rt: move.w #RHINO_STATUS_SWEEP_RIGHT,THIS_SPRITE_STATUS(a2) addq.w #1,REPULSE_BONUS_NUM add.l #200,VAL_PLAYER1_SCORE move.w #-1,UPDATE_SCORE bra .exit .anim_sweep_lt: moveq #RHINO_STATUS_SWEEP_LEFT,d1 cmp.w #32,SPRITE_PLOT_XPOS(a1) ble .set_bones lea RHINO_DEATH_SINE,a3 move.w RHINO_SWEEP_INDEX(a2),d3 move.w (a3,d3*2),d3 tst.w d3 bmi .set_bones addq.w #1,RHINO_SWEEP_INDEX(a2) move.w THIS_SPRITE_XPOS(a2),d2 lsl.w #SPRITE_MAG,d3 sub.w d3,d2 move.w d2,THIS_SPRITE_XPOS(a2) lsr.w #SPRITE_MAG,d2 move.w d2,SPRITE_PLOT_XPOS(a1) bra ANIMATE .anim_sweep_rt: moveq #RHINO_STATUS_SWEEP_RIGHT,d1 cmp.w #248,SPRITE_PLOT_XPOS(a1) bge .set_bones lea RHINO_DEATH_SINE,a3 move.w RHINO_SWEEP_INDEX(a2),d3 move.w (a3,d3*2),d3 tst.w d3 bmi.s .set_bones addq.w #1,RHINO_SWEEP_INDEX(a2) move.w THIS_SPRITE_XPOS(a2),d2 lsl.w #SPRITE_MAG,d3 add.w d3,d2 move.w d2,THIS_SPRITE_XPOS(a2) lsr.w #SPRITE_MAG,d2 move.w d2,SPRITE_PLOT_XPOS(a1) bra ANIMATE .anim_bones: moveq #RHINO_STATUS_BONES,d1 move.l d0,-(a7) bsr ANIMATE move.l (a7)+,d0 tst.w d6 bmi.s .disable bra .exit .disable: clr.w THIS_SPRITE_STATUS(a2) clr.w THIS_SPRITE_STATUS(a1) subq.w #1,RHINOS_IN_USE bra DESTROY_SPRITE ; Trigger enemy sprite bones .set_bones: move.w #RHINO_STATUS_BONES,THIS_SPRITE_STATUS(a2) bra .exit ; RHINO walking left .RHINO_left: move.w THIS_SPRITE_XPOS(a2),d2 ; Get xposition move.w RHINO_SPEED(a2),d3 ; Get speed to add add.w d0,d3 add.w d0,d3 moveq #RHINO_STATUS_WALK_LEFT,d1 ; Animation type is walking left ; Is Rygar to the left? move.w SPRITE_PLOT_XPOS(a1),d4 ; Plot X position tst.w RHINO_IN_PROXIMITY(a2) ; Is the RHINO in proximity of Rygar beq.s .lt_noprox ; Not in proximity subq.w #1,RHINO_IN_PROXIMITY(a2) cmp.w RYGAR_XPOS,d4 ; is Rygar to the Left blt.s .lt_noprox ; No... don't grab then. moveq #RHINO_STATUS_GRAB_LEFT,d1 ;add.w d3,d3 ; Double speed if grabbing! .lt_noprox: tst.w RHINO_STUN_STATIC_TIMER(a2) beq.s .lt_no_stun moveq #RHINO_STATUS_STUN_LEFT,d1 moveq #0,d3 subq.w #1,RHINO_STUN_STATIC_TIMER(a2) cmp.w #TIGER_STUN_REVIVE_TIME,RHINO_STUN_STATIC_TIMER(a2) bgt.s .lt_no_shake lea RHINO_SHAKE_OFFSETS,a3 move.w RHINO_STUN_STATIC_TIMER(a2),d4 move.w (a3,d4*2),d3 .lt_no_shake: .lt_no_stun: sub.w d3,THIS_SPRITE_MAP_XPOS(a2) tst.w THIS_SPRITE_MAP_XPOS(a2) ; if hit 0 going left then go right. beq .lt_set_right bmi .lt_set_right ;add.w #16<<SPRITE_MAG,THIS_SPRITE_ACTUAL_XPOS(a2) tst.b SCROLL_EDGE_LOCK_X bpl.s .lt_still tst.w SCROLL_DIRECTION_X ; -1 if left, +1 if right bmi.s .lt_left beq.s .lt_still .lt_right: add.w #RYGAR_MOVE_SPEED<<SPRITE_MAG,d3 ; added (faster) when moving toward bra.s .lt_still .lt_left sub.w #RYGAR_MOVE_SPEED<<SPRITE_MAG,d3 ; subtracted (slower) when moving away bra.s .lt_still nop .lt_still: sub.w d3,d2 lea ROUND_ENEMY_POSITIONS,a3 moveq #0,d4 move.w THIS_SPRITE_MAP_XPOS(a2),d4 lsr.w #SPRITE_MAG,d4 lsr.w #4,d4 move.w d4,RHINO_BLOCK move.l (a3,d4*4),d4 and.l #ENEMY_DEF_RHINO,d4 bne.s .lt_cont .lt_set_right: move.w #RHINO_STATUS_WALK_RIGHT,THIS_SPRITE_STATUS(a2) add.w d3,THIS_SPRITE_MAP_XPOS(a2) add.w d3,THIS_SPRITE_XPOS(a2) bra ANIMATE .lt_cont: move.w d2,THIS_SPRITE_XPOS(a2) ; ffff lsr.w #SPRITE_MAG,d2 ; 0fff ;move.w d2,DEBUG_RHINO_XPOS move.w d2,SPRITE_PLOT_XPOS(a1) move.w d1,RHINO_WALK_DIRECTION(a2) bra ANIMATE ; RHINO walking Right from the Left (THIS IS OK) .RHINO_right: move.w THIS_SPRITE_XPOS(a2),d2 move.w RHINO_SPEED(a2),d3 add.w d0,d3 add.w d0,d3 moveq #RHINO_STATUS_WALK_RIGHT,d1 ; Is Rygar to the left? move.w SPRITE_PLOT_XPOS(a1),d4 tst.w RHINO_IN_PROXIMITY(a2) beq.s .rg_noprox subq.w #1,RHINO_IN_PROXIMITY(a2) cmp.w RYGAR_XPOS,d4 ; is Rygar to the Left bgt.s .rg_noprox ; No... don't grab then. ;COL0_BLUE moveq #RHINO_STATUS_GRAB_RIGHT,d1 ;add.w d3,d3 .rg_noprox: tst.w RHINO_STUN_STATIC_TIMER(a2) beq.s .rg_no_stun moveq #RHINO_STATUS_STUN_RIGHT,d1 moveq #0,d3 subq.w #1,RHINO_STUN_STATIC_TIMER(a2) cmp.w #TIGER_STUN_REVIVE_TIME,RHINO_STUN_STATIC_TIMER(a2) bgt.s .rg_no_shake lea RHINO_SHAKE_OFFSETS,a3 move.w RHINO_STUN_STATIC_TIMER(a2),d4 move.w (a3,d4*2),d3 .rg_no_shake: .rg_no_stun: add.w d3,THIS_SPRITE_MAP_XPOS(a2) ;add.w #16<<SPRITE_MAG,THIS_SPRITE_ACTUAL_XPOS(a2) tst.b SCROLL_EDGE_LOCK_X bpl.s .rg_still tst.w SCROLL_DIRECTION_X ; -1 if left, +1 if right bmi.s .rg_left beq.s .rg_still nop .rg_right: sub.w #RYGAR_MOVE_SPEED<<SPRITE_MAG,d3 ; added (faster) when moving toward bra.s .rg_still .rg_left add.w #RYGAR_MOVE_SPEED<<SPRITE_MAG,d3 ; subtracted (slower) when moving away bra.s .rg_still nop .rg_still: add.w d3,d2 lea ROUND_ENEMY_POSITIONS,a3 moveq #0,d4 move.w THIS_SPRITE_MAP_XPOS(a2),d4 lsr.w #SPRITE_MAG,d4 lsr.w #4,d4 move.w d4,RHINO_BLOCK move.l (a3,d4*4),d4 and.l #ENEMY_DEF_RHINO,d4 bne.s .rt_cont move.w #RHINO_STATUS_WALK_LEFT,THIS_SPRITE_STATUS(a2) sub.w d3,THIS_SPRITE_MAP_XPOS(a2) sub.w d3,THIS_SPRITE_XPOS(a2) bra ANIMATE .rt_cont: move.w d2,THIS_SPRITE_XPOS(a2) lsr.w #SPRITE_MAG,d2 move.w d2,SPRITE_PLOT_XPOS(a1) move.w d1,RHINO_WALK_DIRECTION(a2) bra ANIMATE .exit: rts Geezer |
10 February 2019, 19:10 | #69 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
After re-writing the sprite animation methods things are becoming a lot more fruitful. It is much easier now for me to create and manage new sprites.
Straight out of WinUAE http://109.228.4.199/rygar_sq.mp4 Youtube... [ Show youtube player ] As you can see the AGA/1200 can push around plenty of sprites. I've done practically no optimisations either... Still plenty of bugs though - but looking good for now. Geezer |
11 February 2019, 22:48 | #70 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Thought I'd take the Griffin enemy on tonight... these appear on the Water fall rounds 2 & 3...
Took about an hour to do... so the new sprite methods have already paid off. http://109.228.4.199/rygargrif.mp4 Geezer |
15 February 2019, 22:51 | #71 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Can someone explain to me.... Just how fuck'in good this guy is?
http://109.228.4.199/sanctuary.mp4 Cos I think it's nothing quite like the Amiga has produced since it was born. Take a bow @DJMETUNE. Geezer |
17 February 2019, 00:06 | #72 | |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Quote:
I mean just WOW! 2 channels... Makes me want to port Outrun! Quick update... I've added the Big Rhino and Evil Demon sprites. It should be apparent to everyone now that I won't get the whole game finished for the end of February, there is simply too much to do. What I will do though is try and get a stable playable demo working, at the moment there are LOTS of bugs. http://109.228.4.199/rygar_update2.mp4 Enough coding for a Saturday evening. Hope you like it. Geezer |
|
17 February 2019, 22:50 | #73 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
I've worked on some internal management stuff tonight which is quite necessary.
If you think of how Rygar works when you play it, you'll notice that enemies appear at various points through each round, it's this routine that I've being working on and have working pretty well. So at various points I can "inject" enemy configurations throughout each round, if you think of the Rhino's and Drone's they each have different speeds, number grab attempts, number of turns and the amount that can be running in the game. To give you an example of what the Round 1 config currently looks like.... here it is... Code:
;======================================= ; Foreground definitions per round ;======================================= ; [0] Pointer to Foreground Tile Map ; [1] Pointer to Level Background pointer ; [2] 0=Normal BG, -1=Sunset ; [3] Background round start offset. (If the start of next round does not have caves then set this to 0) ; Otherwise set it to 256) ; [4] Background Scroll speed 1=Fast, 2=Slot ; [5] Pointer to Obstacle placement structures for Round ; [6] Map Width ; [7] Map Depth ; [8] Map Start Y CNOP 0,4 ROUND1: dc.l MEMCHK3_TILEMAP ;0 dc.l LEVEL_BACKGROUND_1 ;4 dc.l BG_SCROLL_ENABLE ;8 dc.l NEXT_ROUND_CAVESCENE ;12 dc.l BG_SCROLL_SLOW ;16 dc.l OBSTACLES_ROUND_1 ;20 dc.l DEFAULT_MAP_DEPTH_START ;24 dc.l STONES_ROUND_1 ; 28 dc.l $9f8 ; 32 ; round completed at. dc.l ROUND1_ENEMY_CONFIG ; 36 dc.l ROUND1_STATIC_ENEMIES ; 40 dc.l DISABLE_FG_WATER_CYCLE ; 44 dc.l ROUND1_ENEMY_STATES ; 48 ; Sprite Type, Xposition, Yposition, Sprite Type. ROUND1_STATIC_ENEMIES: dc.w SPR_SQUIRREL,$868,84,SPR_TYPE_ENEMY ; $868 = Squirrel Xposition dc.l HDL_SQUIRREL dc.l -1 ;================================================ ; Background definitions here per round. ;================================================ ; [0] Pointer to IFF Background Data] ; [1] Pointer to colour list for copper display ; [2] Y Index to start background blit ; [3] Y Length to blit background LEVEL_BACKGROUND_1: dc.l MEMCHK10_BACKGROUND,ROUND1_COLOUR,59,86 ; Pointer to image, starting offset, length to blit, copper_list ; Obstacles x/y into map then 4 blocks 16x16 blocks to plot OBSTACLES_ROUND_1: dc.w 26,7,TILEOBS01,TILEOBS02,TILEOBS03,TILEOBS04,-1 ;dc.w 60,7,TILEOBS01,TILEOBS02,TILEOBS03,TILEOBS04,-1 dc.w 132,7,TILEOBS01,TILEOBS02,TILEOBS03,TILEOBS04,-1 dc.w $7fff CNOP 0,4 ; Stones that appear ; TILECMD_PUSHSTONE_JUMP = Appears when Rygar jumps on this ; TILECMD_PUSHSTONE_WALK = Appears when Rygar walks over this area ; TILECMD_PUSHSTONE_ITEM = Is simply part of the round map STONES_ROUND_1: dc.w 30,7,TILECMD_PUSHSTONE_ITEM,-1 dc.w 46,7,TILECMD_PUSHSTONE_ITEM,-1 dc.w 72,4,TILECMD_PUSHSTONE_ITEM,-1 dc.w 87,7,TILECMD_PUSHSTONE_ITEM,-1 dc.w 90,7,TILECMD_PUSHSTONE_ITEM,-1 dc.w 112,7,TILECMD_PUSHSTONE_ITEM,-1 dc.w 74,9,TILECMD_PUSHSTONE_JUMP,-1 dc.w 102,9,TILECMD_PUSHSTONE_JUMP,-1 dc.w 82+10,9,TILECMD_PUSHSTONE_WALK,-1 dc.w 122+10,9,TILECMD_PUSHSTONE_WALK,-1 dc.w 124+10,9,TILECMD_PUSHSTONE_WALK,-1 dc.w $7fff CNOP 0,4 ; must be 176 in length ROUND1_ENEMY_CONFIG: rept 29 ; 0-29 dc.l (ENEMY_STATE_0!ENEMY_DEF_RHINO!ENEMY_DEF_GRIFFIN!ENEMY_DEF_DRAGON1!ENEMY_DEF_DRAGON2) endr rept 1 ; 30 dc.l (ENEMY_STATE_0!ENEMY_DEF_DRONE!ENEMY_DEF_GRIFFIN!ENEMY_DEF_DRAGON1!ENEMY_DEF_DRAGON2!ENEMY_DEF_BIGRHINO) endr rept 50 ; 30-79 dc.l (ENEMY_STATE_1!ENEMY_DEF_DRONE!ENEMY_DEF_RHINO!ENEMY_DEF_GRIFFIN!ENEMY_DEF_DRAGON1!ENEMY_DEF_DRAGON2) endr rept 50 ; 80-129 dc.l (ENEMY_STATE_2!ENEMY_DEF_DRONE!ENEMY_DEF_RHINO!ENEMY_DEF_GRIFFIN!ENEMY_DEF_DRAGON1!ENEMY_DEF_DRAGON2) endr rept 50 ; 130-179 dc.l (ENEMY_STATE_3!ENEMY_DEF_DRONE!ENEMY_DEF_RHINO!ENEMY_DEF_GRIFFIN!ENEMY_DEF_DRAGON1!ENEMY_DEF_DRAGON2) endr dc.l -1 ROUND1_ENEMY_STATES: dc.l ROUND1_ENEMY_STATE_0 ; Default Enemy Config That is Loaded dc.l ROUND1_ENEMY_STATE_1 dc.l ROUND1_ENEMY_STATE_2 dc.l ROUND1_ENEMY_STATE_3 ; Enemy Type, Max, Speed Min, Speed Max, ROUND1_ENEMY_STATE_0: dc.w SPR_EVIL_UL,1,10,20,-1,-1,-1,-1 dc.w SPR_LAVAMAN,4,10,20,-1,-1,-1,-1 dc.w SPR_BIGRHINO1,1,10,20,-1,-1,-1,-1 dc.w SPR_SQUIRREL,1,0,0,-1,-1,-1,-1 dc.w SPR_DRAGON1,0,20,40,-1,-1,-1,-1 dc.w SPR_DRONE,4,20,40,-1,-1,-1,-1 dc.w SPR_RHINO,4,20,40,-1,-1,-1,-1 dc.w SPR_GRIFFIN,0,10,20,-1,-1,-1,-1 dc.l -1 ; Enemy Type, Max, Speed Min, Speed Max, ROUND1_ENEMY_STATE_1: dc.w SPR_DRAGON1,1,20,40,-1,-1,-1,-1 dc.w SPR_DRONE,6,20,40,-1,-1,-1,-1 dc.w SPR_RHINO,6,20,40,-1,-1,-1,-1 dc.w SPR_GRIFFIN,0,10,20,-1,-1,-1,-1 dc.l -1 ; Enemy Type, Max, Speed Min, Speed Max, ROUND1_ENEMY_STATE_2: dc.w SPR_DRAGON1,2,20,40,-1,-1,-1,-1 dc.w SPR_DRONE,8,20,40,-1,-1,-1,-1 dc.w SPR_RHINO,8,20,40,-1,-1,-1,-1 dc.w SPR_GRIFFIN,0,10,20,-1,-1,-1,-1 dc.l -1 ; Enemy Type, Max, Speed Min, Speed Max, ROUND1_ENEMY_STATE_3: dc.w SPR_DRAGON1,0,20,40,-1,-1,-1,-1 dc.w SPR_DRONE,0,20,40,-1,-1,-1,-1 dc.w SPR_RHINO,10,20,40,-1,-1,-1,-1 dc.w SPR_GRIFFIN,8,10,20,-1,-1,-1,-1 dc.l -1 I'll try and get some other enemies in over the next week... notably, the Dragon Rider, Giant Worm and Lava Man... at a push I might get the Giant demon in as well. I've done a lot of work on stability too and the game no longer crashes with any Enforcer hits. Geezer |
26 February 2019, 22:01 | #74 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
So here we are.... two days to go and I'm shit out of time with loads of bugs still in Rygar. Frustratingly I can't seem to get the game to run properly on my real hardware so I'm wondering if I have a hardware fault somewhere, if someone wants to try it out then feel free... sometimes it works on my real stock amiga and sometimes not.
Here's a YT video... [ Show youtube player ] Here's a video from OBS http://www.siesmicminds.co.uk/downloads/RygarEAB06.mp4 And here's an ADF for you to try. http://www.siesmicminds.co.uk/downloads/RygarEAB06.adf Just a quick note on what/who Siesmic Minds is... basically that is me (mcgeezer) and anyone mad enough to work with me on a project... I've setup the default website and stuff and my plan is after Rygar to do some game coding tutorials/videos and publish them there. If I don't post another update before the 28th (because of work commitments)... then this will go ahead as the entry to the compo. I've made the game insanely hard... but not impossible, if you get to round 4 without it crashing then you're doing much better than me. Good luck to all. Signing Off. Geezer |
27 February 2019, 23:07 | #75 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Hurray - the game now works on stock A1200 hardware - now i'm HAPPY!
I recreated the ADF, but I have a sneaking suspicion that it was the add21k utility I was using instead of the add44k I should have used for the AGA machines to claim some memory back. Here' a video of it running on my A1200. Youtube... [ Show youtube player ] From my server... http://www.siesmicminds.com/downloads/RygarEAB09.mp4 And here is the working ADF! I have updated the other ADF's to this one so please redownload! http://www.siesmicminds.com/downloads/RygarEAB09.adf The game requires a two button joy pad Good luck to all entrants on the compo, I have a feeling I'm going to have a few beers tomorrow night... maybe play Bomb Jack Beer Edition. Enjoy and please give it a go. Geezer |
28 February 2019, 20:41 | #76 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
I had a couple of spare hours tonight to work out some final bugs.
This is the final version I'll be releasing before the deadline tonight, my wife has gone out and got me some Peroni to supp tonight and I'm going to watch some Amiga streams or something. The game has been a blast to develop, I've loved every minute of it. At times it has been tough to keep motivated but this thread has helped massively, whenever I lost some motivation I went back in the threads and read the messages of support from all of you guys. I will continue to work on the game at a slightly slower pace, I've said before but I don't like programming in the summer months...(I gotta get Vitamin D from somewhere) but I'll endeavor to finish the game in the next few months before the whole summer kicks in, like most of you I have wife/kids/full time job to prioritise on. I'll list the known bugs I have in the game that I know about, if people want to add to them then feel free...but please understand that I know Rygar very well...I know all the little quirks it has so if something is missing then it's because I haven't added it to the game yet. No video this time... just the ADF. Please do not forget you need a two button pad for the game and it has intentionally been made hard with faster and more enemies than the arcade as there is only currently 4 levels to play, so therefore the challenge of the game is to get to the 5th level with the highest score with your 3 lives. Good luck to everyone in the competition and a special thanks to DamienD who has effectively ran the compo from start to finish. http://www.siesmicminds.com/downloads/RygarEAB0A.adf and for the coders among you, the source code... http://www.siesmicminds.com/download...AB10Source.zip Geezer |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Discussion: Rygar AGA Edition | mcgeezer | Coders. Contest | 1815 | 20 May 2023 20:44 |
On the Ball - World Cup Edition AGA | djcasey | request.Old Rare Games | 4 | 25 January 2013 12:39 |
Brian the Lion AGA - Computer Combat edition | antonvaltaz | support.Games | 2 | 25 November 2011 11:35 |
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 |
|
|