Code Monkey home page Code Monkey logo

gerstrong / commander-genius Goto Github PK

View Code? Open in Web Editor NEW
189.0 189.0 36.0 154.14 MB

Modern Interpreter for the Commander Keen (Vorticon Dreams and Galaxy) and also Cosmos Cosmic Adventure games. This is a mirror repo: The main gitlab repository is at: https://gitlab.com/Dringgstein/Commander-Genius

Home Page: http://clonekeenplus.sourceforge.net/

License: Other

Objective-C 0.09% C 27.80% C++ 70.64% Shell 0.12% CMake 1.21% Python 0.05% Lua 0.10%
c c-plus-plus commander dos keen lua

commander-genius's People

Contributors

a-detiste avatar akien-mga avatar albertz avatar chewi avatar clobber avatar davince avatar eliasoenal avatar fabiololix avatar gerstrong avatar h3xx avatar hasufell avatar jengelh avatar jjustra avatar leereilly avatar mewingtree avatar pelya avatar pickle avatar pizza2004 avatar rohit-n avatar tulip81 avatar z33ky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

commander-genius's Issues

Gamestate save and loading engine needs rework

Yeah, we have gamestates already but we need a data structure that will guarantee better up and downwards compatibility every time we improve our code.

So I want serialize the classes read/write into/from XML (simple format)

After this gzip will compress/decompress them.

Android 49 Khz SDL Audio Issue

(21:26:28) ny00123: Oh hi
(21:26:43) ny00123: Think I should report some bug with great consequences...
(21:27:09) ny00123: It's about the Android port. I've felt a feeling this would be problematic since I recall a crash of some DOSBox port with a similar test.
(21:27:32) ny00123: Anyway... know where you select the sound sample rate? At some point I've added 49716 (Hz) to the list. Mainly useful where there is OPL music.
(21:27:45) ny00123: However, once you select it on the Android port and apply that...
(21:28:08) ny00123: I think that CG simply won't work as expected, often crashing or getting stuck; Even after any restart, since the setting appears to be saved.
(21:28:42) ny00123: Going to the app manager, removing app settings doesn't help; Neither does uninstalling and then reinstalling.
(21:28:51) ny00123: So what is the way to revert the change? Well,
(21:29:39) ny00123: ..hmm need to find that again..will happen no worry! some folder..
(21:29:52) ny00123: ok think it's found
(21:29:58) ny00123: On the (internal in my case) SD Card
(21:30:18) ny00123: go to /app-data/net.sourceforge.clonekeenplus/SaveData
(21:30:24) ny00123: and you'd find a copy of cgenius.cfg. This should be removed.
(21:30:57) ny00123: For some reason I also have a similar "SaveData2" folder, which had the same kinds of files before but cgenius.cfg is missing now. Maybe I played with it once for a very different and random reason...

Build issue on Linux64 (probably Linux32 as well)

After running

cmake -DBUILD_TYPE=LINUX64
make

I'm getting a linker failure because the "build/Linux64/CGenius" directory doesn't exist. I think this is because of the change to "build.cmake" in commit 2c00f68. "build/LINUX64" is being created rather than "build/Linux64"

Sorry I can't provide a patch, but I'm stuck at work now.

A few galaxy monster tweaks

Poison slug: Slug poison disappears way too fast.

Skypest: sitting on the ground it shouldn't be deadly if you walk into it. Also it seems too predictable so far (at least the first one in keen 7 I've seen was always doing the exact same flight at the exact same moment every time I entered that level)

Mad Mushroom: little hops of it are too short. True that it has short and tall hops, but the short ones are barely noticeable in CG.

Keen 1 Butler Bot

Some butler bots seem to spawn wrongly sometimes
Level 16 had the one just below the vorticon stuck inside the ice once. This issue is not easy to replicate though, since it only seems to happen from time to time.
May cause misspawned other monsters troughout Keen vorticons, I'm not sure.

The Ripped Mod support

Only minor problems here:

  1. in some mods only the upper half of the bullet sprite is displayed in the hud (Keen Y, the Ripped Mod), and the bullet isn't that big.
    The bullet sprite is probably drawn from the top left, everything to big on the right and bottom gets cut. Maybe (since almost all bullets are symmetric) it would be better to draw from the middle of the sprite and remove all that is too big from all edges if that isn't too complicated.
  2. Custom itemcheat/godmode cheatcodes aren't supported yet.

Keen 3 Meep

Meeps don't shoot at all, and don't push keen, so it's basically without function so far.

Underwater AI Bundle Keen 4

Dopefish:

  • He eats keen and schoolfish, snaps and burps only when he gets one of the two. He should bite when he gets something, not when he's merely near something.

Mine:

  • moves too slow compared to original

Sprite:

  • Shoots too fast, and moves too much up and down

Schoolfish:

  • Moves waaay too fast, like several times the original speed

Keen swimming problem:

  • the up arrow doesn't let keen swim upwards in CG. I original it is as simple as this: You can move in every direction with the arrow keys, if you press the jump button additionally you'll simply move faster into that direction, jump arrow alone doesn't do anything.

Other things related:
I noticed that when running Well of Wishes on normal in CG there are some enemies missing compared to original, for example the first sprite, and some schoolfish but maybe others too.

Rising Points/Palette Patch coordination

Atm rising points 100 and 1000 has problems with the palette patch and displays as a grey blob.#

Sorry, cannot not fix that right now, because the TGA load code really sucks. When we integrate SDL_Image, this bug will go away

Mad Mushroom AI Keen 4

The Mad Mushroom should bounce low twice before bouncing high.

Pattern: 2x low, 1x high

Message boxes in Keen 4

Currently I found 2 problems with the message boxes:

  • When you die, the try again window formatting is wrong, it's left bound as opposed to centered.
  • When you finish a level the "Keen enters the Shadowlands" message is missing

New Game problem while playing

New game doesn't work when you are currently in a game in CG, you need to end the game first.
I think it New game should end the running game automatically (show a message: You're currently in a game, do you want to end it?)

Ability to load Levelpacks and Mods easily.

We need to devise a system to allow easy levelpack and mod loading, so as to not require different 'games' in the list to load level packs.

milestone changed from Version 0.3.2 to Version 0.4

I don't think in seven days this can be done... so moving it
Changed 19 months ago by pizza2004

description modified (diff)
summary changed from Ability to load Levelpacks easily. to Ability to load Levelpacks and Mods easily.

We could make a submenu. If you select a game and it detects level packs or multiple patch files for that game then it will load them instead.
Changed 15 months ago by tulip81

I think for full mods a submenu isn't feasible, and not even preferable, because they often incorporate stand-alone episodes.

For pure levelpacks, I'd see it as a good solution to have a submenu: put all the files needed for a levelpack (i.e. all the files that differ from the original episode or mod, levels usually, but sometimes storytxt or helpfiles) in a subfolder of the episode, and have CG read those subfolders automatically, and if they exist, offer that submenu with the names of those subfolders.
Changed 8 months ago by gerstrong

milestone changed from Version 0.4 to Version 0.5

Hmm. I will move that suggestion, because I don't understand the plans right here. It sounds a bit like the system we use HQP, just by picking what you jus find in the folders

Maybe someone can explain better what is really meant or even make a plan how to deploy that...

AI "Red" bundle Keen 4

This is just a code name.

Following AIs have to go into the code:

Blue Bird
Thundercloud
Wormouth

Status screen only shows for a split-second

When I press return to show the status screen while playing, it only shows for a split-second before disappearing. Running git as of commit b74a01d.

The problem seems to be caused by g_pInput->getPressedAnyCommand() returning a pressed status key for player 4 (this is in single-player mode).

As a temporary fix I have changed CPlayer::drawStatusScreen() to only check g_pInput->getPressedAnyCommand(m_Index), as shown below. Whether this is a correct solution, I do not know. Perhaps it would be better if the player 4 return key would get cleared properly (or not set at all).

Temporary fix:

--- a/src/common/CPlayer.cpp
+++ b/src/common/CPlayer.cpp
@@ -867,7 +867,7 @@ bool CPlayer::drawStatusScreen()
delete mp_StatusScr;
mp_StatusScr = NULL;
}

  •           else if( g_pInput->getPressedAnyCommand() )
    
  •           else if( g_pInput->getPressedAnyCommand(m_index) )
            {
                    mp_StatusScr->close();
                    g_pInput->flushCommands();
    

Replay function for CG

So since we have to have the demo function for Galaxy, why not enlarge it to a full-blown replay feature, similar to games like Starcraft.
We mainly need to add a save/load option for the demos.

Message boxes are too easy to dismiss

I tend to jump around a lot when playing, and this often causes me to close message boxes as soon as they show up. These often/normally only show up once, slightly ruining the game experience, as I like reading them.

I propose three different solutions to this:

  1. Add a time delay, i.e. a minimum amount of time that the message box must be displayed.
  2. Only allow closing the message box with certain keys that aren't pressed during movement, e.g. the status key.
  3. A combination of both, where the newly added g_pInput->getPressedAnyButtonCommand() method is used to detect keypresses.

I don't know whether this is an issue only with the message boxes I have encountered, or if it's a general issue, so I am reporting it as a general issue for now.

No video output on Arch Linux 64

When running the latest Commander Genius git on Arch Linux 64bit, (retrieved from the AUR -- https://aur.archlinux.org/packages.php?ID=47694), I receive no video output after running "CGenius". I see a large black window titled "Commander Genius (CKP)", but I cannot seem to interact with this black window.

I've attached my "~/.CommanderGenius/CGLog.html" file to a gist here: https://gist.github.com/3124927

i'm using all of the latest Arch Linux packages for software (http://www.archlinux.org/packages/). Please let me know if there is anything I can do to assist in diagnosing this issue. Thanks!

Vorticons Textbox size

In Keen 1 the Ending textboxes seem just a little bit too small at the bottom. I've felt a similar problem at the Keen 3 ending, but less grave.

AI "Blue" bundle Keen 4

Blue stands for code name.

Following AI has to go into CG:

Berkeloid
Blue Bird egg
Inch Worm
Treasure Eater
Arachnut

Controls are not saved.

(10:15:15) ny00123: Hmm I think that the modified controls for the second player are not saved on quit :o
(10:15:23) ny00123: Let's check for the primary player.
(10:16:04) ny00123: Not saved for me either (a directional control). Guess that's another bug to report :)

Improper text for number of players

When you go to start a new game and select the number of players it should say 1 Player, 2 Player, 3 Player, and 4 Player, not Player 1, etc. I looked at it and tried to figure out how to change it myself, but I wasn't sure, so I decided to post it here.

Slug AI Keen 4

  1. slug moves too slow compared to original
  2. slug should turn around if she slimes while keen stands behind her
  3. slug slime dissolve animation too fast, and it drops a little bit to far in front of the slug

glitches

DGargs run the other way. Robot gets stuck in some levels and is easy to walk by. The tall robots that shoot lasers are impossible to get by and the sounds in episode 2 and 3 of invasion of the vorticons are all screwed up. Love keen best game

Ugly credits

Credits have an ugly grey background. Nicer would be transparent. I'm not sure how to make CG detect the right colour for being transparent in the credits. Maybe through mapping to the blank tile in the character tileset.

Fix the camera class to properly move the camera according to all players

I think that having it deliver all the information needed to the above class from all the players, then initiate a CCamera class to move the camera, using all the knowledge obtained to determine what area to show.

This would probably work better for multiplayer. All I would need if we could get this working with the camera, is for the players to collide with the sides and top of the screen, and die if they fall too far off the bottom.

Crash: Keen1, new game, hard

This exact sequence leads to the crash. HQP wasn't used, the game from the git tree. Version is git HEAD.

...
n: Looking for games/keen1/level90.ck1 ... found!
n:
n: MapLoader: file level90.ck1 opened. Loading...
n: Starting timer driver...
n:
n: Looking for games/keen1/songlist.lst ... missing, but not needed!
n:
n: Looking for global/music/table.cfg ... missing, but not needed!
n:
n: Looking for games/keen1/level80.ck1 ... found!
n:
n: MapLoader: file level80.ck1 opened. Loading...
*** glibc has detected an error in CGenius: free(): invalid pointer: 0x00000000014f7100 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x79466)[0x7f5982868466]
/usr/lib64/libSDL-1.2.so.0(SDL_FreeSurface+0xed)[0x7f59835f4b5d]
CGenius(_ZN10CGUIDialogD1Ev+0x119)[0x5bd4f9]
CGenius(_ZN9CLoadMenuD0Ev+0xf9)[0x4ad9b9]
CGenius(_ZN13OpenMenuEventD0Ev+0x37)[0x4b2b97]
CGenius(_ZN10CGUIButtonD0Ev+0x127)[0x5b96d7]
CGenius(_ZN10CGUIDialogD1Ev+0x7f)[0x5bd45f]
CGenius(_ZN9CMainMenuD0Ev+0xf9)[0x4b2e99]
CGenius(_ZN15CMenuController7processEv+0xed7)[0x4b5ed7]
CGenius(_ZN5CGame3runEv+0x4b)[0x443e9b]
CGenius(main+0xe4)[0x442f24]
/lib64/libc.so.6(__libc_start_main+0xed)[0x7f598281072d]
CGenius[0x44346d]
======= Memory map: ========
00400000-0063e000 r-xp 00000000 fd:04 1182039 /usr/games/CGenius
0083e000-0083f000 r--p 0023e000 fd:04 1182039 /usr/games/CGenius
0083f000-00843000 rw-p 0023f000 fd:04 1182039 /usr/games/CGenius
00843000-0165d000 rw-p 00000000 00:00 0 [heap]
7f595c000000-7f595c113000 rw-p 00000000 00:00 0
7f595c113000-7f5960000000 ---p 00000000 00:00 0
7f5964000000-7f596411c000 rw-p 00000000 00:00 0
7f596411c000-7f5968000000 ---p 00000000 00:00 0
7f596bfff000-7f5970000000 rw-s 00000000 00:10 60415058 /dev/shm/pulse-shm-2219952158
7f5970000000-7f5970021000 rw-p 00000000 00:00 0
7f5970021000-7f5974000000 ---p 00000000 00:00 0
7f5976ce2000-7f5976ce3000 ---p 00000000 00:00 0
7f5976ce3000-7f59774e3000 rw-p 00000000 00:00 0 [stack:12396]
7f59789f6000-7f59793f6000 rwxp 00000000 00:00 0
7f59793f6000-7f59793f7000 ---p 00000000 00:00 0
7f59793f7000-7f5979cf8000 rw-p 00000000 00:00 0 [stack:12397]
7f5979cf9000-7f5979d79000 rw-s 22c71c000 00:05 9583 /dev/dri/card0
7f5979df9000-7f5979e79000 rw-s 22c21f000 00:05 9583 /dev/dri/card0
7f5979e79000-7f5979e7e000 r-xp 00000000 fd:04 132420 /usr/lib64/libdrm_nouveau.so.1.0.0
7f5979e7e000-7f597a07d000 ---p 00005000 fd:04 132420 /usr/lib64/libdrm_nouveau.so.1.0.0
7f597a07d000-7f597a07e000 r--p 00004000 fd:04 132420 /usr/lib64/libdrm_nouveau.so.1.0.0
7f597a07e000-7f597a07f000 rw-p 00005000 fd:04 132420 /usr/lib64/libdrm_nouveau.so.1.0.0
7f597a07f000-7f597a0a7000 r-xp 00000000 08:05 2310 /lib64/libexpat.so.1.5.2
7f597a0a7000-7f597a2a7000 ---p 00028000 08:05 2310 /lib64/libexpat.so.1.5.2
7f597a2a7000-7f597a2a9000 r--p 00028000 08:05 2310 /lib64/libexpat.so.1.5.2
7f597a2a9000-7f597a2aa000 rw-p 0002a000 08:05 2310 /lib64/libexpat.so.1.5.2
7f597a2d3000-7f597a2d4000 rw-s 22c18e000 00:05 9583 /dev/dri/card0
7f597a2d4000-7f597b083000 r-xp 00000000 fd:04 133627 /usr/lib64/X11/modules/dri/nouveau_dri.so
7f597b083000-7f597b283000 ---p 00daf000 fd:04 133627 /usr/lib64/X11/modules/dri/nouveau_dri.so
7f597b283000-7f597b2f4000 r--p 00daf000 fd:04 133627 /usr/lib64/X11/modules/dri/nouveau_dri.so
7f597b2f4000-7f597b2ff000 rw-p 00e20000 fd:04 133627 /usr/lib64/X11/modules/dri/nouveau_dri.so
7f597b2ff000-7f597b4e4000 rw-p 00000000 00:00 0
7f597b4e4000-7f597b4ed000 r-xp 00000000 fd:04 132026 /usr/lib64/libXcursor.so.1.0.2
7f597b4ed000-7f597b6ed000 ---p 00009000 fd:04 132026 /usr/lib64/libXcursor.so.1.0.2
7f597b6ed000-7f597b6ee000 r--p 00009000 fd:04 132026 /usr/lib64/libXcursor.so.1.0.2
7f597b6ee000-7f597b6ef000 rw-p 0000a000 fd:04 132026 /usr/lib64/libXcursor.so.1.0.2
7f597b6ef000-7f597b763000 rw-p 00000000 00:00 0
7f597b76d000-7f597b7ed000 rwxp 00000000 00:00 0
7f597b7ed000-7f597b7ee000 ---p 00000000 00:00 0
7f597b7ee000-7f597bfee000 rw-p 00000000 00:00 0 [stack:12394]
7f597bfee000-7f597bfef000 ---p 00000000 00:00 0
7f597bfef000-7f597c7ef000 rw-p 00000000 00:00 0 [stack:12393]
7f597c7ef000-7f597c7f0000 ---p 00000000 00:00 0
7f597c7f0000-7f597cff0000 rw-p 00000000 00:00 0 [stack:12392]
7f597cff0000-7f597cff1000 ---p 00000000 00:00 0
7f597cff1000-7f597d7f1000 rw-p 00000000 00:00 0 [stack:12391]
7f597d7f1000-7f597d7f2000 ---p 00000000 00:00 0
7f597d7f2000-7f597dff8000 rw-p 00000000 00:00 0 [stack:12390]
7f597dff8000-7f597e00c000 r-xp 00000000 08:05 3350 /lib64/libresolv-2.16.so
7f597e00c000-7f597e20b000 ---p 00014000 08:05 3350 /lib64/libresolv-2.16.so
7f597e20b000-7f597e20c000 r--p 00013000 08:05 3350 /lib64/libresolv-2.16.so
7f597e20c000-7f597e20d000 rw-p 00014000 08:05 3350 /lib64/libresolv-2.16.so
7f597e20d000-7f597e20f000 rw-p 00000000 00:00 0
7f597e20f000-7f597e4c2000 r-xp 00000000 fd:04 133217 /usr/lib64/libvorbisenc.so.2.0.9
7f597e4c2000-7f597e6c1000 ---p 002b3000 fd:04 133217 /usr/lib64/libvorbisenc.so.2.0.9
7f597e6c1000-7f597e6dd000 r--p 002b2000 fd:04 133217 /usr/lib64/libvorbisenc.so.2.0.9
7f597e6dd000-7f597e6de000 rw-p 002ce000 fd:04 133217 /usr/lib64/libvorbisenc.so.2.0.9
7f597e6de000-7f597e728000 r-xp 00000000 fd:04 131230 /usr/lib64/libFLAC.so.8.2.0
7f597e728000-7f597e928000 ---p 0004a000 fd:04 131230 /usr/lib64/libFLAC.so.8.2.0
7f597e928000-7f597e929000 r--p 0004a000 fd:04 131230 /usr/lib64/libFLAC.so.8.2.0
7f597e929000-7f597e92a000 rw-p 0004b000 fd:04 131230 /usr/lib64/libFLAC.so.8.2.0
7f597e92a000-7f597e93f000 r-xp 00000000 08:05 3300 /lib64/libnsl-2.16.so
7f597e93f000-7f597eb3e000 ---p 00015000 08:05 3300 /lib64/libnsl-2.16.so
7f597eb3e000-7f597eb3f000 r--p 00014000 08:05 3300 /lib64/libnsl-2.16.so
7f597eb3f000-7f597eb40000 rw-p 00015000 08:05 3300 /lib64/libnsl-2.16.so
7f597eb40000-7f597eb42000 rw-p 00000000 00:00 0
7f597eb42000-7f597eb47000 r-xp 00000000 fd:04 133346 /usr/lib64/libasyncns.so.0.0.0
7f597eb47000-7f597ed46000 ---p 00005000 fd:04 133346 /usr/lib64/libasyncns.so.0.0.0Аварийный останов

Multiplayer Problems

The scrolling in multiplayer is erratic and needs fixing. We need to:

  • Make it more dynamically scroll to fit all players.
  • Make players collide with the side of the screen.
  • Make all players always visible via these methods.

Also, when I was playing multiplayer with my friend, and encountered more bugs than should ever happen:

  • It has problems with jumping and things like that in multiplayer.
  • It had graphical glitches like one player disappearing.
  • It almost seems to have problems with accepting the input given to it.

These things worry me, and as such I'm suppending all work on Multiplayer. It has too many bugs, and would require yet another engine rewrite to function properly.

Vorticon jumping behaviour problem

Vorticon getting stopped by a wall won't stop jumping when keen is behind that wall. (easiest see keen 1 level16) Happens with all vorticons from 1-3.
This makes the vorticon very predictable in certain situations, and makes it harder to dodge in others.

Info Menu convenience

When I exit an item inside the info menu with esc I'm back at the main menu. Better would be the info menu.

Video menu screen fitting problem

When I exit the video options menu with maximized window I have to re-minimize/maximize to get CG to re-fit the screen. Happens in both, vorticons and galaxy

Read Sprite(AI) speeds from the exe-file

The attached document shows, how speeds for mods can be modified. Teach CG to read those values and convert them.



4.) Sprite speeds and jump heights:


This section deals with the speeds of sprites and how hight/fast they can jump.
Unlike previous sections, these are listed by sprite, as each sprite has its own
speeds that can bet set to any value you desire, wheras previous patches required
specific values that were used by individual sprites.

Some special notes on behaviour should be noted:

Some sprites do not move and thus cannot be patched to move [at least yet]

Some sprites can move diagonally and thus have two speed values for the diagonal
speed [Horizontal and vertical speeds] Note that if you want Keen's and the robot's
shots to move diagonally, give them the small icecubettes behaviour]

Some speeds are $FF $FF [Zero speed] MINUS the actual speed. Such speeds are called
'negative' and they make a sprite move left, [unlike 'positive' speeds which make a
sprite move right] This is slightly deceptive though, for a sprites speed does not
always dictate direction. For example, altering the Gargs speed to negative will
not make it always move left, but will make it move away from Keen! [The reverse
'negative' of its normal behaviour]

Most sprites have an 'initial' speed, a speed that the sprite uses when it is first
created, but never again. This is important to patch when you want to change the
direction a sprite starts moving in. For example, the Butler Bot starts off moving
$5A $00, or right when it is first created, changing this to a 'negative' value makes
it move left when first created, something that may be very useful in certain
situations, such as if Keen starts a level near the sprite and you want it to head
towards him. Also, since this is an additional speed, you can make a sprite rush
around madly [or crawl slowly] initially, and then move at a different speed later.
[For example you can make a sprite appear 'sleepy' at first, but faster when it '
wakes up'

The Vorticon has many poorly defined speeds that take part in a complex pseudo-random
set of 10 subroutines. This makes it very hard to make it do what you want, so when
in doubt, patch all the speeds.

The Yorp's and Vorticon's speeds may depend on wether they are left or right of Keen,
for example, the Yorp heads toward Keen, reversing its speeds will make it run away
from him.

Speed is byte $40 or $4C (Horizontal) or byte 42 (Vertical) thus you can change a speed
from h to v by patching the byte two before a speed.


*Tank Bot:


%patch $1747 90 #Initial speed -right
%patch $1F2B -90 #Tank bot 'normal' left speed
%patch $2019 90 #Tank bot 'normal' right speed
%patch $1EFD 0 #Speed when pausing before shooting [Standing still]


Butler Bot:


%patch $17A5 90 #Initial speed, left and right [Initially moves right]
%patch $1E4B 90 #Speed after hitting left wall
%patch $1E31 -90 #Speed after hitting right wall


*Vorticon:


Vort initial speeds, towards Keen

%patch $1832 -90 #Minor, initial speed of Vorticons left of Keen (Towards him)
%patch $1839 90 #Minor, initial speed of Vorticons right of Keen (Towards him)
%patch $1CA4 90 #Minor; Secondary speed of Vorticons right of Keen
%patch $1C94 -90 #Minor; Speed 2
%patch $1D10 90 #Minor; Speed 3
%patch $1CB7 -90 #Major; Normal left speed of Vorticons left of Keen 1
%patch $1C9C 120 #Major; Normal right speed of Vorticons left of Keen 2
%patch $1D41 90 #Major; Speed of vorticons right of Keen
%patch $1C8C -120 #Major; Normal left speed
%patch $1D04 -90 #Minor; Jumping and bouncing off walls
%patch $1D1C 0 #Major; Speed when looking around. [Still]
%patch $1CC3 90 #Minor; When using jump animation on ground
%patch $1C49 $2C $01 #Jump height


*Gargs:


No initial speed

%patch $1B58 0 ##Speed when Garg looking around [in this case, standing still]
%patch $1BA7 60 #Left AND right speed after looking around, changes when Garg hits a wall
%patch $1B9F 220 #Left AND right speed when charging toward Keen
%patch $1B1E 60 #Right speed after touching a left wall
%patch $1B12 -60 #Left speed after touching right wall

%patch $1B37 220 #Garg ONLY jumps if moving at this speed (Charging)
%patch $1B4C -220 #Height Garg jumps when chasing Keen over a cliff
%patch $1B39 $74 #Garg always jumps, whether it's running or not:


Yorp:


%patch $18CD 60 #Initial speed for Yorps left of Keen [Towards Keen]
%patch $18D4 -60 #Initial speed for Yorps right of Keen [Towards Keen]
%patch $1A1C -60 #Speed towards Keen of Yorps right of Keen after Yorp looks for Keen
%patch $1A14 60 #Speed towards Keen of Yorps left of Keen after Yorp looks for Keen
%patch $19CE 60 #Right speed of Yorp after Yorp hits left wall
%patch $19C2 -60 #Left speed of Yorps after Yorp hits right wall
%patch $19DA 0 #Speed used when Yorp looking around [Standing still]
%patch $1A5E 0 #Speed of stomped sprite [Standing still]
%patch $1964 128 #Sprite jump height


Icecubes:


Up right icecube

%patch $2110 $38 $FF #Up speed
%patch $2115 $C8 $00 #Right speed

Up icecube

%patch $211C $38 $FF #Up speed

Down icecube

%patch $2128 $C8 $00 #Down speed

Up left icecube

%patch $2134 $38 $FF #Up speed
%patch $2139 $38 $FF #Left speed


Icecubettes:


down right icecubette

%patch $21D9 $2C $01 #Speed right
%patch $21DE $2C $01 #Speed down

up right icecubette

%patch $2215 $2C $01 #Speed right
%patch $221A $D4 $FE #Speed up

Down left icecubette

%patch $2251 $D4 $FE #Speed left
%patch $2256 $2C $01 #Speed down

Up left icecubette

%patch $228D $D4 $FE #Speed left
%patch $2292 $D4 $FE #Speed up


Keens shot:


%patch $46EE $00 $00 #Speed down [i.e, none]
%patch $4704 $90 $01 #Speed right for Keen's right shot
%patch $4779 $70 $FE #Speed left for Keen's left shot


Keen:


%patch $3BAC $06 $00 #Keen's jump height [in half tiles]
%patch $3F40 $C8 $00 #Keen's pogo height
%patch $3F3C $FF $FF #Keen's high pogo height [-ve; Make this larger he pogoes lower, make it less, liek $FF $FE and he pogoes higher!]

%patch $410D $3C $00 #How fast Keen walks when exiting levels

patchwork mod 1 support

ok this should be accomplished fairly easy:
Basically these three patches have to be supported:

Change tank bot's shooting height in Keen 1.

%patch $4900 $16

Change the strength of the vorticon replacement.

%patch $180D $02
(this changes the shots the vort needs to 3)

Change the strength of the last level vorticon replacement.

%patch $1819 $04
(this changes the shots the vorticon commander on level 16 needs to 5)

And a small patch that isn't that vital:

When using c + t + space cheat in Keen 1, set Keen's ammo to 1234.

%patch $E03 $D2 $04

However, there are a few patches I don't really get what they're doing, I'll post them here for later reference, but I don'k now yet if they're needed in CG:

Set all Keen's keycards to zero. Use $01 if you want to give Keen all the keycards.

%patch $E11 $00

Change one eye-tile. :p

%patch $4547 $3B $01

Change some tiles.

%patch $1166 $4F $02
%patch $11A7 $9E $01

highscore table tiles i.e dd 00 =oodd = hex num

%patch $992A $90 $00 # Joystick
%patch $995D $94 $00 # Battery
%patch $9990 $98 $00 # Vacuum cleaner
%patch $99C3 $CC $00 # Whisky bottle

NOTE: Some Stuff is already done, but not everything!

Laptop accelerometer joystick device breaks control settings

In linux, my laptop's accelerometer is added as a joystick input device. When I try to change any of the keys in the input settings in Commander Genius, events from this joystick device are immediately set as the new key, regardless of what key I'm pressing.

The "Analog movement" setting is off, and I am using git as of commit 4c4bde3.

The issue seems to be in CInput::readNewEvent(), which does not check the value of isAnalog(device) before returning. A proposed solution for this is in the following patch:
http://vegar.beplacid.net/~vegar/files/cg_input.diff

The patch adds a check, if( isAnalog(device) ), before returning any joystick events from CInput::readNewEvent(). However, this introduces a different issue. When changing the value of the "Analog movement" setting in the GUI, I have to close the input setting window so that CControlsettings::release() is ran before the button settings receive joystick events again.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.