Keen 13: The Ultra Omegamatic Version 2 released

Here is where to post about the latest Commander Keen fangame or modification you've finished, a new website you've made, or another Keen-related creation.
User avatar
DarkAle
Vorticon Elite
Posts: 318
Joined: Wed Jul 26, 2017 17:40
Location: Coral Hideout
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by DarkAle »

Sorry very much for the bugs :'(.I will fix them
Commander Keen in... Robot Apocalypse!
Episode 13: The Ultra Omegamatic viewtopic.php?f=4&t=6802
Episode 14: Secret of the Sorcerer viewtopic.php?t=13031
User avatar
DarkAle
Vorticon Elite
Posts: 318
Joined: Wed Jul 26, 2017 17:40
Location: Coral Hideout
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by DarkAle »

K1n9_Duk3 wrote: Mon May 04, 2020 21:44 This mod definitely needs some bugfixing. I can almost guarantee that saving and loading a game with a stunned Volte in it is gonna cause "RF_PlaceSprite" crashes for some people.

And the fact that the game *ALWAYS* shows the "Null pointer assignment" error message after quitting pretty much tells me that you either have no idea how to patch things properly or you just don't care.
Good news. I fixed the bugs, but I've modified some things in the levels and in the patches.

VERSION 1.2
http://www.mediafire.com/file/n9m4jwkgj ... 8.rar/file

P.s. Please when you'll uptade the wikipage, can you place my mod in Full Mods area?
Another request: Can you add the Koarthbot informations in the wikipage?
Commander Keen in... Robot Apocalypse!
Episode 13: The Ultra Omegamatic viewtopic.php?f=4&t=6802
Episode 14: Secret of the Sorcerer viewtopic.php?t=13031
User avatar
Nisaba
Janitress
Posts: 1597
Joined: Fri Jan 01, 2016 23:34
Location: The Outpost
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by Nisaba »

Concerning the wiki:

The KeenWiki team will surely update all missing information as soon as a stable version of your mod is available. Normally we would wait until the mod got tested by the community and all major bug-fixes are done. This is because we want to avoid rewriting things over and over again.
To maintain the wiki and keeping things up-to-date is quite some work. Most things are done manually so I'm sure you'll understand that we want to proceed as efficient as possible.
In your case we'll wait for further bug reports by the community plus their respective fixes.
On a side note I quickly want to mention that there are overall still lot's of stubs and things to fix and update on the entire wiki... so I'm asking for a little bit of patience on your end.

Your mod can be found under the Full Levelpack section. This is due to the wiki guidelines. Mods must be substantial. Most elements should be completely new, and/or most of the graphics as well. A mod is the substantial alteration of content in order to make it operate in a manner different from its original version. As your mod is still very close to the look and feel of Keen 5 it is considered to be a levelpack rather than a full mod.
out now (link) : Image
User avatar
K1n9_Duk3
Vorticon Elite
Posts: 781
Joined: Mon Aug 25, 2008 9:30
Location: Germany
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by K1n9_Duk3 »

Hey, I think my previous post was a bit harsh. Sorry about that. I'll try to be more relaxed this time.

I just downloaded v1.2 and noticed a couple of things right away:
  • The download contains KEEN5E.EXE. I guess that will have to be removed before your mod can be added to the KeenWiki.
  • The "Null pointer assignment" error is still there. I'm pretty sure the only reason why the program shows this error message when quitting is that you replaced the Borland Copyright string with other strings for your game. If that's the case, then the error message could be ignored. But as it is, seeing this message doesn't exactly make me confident about your patching skills, since this error message usually means that something has gone wrong while the program was running, thus indicating a serious problem in your patches. Because of that, I think it's best to leave the copyright string intact, so that the Null pointer check can actually do its job and warn you when something actually did go wrong.

    There are lots of other strings that you could replace instead of overwriting the Copyright message. For example, if you disable the EGAGRAPH check with this patch:

    Code: Select all

    # disable the EGAGRAPH.CK5 merging code entirely
    # -> frees up $30425-$304BD (153 bytes) for dseg variables
    # -> frees up $3CC1-$3E74 (436 bytes) for code or far strings
    
    %patch $3E78
    	$90 $90 $90 $90
    you can use $30425-$304BD to store the strings that overwrite the copyright string in the current version. In case you forgot, it's the "Keen attacks a Fuse Quantum" message. That message is patched multiple times in the patch file, all with the same offset, so if you decide to move them to a different offset be sure to modify all of them and not just one. Or modify one of them and delete all the others.
  • The problem with the Volteface was that you made it change into a state that displays the stunned stars, but you didn't do it corrently. The stunned stars use a second sprite slot and that sprite needs to be removed when the enemy is no longer visible. And the variable that holds the pointer to that sprite must be set to 0 (Null pointer) when that enemy is loaded from a saved game. But the enemy's type value must be set to the "stunned enemy" type, otherwise the game won't know that this enemy uses the stunned stars sprite and therefore doesn't handle it correctly.

    I see that you have removed the stunnable volteface and that you are using the regular Keen 5 version of that enemy now. That sure is one way to fix that bug. Another way would have been to add a little patch to your existing volteface patches:

    Code: Select all

    ################
    #Volteface                #
    ################
    
    #Initial Volte-face direction: Right 
    %patch $10B93 $C7 $47 $0E $0001W 
    %patch $10B10 $0001W 
    
    #New Volte-face actions, act like a horizontal platform 
    %patch $3200C $01A1W $01A3W $0003W $0000W $0000W $0006W $0000W $0000W 
                  $0F92127ERL   $0F92149DRL   $090B17B5RL   $1CEAW 
    %patch $3202A $01A2W $01A4W $0003W $0000W $0000W $0006W $0000W $0000W 
                  $0F92127ERL   $0F92149DRL   $090B17B5RL   $1CCCW 
    
    #Stunned Volte-face stuns permanently 
    %patch $32084 $01A5W $01A5W $0002W $0000W $0000W $0000W $0000W $0000W 
                  $090B1710RL   $00000000L    $090B195ARL   $0000W 
    
    #Custom Volte-Face speed 
    %patch $10B9E $55 $8B $EC $83 $EC $04 $56 $57 $8B $7E $06 $83 $3E $85 $BF $00 
                  $75 $1F $83 $3E $83 $BF $00 $75 $18 $8B $45 $0E $BA $0020W  $F7 
                  $EA $F7 $2E $B4 $9B $A3 $85 $BF $8B $45 $10 $BA $0020W  $E9 
              $F721W  $5F $5E $8B $E5 $5D $CB
    
    ###########################
    # K1n9_Duk3 fix:
    # --------------
    # Make sure Volte's stunned stars don't cause RF_PlaceSprite errors after loading a saved game
    %patch $10DD6 
    	$B8 $1D44w	#	mov	ax, offset s_voltestunned
    	$50		#	push	ax
    	$56		#	push	si
    	$FF $76 $06	#	push	bp+arg_0
    	$9A $090B16CDrl	#	call	StunContact
    	$83 $C4 $06	#	add	sp, 6
    	$5E		#	pop	si
    	$5D		#	pop	bp
    	$CB		#	retf
    ###########################
  • The projectiles that the shikadi shoot will actually fly through walls. I'm not sure if this was intentional. The pole sparks, on which your new projectiles are based, were always spawned in noclip mode, so that they can move through the pole holes. Simply turning noclip off won't do the rtick, though. You need to add also some code that makes the projectiles vanish when they hit a wall. Otherwise they'll get just stuck when they hit a wall.
That's all for now. If you need help with your patches, feel free to ask. I'll try to help if I have time.

I can't really say much about the actual gameplay or the levels. I don't think I've gotten past the very first shikadi in the first level on easy, at least not without godmode. That part already gave me the impression that the difficulty isn't balanced all that well. Maybe others have no problem with the difficutly, but I sure won't be playing this mod any further. I am easily frustrated and if I feel that your mod isn't giving me a fair chance, then I won't be giving your mod a fair chance either.
Hail to the K1n9, baby!
http://k1n9duk3.shikadi.net
User avatar
Syllypryde
Vorticon Elite
Posts: 1025
Joined: Tue Jan 20, 2009 18:33
Location: Michigan
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by Syllypryde »

K1n9_Duk3 wrote: Fri May 08, 2020 22:34 ......I can't really say much about the actual gameplay or the levels. I don't think I've gotten past the very first shikadi in the first level on easy, at least not without godmode. That part already gave me the impression that the difficulty isn't balanced all that well. Maybe others have no problem with the difficutly, but I sure won't be playing this mod any further. I am easily frustrated and if I feel that your mod isn't giving me a fair chance, then I won't be giving your mod a fair chance either.
I played and completed this game on easy and normal. Personally I didn't really see any bugs, glitches, out of memory, error messages, or other issues. Then again I'm not a modder so I am fully unaware of the inner workings of mods and level packs. You being a seasoned pro in that area you know better than I how stable or unstable the game is.

I liked the level design and placement of enemies for the most part. My issues with the game were the too generic names for the levels, the ridiculously obvious path to Greenland Base (no real secret here), the ridiculously overabundance of ray guns and extra lives (many Keeners consider 1Up's useless anyway), a lack of secret areas, and the short almost anti-climatic final level and ending.

It was a decent first go, better than I could ever hope to do, but I hope his next go will be a big improvement. He definitely has potential.
.niarb ym fo
snoitulovnoc eht tuaba
selbbarcs ssensuoicsnoc
rehgih a ekil smees
User avatar
DarkAle
Vorticon Elite
Posts: 318
Joined: Wed Jul 26, 2017 17:40
Location: Coral Hideout
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by DarkAle »

K1n9_Duk3 wrote: Fri May 08, 2020 22:34 Hey, I think my previous post was a bit harsh. Sorry about that. I'll try to be more relaxed this time.

I just downloaded v1.2 and noticed a couple of things right away:
  • The download contains KEEN5E.EXE. I guess that will have to be removed before your mod can be added to the KeenWiki.
  • The "Null pointer assignment" error is still there. I'm pretty sure the only reason why the program shows this error message when quitting is that you replaced the Borland Copyright string with other strings for your game. If that's the case, then the error message could be ignored. But as it is, seeing this message doesn't exactly make me confident about your patching skills, since this error message usually means that something has gone wrong while the program was running, thus indicating a serious problem in your patches. Because of that, I think it's best to leave the copyright string intact, so that the Null pointer check can actually do its job and warn you when something actually did go wrong.

    There are lots of other strings that you could replace instead of overwriting the Copyright message. For example, if you disable the EGAGRAPH check with this patch:

    Code: Select all

    # disable the EGAGRAPH.CK5 merging code entirely
    # -> frees up $30425-$304BD (153 bytes) for dseg variables
    # -> frees up $3CC1-$3E74 (436 bytes) for code or far strings
    
    %patch $3E78
    	$90 $90 $90 $90
    you can use $30425-$304BD to store the strings that overwrite the copyright string in the current version. In case you forgot, it's the "Keen attacks a Fuse Quantum" message. That message is patched multiple times in the patch file, all with the same offset, so if you decide to move them to a different offset be sure to modify all of them and not just one. Or modify one of them and delete all the others.
  • The problem with the Volteface was that you made it change into a state that displays the stunned stars, but you didn't do it corrently. The stunned stars use a second sprite slot and that sprite needs to be removed when the enemy is no longer visible. And the variable that holds the pointer to that sprite must be set to 0 (Null pointer) when that enemy is loaded from a saved game. But the enemy's type value must be set to the "stunned enemy" type, otherwise the game won't know that this enemy uses the stunned stars sprite and therefore doesn't handle it correctly.

    I see that you have removed the stunnable volteface and that you are using the regular Keen 5 version of that enemy now. That sure is one way to fix that bug. Another way would have been to add a little patch to your existing volteface patches:

    Code: Select all

    ################
    #Volteface                #
    ################
    
    #Initial Volte-face direction: Right 
    %patch $10B93 $C7 $47 $0E $0001W 
    %patch $10B10 $0001W 
    
    #New Volte-face actions, act like a horizontal platform 
    %patch $3200C $01A1W $01A3W $0003W $0000W $0000W $0006W $0000W $0000W 
                  $0F92127ERL   $0F92149DRL   $090B17B5RL   $1CEAW 
    %patch $3202A $01A2W $01A4W $0003W $0000W $0000W $0006W $0000W $0000W 
                  $0F92127ERL   $0F92149DRL   $090B17B5RL   $1CCCW 
    
    #Stunned Volte-face stuns permanently 
    %patch $32084 $01A5W $01A5W $0002W $0000W $0000W $0000W $0000W $0000W 
                  $090B1710RL   $00000000L    $090B195ARL   $0000W 
    
    #Custom Volte-Face speed 
    %patch $10B9E $55 $8B $EC $83 $EC $04 $56 $57 $8B $7E $06 $83 $3E $85 $BF $00 
                  $75 $1F $83 $3E $83 $BF $00 $75 $18 $8B $45 $0E $BA $0020W  $F7 
                  $EA $F7 $2E $B4 $9B $A3 $85 $BF $8B $45 $10 $BA $0020W  $E9 
              $F721W  $5F $5E $8B $E5 $5D $CB
    
    ###########################
    # K1n9_Duk3 fix:
    # --------------
    # Make sure Volte's stunned stars don't cause RF_PlaceSprite errors after loading a saved game
    %patch $10DD6 
    	$B8 $1D44w	#	mov	ax, offset s_voltestunned
    	$50		#	push	ax
    	$56		#	push	si
    	$FF $76 $06	#	push	bp+arg_0
    	$9A $090B16CDrl	#	call	StunContact
    	$83 $C4 $06	#	add	sp, 6
    	$5E		#	pop	si
    	$5D		#	pop	bp
    	$CB		#	retf
    ###########################
  • The projectiles that the shikadi shoot will actually fly through walls. I'm not sure if this was intentional. The pole sparks, on which your new projectiles are based, were always spawned in noclip mode, so that they can move through the pole holes. Simply turning noclip off won't do the rtick, though. You need to add also some code that makes the projectiles vanish when they hit a wall. Otherwise they'll get just stuck when they hit a wall.
That's all for now. If you need help with your patches, feel free to ask. I'll try to help if I have time.

I can't really say much about the actual gameplay or the levels. I don't think I've gotten past the very first shikadi in the first level on easy, at least not without godmode. That part already gave me the impression that the difficulty isn't balanced all that well. Maybe others have no problem with the difficutly, but I sure won't be playing this mod any further. I am easily frustrated and if I feel that your mod isn't giving me a fair chance, then I won't be giving your mod a fair chance either.
Thank you for these patches
Syllypryde wrote: Sat May 09, 2020 1:28
K1n9_Duk3 wrote: Fri May 08, 2020 22:34 ......I can't really say much about the actual gameplay or the levels. I don't think I've gotten past the very first shikadi in the first level on easy, at least not without godmode. That part already gave me the impression that the difficulty isn't balanced all that well. Maybe others have no problem with the difficutly, but I sure won't be playing this mod any further. I am easily frustrated and if I feel that your mod isn't giving me a fair chance, then I won't be giving your mod a fair chance either.
I played and completed this game on easy and normal. Personally I didn't really see any bugs, glitches, out of memory, error messages, or other issues. Then again I'm not a modder so I am fully unaware of the inner workings of mods and level packs. You being a seasoned pro in that area you know better than I how stable or unstable the game is.

I liked the level design and placement of enemies for the most part. My issues with the game were the too generic names for the levels, the ridiculously obvious path to Greenland Base (no real secret here), the ridiculously overabundance of ray guns and extra lives (many Keeners consider 1Up's useless anyway), a lack of secret areas, and the short almost anti-climatic final level and ending.

It was a decent first go, better than I could ever hope to do, but I hope his next go will be a big improvement. He definitely has potential.
I'm now working on the possible sequels: The Secret of the Sorcerer or The Armageddon Continues
Commander Keen in... Robot Apocalypse!
Episode 13: The Ultra Omegamatic viewtopic.php?f=4&t=6802
Episode 14: Secret of the Sorcerer viewtopic.php?t=13031
User avatar
DarkAle
Vorticon Elite
Posts: 318
Joined: Wed Jul 26, 2017 17:40
Location: Coral Hideout
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by DarkAle »

Version 1.2.1

https://www.mediafire.com/file/hfa43g5x ... 0.rar/file

Bugs fixed with K1n9_Duk3's patches

More Secrets

P. S. Which is the most hard level for you?
For me it's Fuse Quantum n. 4
Commander Keen in... Robot Apocalypse!
Episode 13: The Ultra Omegamatic viewtopic.php?f=4&t=6802
Episode 14: Secret of the Sorcerer viewtopic.php?t=13031
User avatar
K1n9_Duk3
Vorticon Elite
Posts: 781
Joined: Mon Aug 25, 2008 9:30
Location: Germany
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by K1n9_Duk3 »

Seriously?

That null pointer assignment error is still there! Why did you put in the patch that disables the EGAGRAPH check and then decide not to do anything with the memory you just made available? You should have moved that level entry string I told you about into that memory region. Did you just copy the patch scripts without actually reading or understanding what I wrote?
Hail to the K1n9, baby!
http://k1n9duk3.shikadi.net
User avatar
DarkAle
Vorticon Elite
Posts: 318
Joined: Wed Jul 26, 2017 17:40
Location: Coral Hideout
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by DarkAle »

K1n9_Duk3 wrote: Sun May 10, 2020 22:59 Seriously?

That null pointer assignment error is still there! Why did you put in the patch that disables the EGAGRAPH check and then decide not to do anything with the memory you just made available? You should have moved that level entry string I told you about into that memory region. Did you just copy the patch scripts without actually reading or understanding what I wrote?
I did everything you told me, but nothing happened. Try applying these patches in your file and if they works, send me the file in a private message
Commander Keen in... Robot Apocalypse!
Episode 13: The Ultra Omegamatic viewtopic.php?f=4&t=6802
Episode 14: Secret of the Sorcerer viewtopic.php?t=13031
User avatar
Nisaba
Janitress
Posts: 1597
Joined: Fri Jan 01, 2016 23:34
Location: The Outpost
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by Nisaba »

in level 3 you've placed the fist door (yellow gem) one tile too close to the poles. this leads to a misplacement of the Lil Ampton, which let's this lil buddy glide through the air without touching the pole:

Image Image
Last edited by Nisaba on Mon May 11, 2020 15:41, edited 1 time in total.
out now (link) : Image
User avatar
DarkAle
Vorticon Elite
Posts: 318
Joined: Wed Jul 26, 2017 17:40
Location: Coral Hideout
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by DarkAle »

Nisaba wrote: Mon May 11, 2020 14:51 in level 3 you've placed the fist door (yellow gem) one tile too close to the poles. this leads to a misplacement of the Lil Ampton, which let's this lil buddy glide through the hair without touching the pole:

Image Image
Thank you for the post. I will fix this
Commander Keen in... Robot Apocalypse!
Episode 13: The Ultra Omegamatic viewtopic.php?f=4&t=6802
Episode 14: Secret of the Sorcerer viewtopic.php?t=13031
User avatar
Nisaba
Janitress
Posts: 1597
Joined: Fri Jan 01, 2016 23:34
Location: The Outpost
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by Nisaba »

you also wanna make sure to fix this clipping issue in level 20. just change the tileinfo for the secret exit so Keen can't grab the edge anymore

Image
out now (link) : Image
User avatar
DarkAle
Vorticon Elite
Posts: 318
Joined: Wed Jul 26, 2017 17:40
Location: Coral Hideout
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by DarkAle »

Nisaba wrote: Mon May 11, 2020 15:40 you also wanna make sure to fix this clipping issue in level 20. just change the tileinfo for the secret exit so Keen can't grab the edge anymore

Image
OK. I must show the best part of me in this trilogy
Commander Keen in... Robot Apocalypse!
Episode 13: The Ultra Omegamatic viewtopic.php?f=4&t=6802
Episode 14: Secret of the Sorcerer viewtopic.php?t=13031
User avatar
DarkAle
Vorticon Elite
Posts: 318
Joined: Wed Jul 26, 2017 17:40
Location: Coral Hideout
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by DarkAle »

Version 1.3

https://www.mediafire.com/file/iomr4vgq ... 0.rar/file

Fixed Bugs

P.s Sorry for the "NULL POINTER ASSIGNEMENT" but I made the possible for delete it and I failed. And sorry also for the date of the file. It's tomorrow :dopekeen
Commander Keen in... Robot Apocalypse!
Episode 13: The Ultra Omegamatic viewtopic.php?f=4&t=6802
Episode 14: Secret of the Sorcerer viewtopic.php?t=13031
User avatar
K1n9_Duk3
Vorticon Elite
Posts: 781
Joined: Mon Aug 25, 2008 9:30
Location: Germany
Contact:

Re: Keen 13: The Ultra Omegamatic

Post by K1n9_Duk3 »

I'm sorry, but I can't quite understand what youre trying to say here:
Alessandro wrote: Tue May 19, 2020 19:47 but I made the possible for delete it and I failed
Let's go through it again step by step. Your patch script is overwriting parts of the string "Borland C++ - Copyright 1991 Borland Intl." with the following patch command (line 172):

Code: Select all

%patch $30340 "Keen attacks a" $0A "Fuse Quantum" $00
This patch command places your new string at offset 0 in the data segment. The Borland C++ library code performs a checksum test on these bytes when exiting back to DOS and if the checksum test fails, it will print the "Null pointer assignment" error message. Because unless you hack the executable with patches, the only reason why this checksum test would fail is that the code tried to write a couple of bytes to a Null pointer (i.e. offset 0 in the data segment).

I guess I am repeating myself here, but I'll write it anyway: This error message would normally be a sign of something going terribly wrong while the program was running. If you ever see this message, then there's something wrong with the code and you should not release your product to the public in this state. You should definitely not release it as a "finished" mod.

You might think that since the error occurs because the string was altered by a patch and not by an actual Null pointer problem, you could just leave it alone and tell people to ignore that message. You would be wrong. There are a few bugs in Keen 5 that cause it to read from a Null pointer, so replacing the copyright string with something else may cause some seemingly unrelated parts of the code to start behaving differently. Any way you put it, you're just asking for trouble by doing this.

Okay, now that it's clear that the aforementioned string should not be placed anywhere near offset 0 in the data segment, where do we place it? Well, of course we move it into the area that we have freed up by disabling the EGAGRAPH.CK5 merging code with the patch I gave you. Line 172 of your patch file should be changed to this:

Code: Select all

%patch $30425 "Keen attacks a" $0A "Fuse Quantum" $00
This change alone is not enough, though. We also need to update the pointers for this string. To do this, we basically search for any occurence of "$30340000RL" and replace it with "$303400E5RL". Just in case: the line numbers are 106, 111, 118 and 119.


On a somewhat related note, the "Protection Gallery" string overwrites parts of the "High Scores" string. The status window would just say "ry" instead of "High Scores" in the high score level. It's not a big deal, since nobody should ever play that level, but just in case, I'll let you know how you can fix it. Change the offset in line 109 from "$201E0" to "$201E3", so the line looks like this:

Code: Select all

%patch $201E3 "High Scores"
Then change the pointer in line 86 from "$201E0000RL" to "$201E0003RL".
Hail to the K1n9, baby!
http://k1n9duk3.shikadi.net
Post Reply