Jump to content
IGNORED

Deep Zone


artrag

Recommended Posts

Is there a way to print a card using PRINT and the hexadecimal value of the backtab ram ?

In short, what is the correct syntax for this ?

 

PRINT AT screenpos(2, 6),"\$0619"

 

It seems to work with decimal numbers, but using hex I get runtime errors....

What is wrong ?

This is the procedure that hangs the game:

f1: procedure
   PRINT AT screenpos(2-1, 6-1),"\$0619" 
   PRINT AT screenpos(3-1, 1-1),"\$0619" 
   PRINT AT screenpos(3-1, 5-1),"\$0569" 
   PRINT AT screenpos(3-1, 7-1),"\$0531" 
   PRINT AT screenpos(3-1, 11-1),"\$0619" 
   PRINT AT screenpos(6-1, 6-1),"\$0619" 
   PRINT AT screenpos(7-1, 5-1),"\$0619" 
   PRINT AT screenpos(7-1, 7-1),"\$0619" 
   PRINT AT screenpos(8-1, 4-1),"\$0619" 
   PRINT AT screenpos(8-1, 8-1),"\$0619" 
   PRINT AT screenpos(9-1, 5-1),"\$0619" 
   PRINT AT screenpos(9-1, 7-1),"\$0619" 
   PRINT AT screenpos(10-1, 6-1),"\$0619" 
   PRINT AT screenpos(13-1, 1-1),"\$0619" 
   PRINT AT screenpos(13-1, 5-1),"\$0569" 
   PRINT AT screenpos(13-1, 7-1),"\$0531" 
   PRINT AT screenpos(13-1, 11-1),"\$0619" 
   PRINT AT screenpos(14-1, 6-1),"\$0619" 
end 
Link to comment
Share on other sites

 

Is there a way to print a card using PRINT and the hexadecimal value of the backtab ram ?

In short, what is the correct syntax for this ?

 

PRINT AT screenpos(2, 6),"\$0619"

 

It seems to work with decimal numbers, but using hex I get runtime errors....

What is wrong ?

This is the procedure that hangs the game:

f1: procedure
   PRINT AT screenpos(2-1, 6-1),"\$0619" 
   PRINT AT screenpos(3-1, 1-1),"\$0619" 
   PRINT AT screenpos(3-1, 5-1),"\$0569" 
   PRINT AT screenpos(3-1, 7-1),"\$0531" 
   PRINT AT screenpos(3-1, 11-1),"\$0619" 
   PRINT AT screenpos(6-1, 6-1),"\$0619" 
   PRINT AT screenpos(7-1, 5-1),"\$0619" 
   PRINT AT screenpos(7-1, 7-1),"\$0619" 
   PRINT AT screenpos(8-1, 4-1),"\$0619" 
   PRINT AT screenpos(8-1, 8-1),"\$0619" 
   PRINT AT screenpos(9-1, 5-1),"\$0619" 
   PRINT AT screenpos(9-1, 7-1),"\$0619" 
   PRINT AT screenpos(10-1, 6-1),"\$0619" 
   PRINT AT screenpos(13-1, 1-1),"\$0619" 
   PRINT AT screenpos(13-1, 5-1),"\$0569" 
   PRINT AT screenpos(13-1, 7-1),"\$0531" 
   PRINT AT screenpos(13-1, 11-1),"\$0619" 
   PRINT AT screenpos(14-1, 6-1),"\$0619" 
end 

 

Taking as example the last line, you should change it to (and every line):

 

 

PRINT AT screenpos(14-1, 6-1),$0619
Link to comment
Share on other sites

Oscar, I think there is a possible optimization issue with this code:

f4: procedure
   #backtab(screenpos(3-1+2, 6-1))=  #s1   
   #backtab(screenpos(4-1+2, 2-1))=  #s1   
   #backtab(screenpos(4-1+2, 5-1))=  #s1   
   #backtab(screenpos(4-1+2, 7-1))=  #s1   
   #backtab(screenpos(4-1+2, 10-1))=  #s1   
   #backtab(screenpos(7-1+2, 6-1))=  #s1   
   #backtab(screenpos(8-1+2, 1-1))=  #s1   
   #backtab(screenpos(8-1+2, 5-1))=  #s1   
   #backtab(screenpos(8-1+2, 7-1))=  #s1   
   #backtab(screenpos(8-1+2, 11-1))=  #s1   
   #backtab(screenpos(9-1+2, 6-1))=  #s1   
   #backtab(screenpos(12-1+2, 2-1))=  #s1   
   #backtab(screenpos(12-1+2, 5-1))=  #s1   
   #backtab(screenpos(12-1+2, 7-1))=  #s1   
   #backtab(screenpos(12-1+2, 10-1))=  #s1   
   #backtab(screenpos(13-1+2, 6-1))=  #s1   
   return 
   end  

#s1 is a variable defined at the beginning. The issues is (or could be) in the generated ASM.

I get this:

	; F4
Q23:	PROC
	BEGIN
	;[63]    #backtab(screenpos(3-1+2, 6-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",63
	MVI V2,R0
	MVO R0,Q2+104
	;[64]    #backtab(screenpos(4-1+2, 2-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",64
	MVI V2,R0
	MVO R0,Q2+25
	;[65]    #backtab(screenpos(4-1+2, 5-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",65
	MVI V2,R0
	MVO R0,Q2+85
	;[66]    #backtab(screenpos(4-1+2, 7-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",66
	MVI V2,R0
	MVO R0,Q2+125
	;[67]    #backtab(screenpos(4-1+2, 10-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",67
	MVI V2,R0
	MVO R0,Q2+185
	;[68]    #backtab(screenpos(7-1+2, 6-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",68
	MVI V2,R0
	MVO R0,Q2+108
	;[69]    #backtab(screenpos(8-1+2, 1-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",69
	MVI V2,R0
	MVO R0,Q2+9
	;[70]    #backtab(screenpos(8-1+2, 5-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",70
	MVI V2,R0
	MVO R0,Q2+89
	;[71]    #backtab(screenpos(8-1+2, 7-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",71
	MVI V2,R0
	MVO R0,Q2+129
	;[72]    #backtab(screenpos(8-1+2, 11-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",72
	MVI V2,R0
	MVO R0,Q2+209
	;[73]    #backtab(screenpos(9-1+2, 6-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",73
	MVI V2,R0
	MVO R0,Q2+110
	;[74]    #backtab(screenpos(12-1+2, 2-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",74
	MVI V2,R0
	MVO R0,Q2+33
	;[75]    #backtab(screenpos(12-1+2, 5-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",75
	MVI V2,R0
	MVO R0,Q2+93
	;[76]    #backtab(screenpos(12-1+2, 7-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",76
	MVI V2,R0
	MVO R0,Q2+133
	;[77]    #backtab(screenpos(12-1+2, 10-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",77
	MVI V2,R0
	MVO R0,Q2+193
	;[78]    #backtab(screenpos(13-1+2, 6-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",78
	MVI V2,R0
	MVO R0,Q2+114
	;[79]    return 
	SRCFILE "crap\warp_frames.bas",79
	RETURN
	;[80]    end 
	SRCFILE "crap\warp_frames.bas",80
	ENDP
 

The compiler keeps loading R0 each time, but R0 is already assigned and does not change.

I would have expected something like:

	; F4
Q23:	PROC
	BEGIN
	;[63]    #backtab(screenpos(3-1+2, 6-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",63
	MVI V2,R0
	MVO R0,Q2+104
	;[64]    #backtab(screenpos(4-1+2, 2-1))=  #s1   
	MVO R0,Q2+25
	;[65]    #backtab(screenpos(4-1+2, 5-1))=  #s1   
	MVO R0,Q2+85
	;[66]    #backtab(screenpos(4-1+2, 7-1))=  #s1   
	MVO R0,Q2+125
	;[67]    #backtab(screenpos(4-1+2, 10-1))=  #s1   
	MVO R0,Q2+185
	;[68]    #backtab(screenpos(7-1+2, 6-1))=  #s1   
	MVO R0,Q2+108
	;[69]    #backtab(screenpos(8-1+2, 1-1))=  #s1   
	MVO R0,Q2+9
	;[70]    #backtab(screenpos(8-1+2, 5-1))=  #s1   
	MVO R0,Q2+89
	;[71]    #backtab(screenpos(8-1+2, 7-1))=  #s1   
	MVO R0,Q2+129
[....]
	;[80]    end 
	SRCFILE "crap\warp_frames.bas",80
	ENDP

Is there some timing issue for gram access that makes the optimization above unuseful ?

Edited by artrag
  • Like 1
Link to comment
Share on other sites

Oscar, I think there is a possible optimization issue with this code:

f4: procedure
   #backtab(screenpos(3-1+2, 6-1))=  #s1   
   #backtab(screenpos(4-1+2, 2-1))=  #s1   
   #backtab(screenpos(4-1+2, 5-1))=  #s1   
   #backtab(screenpos(4-1+2, 7-1))=  #s1   
   #backtab(screenpos(4-1+2, 10-1))=  #s1   
   #backtab(screenpos(7-1+2, 6-1))=  #s1   
   #backtab(screenpos(8-1+2, 1-1))=  #s1   
   #backtab(screenpos(8-1+2, 5-1))=  #s1   
   #backtab(screenpos(8-1+2, 7-1))=  #s1   
   #backtab(screenpos(8-1+2, 11-1))=  #s1   
   #backtab(screenpos(9-1+2, 6-1))=  #s1   
   #backtab(screenpos(12-1+2, 2-1))=  #s1   
   #backtab(screenpos(12-1+2, 5-1))=  #s1   
   #backtab(screenpos(12-1+2, 7-1))=  #s1   
   #backtab(screenpos(12-1+2, 10-1))=  #s1   
   #backtab(screenpos(13-1+2, 6-1))=  #s1   
   return 
   end  

#s1 is a variable defined at the beginning. The issues is (or could be) in the generated ASM.

I get this:

	; F4
Q23:	PROC
	BEGIN
	;[63]    #backtab(screenpos(3-1+2, 6-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",63
	MVI V2,R0
	MVO R0,Q2+104
	;[64]    #backtab(screenpos(4-1+2, 2-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",64
	MVI V2,R0
	MVO R0,Q2+25
	;[65]    #backtab(screenpos(4-1+2, 5-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",65
	MVI V2,R0
	MVO R0,Q2+85
	;[66]    #backtab(screenpos(4-1+2, 7-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",66
	MVI V2,R0
	MVO R0,Q2+125
	;[67]    #backtab(screenpos(4-1+2, 10-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",67
	MVI V2,R0
	MVO R0,Q2+185
	;[68]    #backtab(screenpos(7-1+2, 6-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",68
	MVI V2,R0
	MVO R0,Q2+108
	;[69]    #backtab(screenpos(8-1+2, 1-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",69
	MVI V2,R0
	MVO R0,Q2+9
	;[70]    #backtab(screenpos(8-1+2, 5-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",70
	MVI V2,R0
	MVO R0,Q2+89
	;[71]    #backtab(screenpos(8-1+2, 7-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",71
	MVI V2,R0
	MVO R0,Q2+129
	;[72]    #backtab(screenpos(8-1+2, 11-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",72
	MVI V2,R0
	MVO R0,Q2+209
	;[73]    #backtab(screenpos(9-1+2, 6-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",73
	MVI V2,R0
	MVO R0,Q2+110
	;[74]    #backtab(screenpos(12-1+2, 2-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",74
	MVI V2,R0
	MVO R0,Q2+33
	;[75]    #backtab(screenpos(12-1+2, 5-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",75
	MVI V2,R0
	MVO R0,Q2+93
	;[76]    #backtab(screenpos(12-1+2, 7-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",76
	MVI V2,R0
	MVO R0,Q2+133
	;[77]    #backtab(screenpos(12-1+2, 10-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",77
	MVI V2,R0
	MVO R0,Q2+193
	;[78]    #backtab(screenpos(13-1+2, 6-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",78
	MVI V2,R0
	MVO R0,Q2+114
	;[79]    return 
	SRCFILE "crap\warp_frames.bas",79
	RETURN
	;[80]    end 
	SRCFILE "crap\warp_frames.bas",80
	ENDP
 

The compiler keeps loading R0 each time, but R0 is already assigned and does not change.

I would have expected something like:

	; F4
Q23:	PROC
	BEGIN
	;[63]    #backtab(screenpos(3-1+2, 6-1))=  #s1   
	SRCFILE "crap\warp_frames.bas",63
	MVI V2,R0
	MVO R0,Q2+104
	;[64]    #backtab(screenpos(4-1+2, 2-1))=  #s1   
	MVO R0,Q2+25
	;[65]    #backtab(screenpos(4-1+2, 5-1))=  #s1   
	MVO R0,Q2+85
	;[66]    #backtab(screenpos(4-1+2, 7-1))=  #s1   
	MVO R0,Q2+125
	;[67]    #backtab(screenpos(4-1+2, 10-1))=  #s1   
	MVO R0,Q2+185
	;[68]    #backtab(screenpos(7-1+2, 6-1))=  #s1   
	MVO R0,Q2+108
	;[69]    #backtab(screenpos(8-1+2, 1-1))=  #s1   
	MVO R0,Q2+9
	;[70]    #backtab(screenpos(8-1+2, 5-1))=  #s1   
	MVO R0,Q2+89
	;[71]    #backtab(screenpos(8-1+2, 7-1))=  #s1   
	MVO R0,Q2+129
[....]
	;[80]    end 
	SRCFILE "crap\warp_frames.bas",80
	ENDP

Is there some timing issue for gram access that makes the optimization above unuseful ?

 

I'll look into it, it should be optimized.

Link to comment
Share on other sites

The instruction mvo is non-interruptible. Long sequences of mvo need to be broken up (in groups of 3 or 4) with interruptible instructions or nops.

 

This means that the optimized code should be

	MVI V2,R0
	MVO R0,Q2+104
	MVO R0,Q2+25
	MVO R0,Q2+85
	NOP
	MVO R0,Q2+125
	MVO R0,Q2+185
	MVO R0,Q2+108
	MVO R0,Q2+9
	NOP
	MVO R0,Q2+89
	MVO R0,Q2+129
[....]
Link to comment
Share on other sites

Major update in the first post

 

It's looking, sounding, and playing a lot better! :thumbsup:

 

I like the new warp effect, it's very effective in giving the impression of speed through a star field. I like the sound effects on the demo screen, though I do not hear them all in the game itself.

 

The background music is much better, but I think it still overshadows the sound effects. I suggest lowering its volume by two notches or so. Also, transposing the pattern every so often would make it sound less monotonous.

 

Overall, great work so far. :)

 

-dZ.

Link to comment
Share on other sites

AFAIK there is no volume control among the music commands. Is there?

 

Hmmm... I just realized that you are right.

 

Oscar, would you consider adding support for volume control to the music player in IntyBASIC? If not per note (to simulate velocity), at least for the overall song.

 

-dZ.

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

minimal update with game over music

new files are in the first post

 

Thanks for the update. I just tried playing it for a quick run and encountered a problem. I think I reached a "boss," but it was weird: first, there were still two orange ships outstanding in the center, and all of a sudden the music changed, my ship froze, and this larger saucer guy showed up going coming in and out from the center. All the time my ship was frozen and I couldn't do absolutely anything, though the screen seemed to be animated.

 

post-27318-0-08521900-1448104481_thumb.gifpost-27318-0-57373400-1448104485_thumb.gifpost-27318-0-76315300-1448104489_thumb.gif

 

I suppose this is a bug. I'll play some more and provide more feedback.

 

-dZ.

Link to comment
Share on other sites

OK, it did it again. I shoot the "last" orange ship (but not really, since there were still two orange dots in the center), and I hear a sound effect (#3 from the startup menu) and the screen flashes briefly, and my ship freezes. Then the "boss" ship comes out but nothing happens at that point.

 

post-27318-0-07914300-1448104711_thumb.gif

 

That's a screenshot of the game at that point. The yellow laser fireball is stuck on screen just like my ship.

Edited by DZ-Jay
Link to comment
Share on other sites

 

Thanks for the update. I just tried playing it for a quick run and encountered a problem. I think I reached a "boss," but it was weird: first, there were still two orange ships outstanding in the center, and all of a sudden the music changed, my ship froze, and this larger saucer guy showed up going coming in and out from the center. All the time my ship was frozen and I couldn't do absolutely anything, though the screen seemed to be animated.

 

shot0000.gif shot0001.gif shot0002.gif

 

I suppose this is a bug. I'll play some more and provide more feedback.

 

-dZ.

Interaction is still missing

It is a wip

You can only cycle bosses with buttons and skip boss phase pressing enter

Edited by artrag
Link to comment
Share on other sites

Interaction is still missing

It is a wip

You can only cycle bosses with buttons and skip boss phase pressing enter

 

So the boss phase is not complete. Gotcha! I just read the "Features" on the first post. :dunce:

 

A few observations:

  • Music sounds much better at a faster pace now, although it is still a generic scale.
  • Sound effects seem to have a very slight delay. This is more noticeable in the menu screen, where the effect is heard like 1/2 a second after pressing the key. During game-play, it is a bit distracting, since the sound does not seem to be truly connected with firing the laser.
  • I really recommend adding some dampening to movement on the initial press of the disc. As it stands, it is hard to get much accuracy to shoot down slow-moving enemies; pressing the disc very slightly moves my ship a considerable distance. (This is in emulation.)
  • The "Game-Over" music fits nicely. I would recommend a longer transition to the "Game-Over" phase, perhaps by making the text move slower. It's hard to perceive the switch until the music starts playing.
  • I personally do not like the Space Invader aliens as the enemies. In my opinion, they do not fit the game style. I much preferred them better when they were saucers or spaceships. The aliens look a bit silly in such a cool-looking game.
  • The explosion of my ship being destroyed flashes much too fast to be appreciated. Perhaps you could introduce a better animation, or slow down the current one just a bit.
  • Also, the sound effect on my ship destruction is a bit lame for that situation. (The effect is cool, just not for that event.) Maybe something a bit more explosy would do?
  • I cycled through the bosses and most of them look the same and seem to be generic clones of Space Invader sprites (see above). However, I do like the fighter-looking ship. Let's have more of that ship style around the game! :)

 

Overall, looking better and better! Great work! :)

 

 

P.S. By the way, if you would like help with sprite design, there are a couple of good pixel artists in this forum that may assist.

Edited by DZ-Jay
Link to comment
Share on other sites

Artist support needed. Is there some volunteer?

Enemies have 8x8 size and two frames of animations, bosses have 16x24 size and have one frame

Current graphic is here

if i remember when i wake up i will try to work up some baddies for ya. Any preferance of look you are going for?
Link to comment
Share on other sites

I need also a contribution for the title screen

This is the current idea, but I have trouble to convert it to stack mode, is there any tool?

 

 

I think that's perfectly doable in color stack mode. I'll try to work on it today.

 

-dZ.

Edited by DZ-Jay
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...