Home
JAQForum Ver 20.06
Log In or Join  
Active Topics
Local Time 02:04 15 May 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : New game to CMM: Gauntlet port

     Page 3 of 6    
Author Message
SimpleSafeName

Senior Member

Joined: 28/07/2019
Location: United States
Posts: 288
Posted: 06:09am 01 Aug 2019
Copy link to clipboard 
Print this post

Hi Mauro,

It's me, MrWaalkman from your Youtube video.

First off, let me say that this is an impressive amount of work, and it really looks great! I've been having fun playing with it, as well as looking through your code. Thanks!


Here's a bit of feedback:

A couple of MMBasic issues (out of your control):

"Const" doesn't work on the CMM. MMBasic for Dos it does.


"Keydown" odd behavior.

Try this: Try moving while shooting. Once you take a shot, you have to release the arrow key and hit it again to begin moving again. Keydown doesn't "see" that the key is down until you release and press it again.

This may be a limitation of the PS/2 keyboard.


Things that I noticed while playing Gauntlet:

Allowing your player to die will actually start increasing its health as he/she continues to get hit. A heart will replace the leading "0". Eventually when the player's health reaches 10000, the least significant digit will be lost and the number is right-shifted by one place making it appear that you are back to 1000.

Immortality was never so easy! :)

Letting your player get "swarmed" isn't all that much worse than getting hit by a single stream of monsters (go to level three and put yourself in the center of "Ghostville" and you will see what I mean). It appears that the hits come in quicker than the program can tally them.

Potions don't work, nor can they be destroyed. Same with the food.

Artifacts are left over in some instances.

Opening a gate does not decrement the key count below one key (the game shows that you still have a key when you don't).


I'll start looking into these issues myself as practice with the CMM. :)
 
MauroXavier
Guru

Joined: 06/03/2016
Location: Brazil
Posts: 303
Posted: 11:43am 01 Aug 2019
Copy link to clipboard 
Print this post

Firstly, thanks for your support and comments!

This little port currently it's only a test demo, and I doesn't implemented so many things and other things are MMBasic limitations, let's see:

- The Keydown only get the current key pressed on a instance, and when you press two keys simultaneosly, it doesn't read back to the one key alone pressed previously, you must press it again. I got so used to this limitation that I don't realize it anymore kkk...

- The player's health doesn't affect directly the game and for a while it's merely cosmetic. The player cannot die and the health doesn't have upper or lower limits.

- The health internally is affected on each enemy's attack individually, but on screen are updated every second (not in real time to save CPU), this can cause a false impression about the "swarmed" player effect. In anycase, I will test this in the "Ghostville" (I liked that name!).

- Potions does not implemented yet

- Foods and potions can't be destroyed yet

- Artifacts really are a prage because the game can't use a framebuffer and I cannot use sprites to store the screen because the screen scroll affect the restore position as well the sprites consumes more memory. All things in screen are shapes using sprites commands, and some movements can be not cleared in the correct order, what cause this anomalies. I'm trying hard to fix this.

- The keys count are turned off to test the stages.

I intent to release a newer version soon, and will be awesome if you test it and tell me your impressions again.

Thanks again!
 
MauroXavier
Guru

Joined: 06/03/2016
Location: Brazil
Posts: 303
Posted: 11:43am 01 Aug 2019
Copy link to clipboard 
Print this post

Firstly, thanks for your support and comments!

This little port currently it's only a test demo, and I doesn't implemented so many things and other things are MMBasic limitations, let's see:

- The Keydown only get the current key pressed on a instance, and when you press two keys simultaneosly, it doesn't read back to the one key alone pressed previously, you must press it again. I got so used to this limitation that I don't realize it anymore kkk...

- The player's health doesn't affect directly the game and for a while it's merely cosmetic. The player cannot die and the health doesn't have upper or lower limits.

- The health internally is affected on each enemy's attack individually, but on screen are updated every second (not in real time to save CPU), this can cause a false impression about the "swarmed" player effect. In anycase, I will test this in the "Ghostville" (I liked that name!).

- Potions does not implemented yet

- Foods and potions can't be destroyed yet

- Artifacts really are a prage because the game can't use a framebuffer and I cannot use sprites to store the screen because the screen scroll affect the restore position as well the sprites consumes more memory. All things in screen are shapes using sprites commands, and some movements can be not cleared in the correct order, what cause this anomalies. I'm trying hard to fix this.

- The keys count are turned off to test the stages.

I intent to release a newer version soon, and will be awesome if you test it and tell me your impressions again.

Thanks again!
 
MauroXavier
Guru

Joined: 06/03/2016
Location: Brazil
Posts: 303
Posted: 12:23am 02 Aug 2019
Copy link to clipboard 
Print this post

SimpleSafeName, try to change some variables in the start of source:

SAVEKE=2
SAVEPO=2
GETTRE=2

Change all this to zero to have some (bad) voices like "Use keys to open doors".

Change the "pwmmus=0" to "pwmmus=1" but DON'T USE HEADPHONES AND LOWER THE VOLUME IF YOU ARE USING SPEAKERS because this is a test and can hurt your ears.

This last setting will enable VGM music to be played using mono squared waves to play music in the title and in the character selection screen.
 
SimpleSafeName

Senior Member

Joined: 28/07/2019
Location: United States
Posts: 288
Posted: 05:52am 02 Aug 2019
Copy link to clipboard 
Print this post

  MauroXavier said  SimpleSafeName, try to change some variables in the start of source:

SAVEKE=2
SAVEPO=2
GETTRE=2

Change all this to zero to have some (bad) voices like "Use keys to open doors".

Change the "pwmmus=0" to "pwmmus=1" but DON'T USE HEADPHONES AND LOWER THE VOLUME IF YOU ARE USING SPEAKERS because this is a test and can hurt your ears.

This last setting will enable VGM music to be played using mono squared waves to play music in the title and in the character selection screen.


Okay, cool!

But it will have to wait until my SN76489AN chips get (they're close, they're in Atlanta, GA). My Oscillators came in today, and I should have more than enough odd parts lying around to complete the circuit.
 
MauroXavier
Guru

Joined: 06/03/2016
Location: Brazil
Posts: 303
Posted: 10:38am 02 Aug 2019
Copy link to clipboard 
Print this post

  SimpleSafeName said  Okay, cool!

But it will have to wait until my SN76489AN chips get (they're close, they're in Atlanta, GA). My Oscillators came in today, and I should have more than enough odd parts lying around to complete the circuit.

This test don't need a SN76489, it's only using the native sound output from CMM. Do you tried it?
 
SimpleSafeName

Senior Member

Joined: 28/07/2019
Location: United States
Posts: 288
Posted: 04:09pm 02 Aug 2019
Copy link to clipboard 
Print this post

  MauroXavier said  
  SimpleSafeName said  Okay, cool!

But it will have to wait until my SN76489AN chips get (they're close, they're in Atlanta, GA). My Oscillators came in today, and I should have more than enough odd parts lying around to complete the circuit.

This test don't need a SN76489, it's only using the native sound output from CMM. Do you tried it?


Ah, I didn't know that. On the CGCOLORMAX2 it has a spot for me to solder in a header, I'll do that and give it a try.
 
SimpleSafeName

Senior Member

Joined: 28/07/2019
Location: United States
Posts: 288
Posted: 09:59pm 02 Aug 2019
Copy link to clipboard 
Print this post

Much better with sound. Thanks! :)

On level six there is a spot where there seems to be an invisible wall. It's between me and the monsters. Was that intentional?





And What's this box in the other pic?


 
SimpleSafeName

Senior Member

Joined: 28/07/2019
Location: United States
Posts: 288
Posted: 11:45pm 02 Aug 2019
Copy link to clipboard 
Print this post

So here's a head scratcher, In Gauntlet.bas you load:

Sprite Load ".springame2.spr": FirstLoad=0

with no trouble. But if you were to open it in Mstudio.bas you get:

"Error: Corrupt sprite file"

The error is coming from "ColourMM_MMBasic_V4.5C.hex", not Mstudio.bas.



The line that works in Gauntlet is:

"Sprite Load ".springame2.spr": FirstLoad=0"

The line in Mstudio.bas that fails is:

"Sprite Load file$(sel)"


Loading ingame.spr works just fine in Mstudio.
 
SimpleSafeName

Senior Member

Joined: 28/07/2019
Location: United States
Posts: 288
Posted: 02:51am 03 Aug 2019
Copy link to clipboard 
Print this post

Well, that was a rabbit hole that I fell into.

So the problem with "ingame1.spr" (and I imagine ingame2.spr) is that they don't contain 106 sprites. ingame1.spr will load once you change the line "16,106" to "16,102".

But that leaves most of one sprite left. According to Notepad++ there are 1652 lines in the file, which *should* load up 103 sprites.

But in MMBasic's Edit, it shows only 1649 lines. Where did the three lines go? Adding three lines and changing the sprite count allows Mstudio to load the file.

There are a bunch of blank lines at the beginning of the file, I used Notepad++ to remove these lines by using a "regular expression" search of "^ " and a blank replacement line.

This brought the sprite count down to 87, and cleaned the sprites up to where they displayed properly (while the file would load with the sprite count changed to 102 or 103, many of the first sprites had a blank line between each "real" line).

I'm going to reload ingame1.spr in edit and copy what it loads and paste it into another file and compare that to what I have in Notepad++. Should be interesting... :)

Other issues with edit is that it allows you to "scroll past" the end of the file. But that's a different kettle of fish.


 
SimpleSafeName

Senior Member

Joined: 28/07/2019
Location: United States
Posts: 288
Posted: 02:54am 03 Aug 2019
Copy link to clipboard 
Print this post

Ah, never mind. Edit won't let me copy more than 255 characters.
 
MauroXavier
Guru

Joined: 06/03/2016
Location: Brazil
Posts: 303
Posted: 11:03am 05 Aug 2019
Copy link to clipboard 
Print this post

I don't have any problems in the ingame2.spr and other sprites editing in MXStudio. In this case, some sprite files are made inside the code merging the sprites from the choosed player, fixed enemies, blocks and level tiles. In anycase, I will see if in the current source have this bug, maybe I have fixed it and not saw it before.

On the level six the invisible wall will be a block that would turn in to a exit if you shoot in the wall.

The closed box in other pic it's a chest that will open with a key.

All the maps it's based on the Gauntlet NES maps.

Thanks a lot for your tests and considerations. I pretend to publish another update source soon and I hope you enjoy again!
 
SimpleSafeName

Senior Member

Joined: 28/07/2019
Location: United States
Posts: 288
Posted: 02:13am 07 Aug 2019
Copy link to clipboard 
Print this post

That's the weird thing, I don't either. In the game, they load up properly and look good. I need to look at my paths again.

One request for Mstudio would be that you add a comment line after each sprite to show where the sprites begin and end.

I tried to load a map in Mstudio and it doesn't seem to work. But the header says that it was created using Mstudio.


I tried shooting that block and it doesn't do anything. No big deal.

And I tried opening the chest using a key, but no go either.


And no problem, I'm learning quite a bit as I go through the program. :)


And what are the two numbers in the lower right hand part of the screen for?
 
MauroXavier
Guru

Joined: 06/03/2016
Location: Brazil
Posts: 303
Posted: 11:39am 07 Aug 2019
Copy link to clipboard 
Print this post

Ok, I will add commented lines to the sprites with the number and a comment for each, it's a good idea!

To load a map you must have a file in the same folder with the .SPR extension with the same name of the map, ex.: ROOM01.MAP and ROOM01.SPR

The treasure chest and the block that turns into an exit are not yet implemented.

The numbers on the lower right are the count of the processed enemies on the screen and FPS.
 
SimpleSafeName

Senior Member

Joined: 28/07/2019
Location: United States
Posts: 288
Posted: 05:13am 08 Aug 2019
Copy link to clipboard 
Print this post

Thanks! That will make it easier to follow. :)

Ah, so that's why ROOM07.MAP loaded when the rest wouldn't.

So I took a look at the .spr file and it looks like it had the same thing happen as the previous .spr file. Spaced lines, and the same 16, 106 line. But in this one's case, once I removed the extra blank lines the total number of lines matched what the 16, 106 would work out to be (1696 + 2 lines for the comment and the number of sprites). Prior to that it was 1955 lines long.

So that leads to the next problem (this is a MMBasic problem, not yours). I tried to load up ROOM07.MAP and it came back with this error:





You can see where it reports the problem being at line 1613 of Mstudio.bas. But look closer, it has merged the first part of line 1613 (TilSel=1: ) with part of line 1638 (5,MM.VRes-9) Str$(Til)+"/"+Str$(MaxSpr)+" ")


Here are the two lines as you wrote them:

(Line 1613) TilSel=1: Til=1: RefTil=1

...several lines deleted for clarity...

(Line 1638) Print@(145,MM.VRes-9) Str$(Til)+"/"+Str$(MaxSpr)+" "

You can see that the compiler is mixing these two lines together. Strange...


Okay, I'll wait on the hidden exit and the chest. :)

And now I know what those numbers are for. Thanks! :)
 
MauroXavier
Guru

Joined: 06/03/2016
Location: Brazil
Posts: 303
Posted: 05:23pm 08 Aug 2019
Copy link to clipboard 
Print this post

In the Mstudio I used many tricks to conserve memory because I had too many errors and lockups. I not doubt that you found one more bug.

In the case of the ingame2.spr that you said before, I tested and it have the same bug here and I believe that is a sprite merge bad routine in Gauntlet source. I will fix it soon.
 
SimpleSafeName

Senior Member

Joined: 28/07/2019
Location: United States
Posts: 288
Posted: 02:15am 09 Aug 2019
Copy link to clipboard 
Print this post

No, I don't think that it's you. Unless you've figured out how to make self-modifying code. :)

The program appears to skip several lines before merging two lines together. Neat trick. I think that this one is for Geoff.

I edited the sprite file to see if that was contributing to the problem, but I got the exact same error both times.

Is there a place to deposit MMBasic bug droppings (bug reports)?
 
Turbo46

Guru

Joined: 24/12/2017
Location: Australia
Posts: 1595
Posted: 05:43am 09 Aug 2019
Copy link to clipboard 
Print this post

I think the best way to notify Geoff on any bugs is to PM him directly. He may not read every post.


Bill
Keep safe. Live long and prosper.
 
SimpleSafeName

Senior Member

Joined: 28/07/2019
Location: United States
Posts: 288
Posted: 11:53am 09 Aug 2019
Copy link to clipboard 
Print this post

  Turbo46 said  I think the best way to notify Geoff on any bugs is to PM him directly. He may not read every post.


Bill


Okay, thanks! :)
 
MauroXavier
Guru

Joined: 06/03/2016
Location: Brazil
Posts: 303
Posted: 11:42am 15 Aug 2019
Copy link to clipboard 
Print this post

Seen the Manic Miner ceptimus port, now thinking better, I percepted that in development of my Gauntlet port, if I targeted the ZX Spectrum or MSX version, I could used fonts in place of sprites and get more memory, more speed and more animations (but with inferior graphics)... Maybe I pushed too much the CMM and I didn't care about the gameplay.

@SimpleSafeName, do you really enjoyed playing Gauntlet on CMM or you agree to simplify somethings to make it faster and more responsive?

It's time to back and see what I can do to make my Gauntlet a more enjoyable port (with two players).

This weekend I must release another version with a Youtube video...
Edited 2019-08-15 21:43 by MauroXavier
 
     Page 3 of 6    
Print this page
© JAQ Software 2024