Operation Ocflore

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.
Grimson
The Dragoner
Posts: 1809
Joined: Tue Jul 14, 2009 6:55

Re: Operation Ocflore

Post by Grimson »

I just finished my first playthrough, though I didn't beat all the levels yet.

Artwork is fantastic, you've put the new orange color to good use. Everything about the use of colors and dithering is just right, not too pixelated or too bland.
Level design is also pretty solid, though I found it a little lacking in difficulty (I played on hard, as always).
Music is great, my favorite is the one playing on the first level, among others.
Story/setting is decent, though sometimes it felt like unnecessarily detailed meta text, while other times items crucial for the game and plot are barely mentioned (like the whole shield generator thing, it's never really elaborated on how or why it works). I guess that's why the Ormch memo or whatever it was called is its own extra chapter. I was also hoping for a plot twist or the story somehow evolving/expanding as you go, but I guess the game engine doesn't really support that.

Also some assorted questions:
- Are the Enkri incapable of speech?
- How could the Dorsal develop a space-faring civilization with no arms?
- Why did the Ormch ask Keen to do their dirty work instead of someone else? Surely they must've known from his reputation that he'll betray them in favor of saving the life on Ocflore.
- Are the Ormch, in fact, robots?
- Is there no scrolling story screen?

Also the jumping blue guys look like hobos wearing blue wizard garments :helmet

All in all this is an excellent Galaxy mod! I rate it four Yorps :yorp :yorp :yorp :yorp
Last edited by Grimson on Sat Jan 25, 2020 8:50, edited 1 time in total.
"All those thousands upon thousands of junk foods made for me on the various planets I explored make me wonder how I'm still alive."

User avatar
DoomJedi
Vorticon Elite
Posts: 763
Joined: Mon Dec 14, 2009 11:22
Location: Israel

Re: Operation Ocflore

Post by DoomJedi »

Is this whole races and stuff happens quite late in the mod?

I didn't noticed so far anything of races, needed decisions...nothing much of the story...

User avatar
K1n9_Duk3
Vorticon Elite
Posts: 630
Joined: Mon Aug 25, 2008 9:30
Location: Germany
Contact:

Re: Operation Ocflore

Post by K1n9_Duk3 »

Nisaba wrote:
Fri Jan 24, 2020 10:21
besides...
was this graphic suppose to be meant as the squished Inchworm/Feathered Vindrizi Grub you were talking about earlier?
Image
Based on what I've seen in the patch file, yes. I've used this for the patch that makes them squishable.
Grimson wrote:
Fri Jan 24, 2020 21:36
Is there no scrolling story screen?
Nope. The Keen 4 text is not modified by any patches and the code to display the scroller is disabled. This mod is not supposed to have that scrolling text.
DoomJedi wrote:
Fri Jan 24, 2020 22:09
Is this whole races and stuff happens quite late in the mod?
No, the (original) opening story is a bit misleading. You cannot side with the Ormch in this mod, you have to help the Dorsal. There is only one ending sequence.
Hail to the K1n9, baby!
http://k1n9duk3.shikadi.net

User avatar
Nisaba
Vorticon Elite
Posts: 1149
Joined: Fri Jan 01, 2016 23:34
Location: The Outpost
Contact:

Re: Operation Ocflore

Post by Nisaba »

just because:
Image

ahh, yes!
it's so satisfying to collect globules
"We have come to conquer you all and bring you lots of candy!" | about me | my current project: play Keen mods on a GameBoy |

User avatar
Bubbatom
Vorticon Elite
Posts: 347
Joined: Sat Oct 23, 2010 0:55
Location: South Australia

Re: Operation Ocflore

Post by Bubbatom »

Hey there guys,

Here's the latest revision: https://www.dropbox.com/s/m8btdabl33ogx ... e.zip?dl=0

I have to give an absolute massive thank you to K1n9_Duk3 for all of the wonderful work he's put into this mod in the last few weeks. The finishing touches and optimisation have only been possible through his efforts and I'm very happy with how the mod is looking now!

Here are some of the things that have been added to this revision:

- Vendrizi Grubs can now be squished with the pogo
- Hitboxes corrected to avoid issues with enemies getting stuck places they shouldn't
- Optimisation across the board that should allow the mod to be playable on original DOS hardware
- DEPFA.COM and COLR.COM programs are no longer required for the adjusted palette used in the game
- Minor tile fixes and adjustments

There's probably a few things I'm forgetting as it's been a few weeks now!

------------------------------------------------------------------------

I'm glad everyone is enjoying the mod, it's been a pleasure working on it and as long as I keep getting feedback on how to improve it I'll keep going!

Thanks people!
Image

User avatar
Roobar
Vorticon Elite
Posts: 3042
Joined: Tue Jan 08, 2008 16:12
Contact:

Re: Operation Ocflore

Post by Roobar »

"squished with the pogo"
Oh neat! I like squishing things with my pogo! Downloading...

User avatar
Nisaba
Vorticon Elite
Posts: 1149
Joined: Fri Jan 01, 2016 23:34
Location: The Outpost
Contact:

Re: Operation Ocflore

Post by Nisaba »

"INSERT SOMETHING HERE PLEASE"

Image
"We have come to conquer you all and bring you lots of candy!" | about me | my current project: play Keen mods on a GameBoy |

User avatar
_mr_m_
Vortimaestro
Posts: 424
Joined: Mon May 11, 2009 23:14
Location: A Midwest cornfield

Re: Operation Ocflore

Post by _mr_m_ »

Nisaba wrote:
Mon Feb 03, 2020 21:50
"INSERT SOMETHING HERE PLEASE"

Image
That’s what she said.
"I just drew this stupid little fish." -- Tom Hall

User avatar
K1n9_Duk3
Vorticon Elite
Posts: 630
Joined: Mon Aug 25, 2008 9:30
Location: Germany
Contact:

Re: Operation Ocflore

Post by K1n9_Duk3 »

I've come up with another patch that might be useful if you're trying to run this mod on a real DOS PC but the game complains that there is not enough memory for the background music on some levels. Just insert this into the patch file:

Code: Select all

##############################
# Load Audio Chunks Directly #
##############################

# This patch forces the game to load the audio data directly from the file into
# the final buffer without doing any Huffman decompression. This requires the
# AUDIO.CK4 file to be compressed with a "dummy" Huffman dictionary (which is
# the case in Operation Ocflore).
#
# Without this code, the game would load the "compressed" data into a temporary
# buffer and then decompress it into the final buffer. That means the memory
# requirements for music are more than TWICE(!) the size of the IMF song.

%patch $13466
	$33 $C0			#	xor	ax, ax
	$50			#	push	ax
	$FF $76	$FE		#	push	bp+var_2
	$FF $76 $FC		#	push	bp+var_4
	$FF $36 $CB9Dw		#	push	audiohandle
	$9A $00001BC9rl		#	call	_lseek
	$83 $C4 $08		#	add	sp, 8
	$B8 $0004w		#	mov	ax, 4
	$50			#	push	ax
	$B8 $CB95w		#	mov	ax, offset chunkexplen
	$50			#	push	ax
	$FF $36 $CB9Dw		#	push	audiohandle
	$9A $00001F10rl		#	call	_read
	$83 $C4 $06		#	add	sp, 6
	$FF $36 $CB97w		#	push	word ptr chunkexplen+2
	$FF $36 $CB95w		#	push	word ptr chunkexplen
	$8B $C6			#	mov	ax, si
	$D1 $E0			#	shl	ax, 1
	$05 $C75Dw		#	add	ax, offset audiosegs
	$50			#	push	ax
	$9A $155E0712rl		#	call	MM_GetPtr
	$83 $C4 $06		#	add	sp, 6
	$83 $3E $A7EFw $00	#	cmp	mmerror, 0
	$75 $1E			#	jnz	done
	$FF $36 $CB97w		#	push	word ptr chunkexplen+2
	$FF $36 $CB95w		#	push	word ptr chunkexplen
	$8B $DE			#	mov	bx, si
	$D1 $E3			#	shl	bx, 1
	$FF $B7 $C75Dw		#	push	audiosegs[bx]
	$33 $C0			#	xor	ax, ax
	$50			#	push	ax
	$FF $36 $CB9Dw		#	push	audiohandle
	$0E			#	push	cs
	$E8 $F68Bw		#	call	near ptr CA_FarRead
	$83 $C4 $0A		#	add	sp, 10
				#done:
	$5E			#	pop	si
	$8B $E5			#	mov	sp, bp
	$5D			#	pop	bp
	$CB			#	retf
Aside from reducing the memory requirements, this also means that loading sounds and music is a bit faster, since the Huffman decompression is skipped entirely.
Hail to the K1n9, baby!
http://k1n9duk3.shikadi.net

User avatar
Nisaba
Vorticon Elite
Posts: 1149
Joined: Fri Jan 01, 2016 23:34
Location: The Outpost
Contact:

Re: Operation Ocflore

Post by Nisaba »

ahh, and then there is this "door-protection" bug. "Keen has no sprite collision when entering doors. This has the effect of making him invulnerable to enemy sprites and other deadly tiles while doing so. It also leads to 'door immunity' where any enemy that is touching Keen when he appears from a door cannot hurt him when his collision returns, meaning he is invulnerable to that enemy for a short period of time."
So, you might wanna add some deadly tiles down below there as well.

Image
"We have come to conquer you all and bring you lots of candy!" | about me | my current project: play Keen mods on a GameBoy |

User avatar
K1n9_Duk3
Vorticon Elite
Posts: 630
Joined: Mon Aug 25, 2008 9:30
Location: Germany
Contact:

Re: Operation Ocflore

Post by K1n9_Duk3 »

And there's still a problem with the hitbox of the Snorkel (slug replacement) that can cause it to get stuck after pooping while facing right. It's sprite0193 in uGrab.

And there's another bug in the Keen4 code that also causes issues. Enemies only turn around when the middle of the hitbox is no longer touching ground that they can walk on. The game then undoes the previous left-right movement and moves the enemy by that amount in the other direction. It does not perform any up/down movement at this point. That means if the enemy is forced to turn around while on a slope, the code that tries to move it in the other direction makes it lose contact to the ground and therefore the enemy gets stuck floating in the air.

In the bottom-right corner of map 3, there is a tile hazard (that pink worm thing) right next to a slope. The Snorkel in that area can't walk across the tile hazard and when it turns around, it gets stuck because of the bug in the code. There might be other places with similar layouts as well.

I'll try to find a fix for the bug in the code and I'll post a patch script once I'm done. That way you won't have to change the map layout to avoid these issues.
Hail to the K1n9, baby!
http://k1n9duk3.shikadi.net

User avatar
Nisaba
Vorticon Elite
Posts: 1149
Joined: Fri Jan 01, 2016 23:34
Location: The Outpost
Contact:

Re: Operation Ocflore

Post by Nisaba »

K1n9_Duk3 wrote:
Sat Feb 08, 2020 23:17
[...]
In the bottom-right corner of map 3, there is a tile hazard (that pink worm thing) right next to a slope. The Snorkel in that area can't walk across the tile hazard and when it turns around, it gets stuck because of the bug in the code. There might be other places with similar layouts as well.
[...]
Image
"We have come to conquer you all and bring you lots of candy!" | about me | my current project: play Keen mods on a GameBoy |

User avatar
K1n9_Duk3
Vorticon Elite
Posts: 630
Joined: Mon Aug 25, 2008 9:30
Location: Germany
Contact:

Re: Operation Ocflore

Post by K1n9_Duk3 »

These patches should fix most of the issues related to enemies turning around on or near a slope (assuming the hitbox for sprite 193 is also fixed):

Code: Select all

#generic WalkReact (used by Arachnut, Inchworm and Mimrock)
%patch $B55C
	$83 $7C $0E $01		#	cmp	[si+xdir], 1
	$75 $06			#	jnz	l1
	$83 $7C $3C $00		#	cmp	[si+hitwest], 0
	$75 $12			#	jnz	turn
				#l1:
	$83 $7C $0E $FF		#	cmp	[si+xdir], -1
	$75 $06			#	jnz	l2
	$83 $7C $38 $00		#	cmp	[si+hiteast], 0
	$75 $06			#	jnz	turn
				#l2:
	$83 $7C $36 $00		#	cmp	[si+hitnorth], 0
	$75 $27			#	jnz	draw
				#turn:
	$8B $44 $12		#	mov	ax, [si+xmove]
	$29 $44 $0A		#	sub	[si+x], ax
	$8B $44 $14		#	mov	ax, [si+ymove]
	$29 $44 $0C		#	sub	[si+y], ax
	$F7 $5C $0E		#	neg	[si+objtype.xdir]
	$9A $1D02002Arl		#	call	US_RndT
	$B1 $05			#	mov	cl, 5
	$D3 $F8			#	sar	ax, cl
	$89 $44 $08		#	mov	[si+nothink], ax
	$FF $74 $1C		#	push	[si+state]
	$56			#	push	si
	$9A $09DC120Arl		#	call	ChangeState
	$83 $C4 $04		#	add	sp, 4
				#draw:
	$FF $74 $20		#	push	[si+priority]
	$33 $C0			#	xor	ax, ax
	$50			#	push	ax
	$FF $74 $1E		#	push	[si+shapenum]
	$FF $74 $0C		#	push	[si+y]
	$FF $74 $0A		#	push	[si+x]
	$8B $C6			#	mov	ax, si
	$05 $0046w		#	add	ax, objtype.sprite
	$50			#	push	ax
	$9A $16541641rl		#	call	RF_PlaceSprite
	$83 $C4 $0C		#	add	sp, 0Ch
	$5E			#	pop	si
	$5D			#	pop	bp
	$CB			#	retf

#"safe" WalkRect (don't step onto deadly tiles or pole holes, used by slugs)
%patch $B60E
	$83 $7C $0E $01		#	cmp	[si+xdir], 1
	$75 $06			#	jnz	l1
	$83 $7C $3C $00		#	cmp	[si+hitwest], 0
	$75 $19			#	jnz	turn
				#l1:
	$83 $7C $0E $FF		#	cmp	[si+xdir], -1
	$75 $06			#	jnz	l2
	$83 $7C $38 $00		#	cmp	[si+hiteast], 0
	$75 $0D			#	jnz	turn
				#l2:
	$83 $7C $36 $00		#	cmp	[si+hitnorth], 0
	$74 $07			#	jz	turn
	$F7 $44 $36 $FFF8w	#	test	[si+hitnorth], not 7	
	$74 $27			#	jz	draw
				#turn:
	$8B $44 $12		#	mov	ax, [si+xmove]
	$29 $44 $0A		#	sub	[si+x], ax
	$8B $44 $14		#	mov	ax, [si+ymove]
	$29 $44 $0C		#	sub	[si+y], ax
	$F7 $5C $0E		#	neg	[si+objtype.xdir]
	$9A $1D02002Arl		#	call	US_RndT
	$B1 $05			#	mov	cl, 5
	$D3 $F8			#	sar	ax, cl
	$89 $44 $08		#	mov	[si+nothink], ax
	$FF $74 $1C		#	push	[si+state]
	$56			#	push	si
	$9A $09DC120Arl		#	call	ChangeState
	$83 $C4 $04		#	add	sp, 4
				#draw:
	$FF $74 $20		#	push	[si+priority]
	$33 $C0			#	xor	ax, ax
	$50			#	push	ax
	$FF $74 $1E		#	push	[si+shapenum]
	$FF $74 $0C		#	push	[si+y]
	$FF $74 $0A		#	push	[si+x]
	$8B $C6			#	mov	ax, si
	$05 $0046w		#	add	ax, objtype.sprite
	$50			#	push	ax
	$9A $16541641rl		#	call	RF_PlaceSprite
	$83 $C4 $0C		#	add	sp, 0Ch
	$5E			#	pop	si
	$5D			#	pop	bp
	$CB			#	retf

#BerkeloidWalkReact
%patch $10E17
	$83 $7C $0E $01		#	cmp	[si+xdir], 1
	$75 $06			#	jnz	l1
	$83 $7C $3C $00		#	cmp	[si+hitwest], 0
	$75 $12			#	jnz	turn
				#l1:
	$83 $7C $0E $FF		#	cmp	[si+xdir], -1
	$75 $06			#	jnz	l2
	$83 $7C $38 $00		#	cmp	[si+hiteast], 0
	$75 $06			#	jnz	turn
				#l2:
	$83 $7C $36 $00		#	cmp	[si+hitnorth], 0
	$75 $27			#	jnz	draw
				#turn:
	$8B $44 $12		#	mov	ax, [si+xmove]
	$29 $44 $0A		#	sub	[si+x], ax
	$8B $44 $14		#	mov	ax, [si+ymove]
	$29 $44 $0C		#	sub	[si+y], ax
	$F7 $5C $0E		#	neg	[si+objtype.xdir]
	$9A $1D02002Arl		#	call	US_RndT
	$B1 $05			#	mov	cl, 5
	$D3 $F8			#	sar	ax, cl
	$89 $44 $08		#	mov	[si+nothink], ax
	$FF $74 $1C		#	push	[si+state]
	$56			#	push	si
	$9A $09DC120Arl		#	call	ChangeState
	$83 $C4 $04		#	add	sp, 4
				#draw:
	$E9 $FF5Dw		#	jmp	cs:05BC

While testing the patch, I came across this snorkel in level 4:
Image
The enemy is placed too close to the slope and will always get stuck immediately after it is spawned. You should move it 1 tile to the left. There might be other issues like this, I haven't checked every level.

I was playing with godmode enabled and noticed that the wormouth replacement can also get stuck sometimes if it attacks Keen while on a slope. But I don't think that's a big issue. Chances are that the wormouth will kill Keen when it attacks without getting stunned first, so if it gets stuck after that, it won't matter anyway.
Hail to the K1n9, baby!
http://k1n9duk3.shikadi.net

User avatar
Tormentor667
Vortininja
Posts: 148
Joined: Sat Mar 29, 2008 14:08
Location: Germany
Contact:

Re: Operation Ocflore

Post by Tormentor667 »

At least the nazis from Blade of Agony know what a good mod is...
Image

User avatar
Nisaba
Vorticon Elite
Posts: 1149
Joined: Fri Jan 01, 2016 23:34
Location: The Outpost
Contact:

Re: Operation Ocflore

Post by Nisaba »

Tormentor667 wrote:
Mon Feb 10, 2020 18:32
At least the nazis from Blade of Agony know what a good mod is...
astonishing and disturbing at the same time

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

Discovered an empty secret in level 7

Image . . Image
"We have come to conquer you all and bring you lots of candy!" | about me | my current project: play Keen mods on a GameBoy |

Post Reply