Release GearHead 2


The proposed controls sound good. Thanks for working on this!
 
Hum, can you download them again, looks like corrupted PND to me (I'll try download them on a fresh Pandora too).

*EDIT* Tested on a CC. Freshly installed from PNDManager, and it runs. So don't know what to say :( Re-download in case of corruption.
I tried downloading this and ARENA on my 1 gigs and same thing on both. Downloaded each 3x...I am not joking and would never joke about this..3x same thing. :eek:

All I can say is other than seeing the game in my menu it is like everything else is invisible. <_<

I wish someone else with a 1 gig would report...if that means anything??...GB vs CC ??

I do have the new firmware though and it is better ...sorry ..off topic. :blink:   :p
I tested it on the 3 Pandora models. The GHz model is my dev Pandora. That is very strange. you should at least have a pnd out in "/tmp/pndrun_gearhead2.out".

If you don't, that means the PND is not launching. It can be caused by a corrupted PND (but if you see it in the menu, it's unlikely) or something else (but no ideas what). Have you tried rebooting also?
yes...i tried rebooting. 

i thank you for your correspondence. I am sure there must be something incorrect with these particular games that has to do with me.

i am sorry but I cannot figure this one out. :(

I am glad others are enjoying this .
What is even stranger is that "Dungeon Monkey Unlimited" is a PND just like the 2 other GearHead. A soft compiled with FreePascal, with just SDL as dependancy.
and I play Dungeon Monkey Unlimited very well ..thankfully :)  . I like that game ..All I can say is that I have absolutely no clue or reason for this. Both Gear Heads did the same for me on 2 different 1 gig Pandoras I own. Loaded ///reloaded and rebooted 3x each one. I use XFCE and the latest firmware...finally  :p
 
Last edited:
New build on the repo. I tried to customized mechs controls. Please test and tell me if there are ok.

Mech controls:

{A} : Turn left

{B} : Turn right

{Y} : NormSpeed

{X} : Reverse

 0  : FullSpeed

backspace : FullStop

 
Build 02

----------

  • Customized Mech controls. Non-mech controls staid the same (DPad, non-dIagonal).
 
Last edited by a moderator:
Thanks! But only 0 and Backspace seem to work, A/B/X/Y do nothing. Did remove my old gearhead.cfg from appdata beore the update and a new one got created with the A/B/X/Y bindings saved as a literal ? (hex 3f; checked with od -t x1a). Perhaps the problem is that it can't serialize Home/End/PgUp/PgDwn?


I'm sorry to have bothered you with this, because now it is less playable for new downloaders, which is a shame. Perhaps it is best to just map the directions to the number keys and keep the other bindings as default?
 
Hum, let me explain what I've done.
In the file ui4gh.pp, I founded the keycodes for moving, they are in two parts. The first defined the "standard movement", at the begining, with a special case for ASCII version
 

 

type
KeyMapDesc = Record
CmdName,CmdDesc: String;
isacommand: Boolean; { Return TRUE if this key is a command. }
KCode: Char;
end;
 
 
const
{$IFDEF ASCII}
RPK_UpRight = '9';
RPK_Up = '8';
RPK_UpLeft = '7';
RPK_Left = '4';
RPK_Right = '6';
RPK_DownRight = '3';
RPK_Down = '2';
RPK_DownLeft = '1';

 
FrameDelay: Integer = 30;

{$ELSE}
RPK_UpRight = #$89;
RPK_Up = #$88;
RPK_UpLeft = #$87;
RPK_Left = #$84;
RPK_Right = #$86;
RPK_DownRight = #$81;
RPK_Down = #$82;
RPK_DownLeft = #$83;
RPK_MouseButton = #$90;
RPK_TimeEvent = #$91;
RPK_RightButton = #$92;

 
FrameDelay: Integer = 0;

{$ENDIF}
 
Here you can see direction are code with their hex equivalent.
 
Than all other action keys are defined :

    NumMappedKeys = 51;
    KeyMap: Array [1..NumMappedKeys] of KeyMapDesc = (
    (    CmdName: 'NormSpeed';
        CmdDesc: 'Travel foreword at normal speed.';
        IsACommand: True;
        KCode: '=';    ),
    (    CmdName: 'FullSpeed';
        CmdDesc: 'Travel foreword at maximum speed';
        IsACommand: True;
        KCode: '+';    ),
    (    CmdName: 'TurnLeft';
        CmdDesc: 'Turn to the left.';
        IsACommand: True;
        KCode: '[';    ),
    (    CmdName: 'TurnRight';
        CmdDesc: 'Turn to the right.';
        IsACommand: True;
        KCode: ']';    ),
    (    CmdName: 'Stop';
        CmdDesc: 'Stop moving, wait in place.';
        IsACommand: True;
        KCode: '5';    ),

    (    CmdName: 'Dir-SouthWest';
        CmdDesc: 'Move southwest.';
        IsACommand: True;
        KCode: RPK_DownLeft;    ),
    (    CmdName: 'Dir-South';
        CmdDesc: 'Move south.';
        IsACommand: True;
        KCode: RPK_Down;    ),
    (    CmdName: 'Dir-SouthEast';
        CmdDesc: 'Move southeast.';
        IsACommand: True;
        KCode: RPK_DownRight;    ),
    (    CmdName: 'Dir-West';
        CmdDesc: 'Move west.';
        IsACommand: True;
        KCode: RPK_Left;    ),
    (    CmdName: 'Dir-East';
        CmdDesc: 'Move east.';
        IsACommand: True;
        KCode: RPK_Right;    ),

    (    CmdName: 'Dir-NorthWest';
        CmdDesc: 'Move northwest.';
        IsACommand: True;
        KCode: RPK_UpLeft;    ),
    (    CmdName: 'Dir-North';
        CmdDesc: 'Move north.';
        IsACommand: True;
        KCode: RPK_Up;    ),
    (    CmdName: 'Dir-NorthEast';
        CmdDesc: 'Move northeast.';
        IsACommand: True;
        KCode: RPK_UpRight;    ),
    (    CmdName: 'ShiftGears';
        CmdDesc: 'Change movement mode.';
        IsACommand: True;
        KCode: '.';    ),
    (    CmdName: 'Look';
        CmdDesc: 'Look around the map.';
        IsACommand: True;
        KCode: 'l';    ),

    (    CmdName: 'AttackMenu';
        CmdDesc: 'Access the attack menu.';
        IsACommand: True;
        KCode: 'A';    ),
    (    CmdName: 'QuitGame';
        CmdDesc: 'Exit the game.';
        IsACommand: True;
        KCode: 'Q';    ),
    (    CmdName: 'Talk';
        CmdDesc: 'Initiate conversation with a NPC.';
        IsACommand: True;
        KCode: 't';    ),
    (    CmdName: 'Help';
        CmdDesc: 'View these helpful messages.';
        IsACommand: True;
        KCode: 'h';    ),
    (    CmdName: 'SwitchWeapon';
        CmdDesc: 'Change the active weapon while selecting a target.';
        IsACommand: True;
        KCode: '.';    ),

    (    CmdName: 'CalledShot';
        CmdDesc: 'Toggle the Called Shot option while selecting a target.';
        IsACommand: False;
        KCode: '/';    ),
    (    CmdName: 'Get';
        CmdDesc: 'Pick up an item lying on the ground.';
        IsACommand: True;
        KCode: ',';    ),
    (    CmdName: 'Inventory';
        CmdDesc: 'Access all carried items.';
        IsACommand: True;
        KCode: 'i';    ),
    (    CmdName: 'Equipment';
        CmdDesc: 'Access all equipped items.';
        IsACommand: True;
        KCode: 'e';    ),
    (    CmdName: 'Enter';
        CmdDesc: 'Use a stairway or portal.';
        IsACommand: True;
        KCode: '>';    ),

    { Commands 26 - 30 }
    (    CmdName: 'PartBrowser';
        CmdDesc: 'Examine the individual components of your PC.';
        IsACommand: True;
        KCode: 'B';    ),
    (    CmdName: 'LearnSkills';
        CmdDesc: 'Spend accumulated experience points.';
        IsACommand: True;
        KCode: 'L';    ),
    (    CmdName: 'Attack';
        CmdDesc: 'Perform an attack.';
        IsACommand: True;
        KCode: 'a';    ),
    (    CmdName: 'SelectMecha';
        CmdDesc: 'Choose the mecha that will be used by this PC in combat.';
        IsACommand: True;
        KCode: 'M';    ),
    (    CmdName: 'UseScenery';
        CmdDesc: 'Activate a stationary item, such as a door or a computer.';
        IsACommand: True;
        KCode: 'u';    ),

    { Commands 31 - 35 }
    (    CmdName: 'Messages';
        CmdDesc: 'Review all current adventure memos, email, and news.';
        IsACommand: True;
        KCode: 'm';    ),
    (    CmdName: 'SaveGame';
        CmdDesc: 'Write the game data to disk, so you can come back and waste time later.';
        IsACommand: True;
        KCode: 'X';    ),
    (    CmdName: 'Enter2';
        CmdDesc: 'Use a stairway or portal.';
        IsACommand: True;
        KCode: '<';    ),
    (    CmdName: 'CharInfo';
        CmdDesc: 'View detailed information about your character, access option menus.';
        IsACommand: True;
        KCode: 'C';    ),
    (    CmdName: 'ApplySkill';
        CmdDesc: 'Select and use a skill that the PC knows.';
        IsACommand: True;
        KCode: 's';    ),

    { Commands 36 - 40 }
    (    CmdName: 'Eject';
        CmdDesc: 'Eject from your mecha and abandon it on the field.';
        IsACommand: True;
        KCode: 'E';    ),
    (    CmdName: 'Rest';
        CmdDesc: 'Take a break for one hour of game time.';
        IsACommand: True;
        KCode: 'Z';    ),
    (    CmdName: 'History';
        CmdDesc: 'Display past messages.';
        IsACommand: True;
        KCode: 'V';    ),
    (    CmdName: 'FieldHQ';
        CmdDesc: 'Examine and edit your personal wargear.';
        IsACommand: True;
        KCode: 'H';    ),
    (    CmdName: 'Search';
        CmdDesc: 'Check the area for enemies and secrets.';
        IsACommand: True;
        KCode: 'S';    ),

    { Commands 41 - 45 }
    (    CmdName: 'Telephone';
        CmdDesc: 'Place a telephone call to a local NPC.';
        IsACommand: True;
        KCode: 'T';    ),
    (    CmdName: 'SwitchBV';
        CmdDesc: 'Switch the Burst Fire option while selecting a target.';
        IsACommand: False;
        KCode: '>';    ),
    (    CmdName: 'Reverse';
        CmdDesc: 'Travel backward at normal speed.';
        IsACommand: True;
        KCode: '-';    ),
    (    CmdName: 'SwitchTarget';
        CmdDesc: 'Switch to next visible enemy when selecting a target.';
        IsACommand: False;
        KCode: ';';    ),
    (    CmdName: 'RunToggle';
        CmdDesc: 'Toggle running on or off.';
        IsACommand: True;
        KCode: 'r';    ),

    { Commands 46 - 50 }
    (    CmdName: 'WallToggle';
        CmdDesc: 'Toggle short walls in graphical mode.';
        IsACommand: True;
        KCode: 'W';    ),
    (    CmdName: 'QuickFire';
        CmdDesc: 'Single-key automatic targeting attack.';
        IsACommand: True;
        KCode: 'f'; ),
    (    CmdName: 'RollHistory';
        CmdDesc: 'View the skill roll history.';
        IsACommand: True;
        KCode: 'R'; ),
    (    CmdName: 'ExamineTarget';
        CmdDesc: 'Examine a target closely.';
        IsACommand: False;
        KCode: '?'; ),
    (    CmdName: 'PartyMode';
        CmdDesc: 'Toggle between clock mode and tactics mode.';
        IsACommand: True;
        KCode: 'P'; ),

    { Commands 51 - 55 }
    (    CmdName: 'UseSystem';
        CmdDesc: 'Use one of the special systems in a mecha.';
        IsACommand: True;
        KCode: 'U'; )

    );

 
I tried this

 
( CmdName: 'NormSpeed';
CmdDesc: 'Travel foreword at normal speed.';
IsACommand: True;
KCode: #$118; ),        {SDLK_PAGEUP}
( CmdName: 'FullSpeed';
CmdDesc: 'Travel foreword at maximum speed';
IsACommand: True;
KCode: '0'; ),
( CmdName: 'TurnLeft';
CmdDesc: 'Turn to the left.';
IsACommand: True;
KCode: #$116; ),        {SDLK_HOME}
( CmdName: 'TurnRight';
CmdDesc: 'Turn to the right.';
IsACommand: True;
KCode: #$117; ),        {SDLK_END}
( CmdName: 'Stop';
CmdDesc: 'Stop moving, wait in place.';
IsACommand: True;
KCode: #$8; ),        {SDLK_BACKSPACE}
 
But of course that wont work, because KCode is a char, and SDL_HOME (and so on) is wider than a char (2 char I think) !
So I have to find something else... But I'll find something....
 
Last edited by a moderator:
Ok, I found it. In fact, the author of this game had the exact semae problem: how to handles SDL special key (that are stored on a WideChar) with only Char?

It use some virtual keys (the #$89 and so on).

So I put (almost) all default, and added in the special function (function RPGKey of sdlgfx.pp file) the Pandora button mapping:

 
Procedure ProcessThatEvent;
{ An event has been recieved. Process it. }
begin
if event.type_ = SDL_KEYDOWN then begin
{ Check to see if it was an ASCII character we recieved. }
case event.key.keysym.sym of
SDLK_Up,SDLK_KP8: a := RPK_Up;
SDLK_Down,SDLK_KP2: a := RPK_Down;
SDLK_Left,SDLK_KP4: a := RPK_Left;
SDLK_Right,SDLK_KP6: a := RPK_Right;
SDLK_KP7: a := RPK_UpLeft;
SDLK_KP9: a := RPK_UpRight;
SDLK_KP1: a := RPK_DownLeft;
SDLK_KP3: a := RPK_DownRight;
SDLK_Backspace: a := #8;
SDLK_KP_Enter: a := #10;
SDLK_KP5: a := '5';
{special Pandora Button}
SDLK_HOME: a:='[';
SDLK_END: a:=']';
SDLK_PAGEDOWN: a:='.';
SDLK_PAGEUP: a:='=';
else
if( event.key.keysym.unicode <  $80 ) and ( event.key.keysym.unicode > 0 ) then begin
a := Char( event.key.keysym.unicode );
end;
end;
 
end else if ( event.type_ = SDL_MOUSEButtonDown ) then begin
{ Return a mousebutton event, and call GHFlip to set the mouse position }
{ variables. }
if event.button.button = SDL_BUTTON_LEFT then begin
a := RPK_MouseButton;
end else if event.button.button = SDL_BUTTON_RIGHT then begin
a := RPK_RightButton;
end;
end;
end;

Then, as an added bonus, I changed "talk" from 't' to 'k', and "togle running" from 'r' to 't'. And so I could map diagonals to

w r

z c

I'll put all the keys in 1st thread :)
 
Last edited by a moderator:
So, new build on the repo. Better playability I hope. I also resize some dialog, so menu are a bit better now.

Build 03

----------

  • Corrected Customized Mech controls.
  • Added diagonal control ('w', 'r', 'z', 'c'), talk to npc is now 'k', toogle run is now 't'
  • Resized some dialogs to better fit the screen
 
@CCF: please test the new release. If it's still not working, I'll make a version with SDL & all inside the PND for testing :) .
 
I was finally able to download this game. :)

There is no audio for me.

The RPG campaign worked well. I enjoyed it for the time I played it. However I was not able to begin the arena/combat campaign. Do I need to be online to do so?

I like the cut scene of the girl hitchhiking... :eek:   :D   B)

Movement is somewhat uneven but again I did enjoy the RPG portion.
 
Yes, no audio, the author of the serie hasn't worked on audio at all.

Glad it worked ! :D

About Arena campaign, I don't think it work yet, it's the remake of the 1st GearHead using engine of 2nd GearHead, and it's curently a separated branch in the code (which I didn't compile).
 
Yes, no audio, the author of the serie hasn't worked on audio at all.

Glad it worked ! :D

About Arena campaign, I don't think it work yet, it's the remake of the 1st GearHead using engine of 2nd GearHead, and it's curently a separated branch in the code (which I didn't compile).
Is there any chance of getting audio here?

Will you compile the Arena campaign?

Thanks..... I am glad it finally worked!! ;)
 
Last edited:
Yes, no audio, the author of the serie hasn't worked on audio at all.

Glad it worked ! :D

About Arena campaign, I don't think it work yet, it's the remake of the 1st GearHead using engine of 2nd GearHead, and it's curently a separated branch in the code (which I didn't compile).
Is there any chance of getting audio here?

Will you compile the Arena campaign?

Thanks..... I am glad it finally worked!! ;)
Hum, no audio I'm afraid.

The Arena campaign, called GearHead:R is not ready according to main website, so you have to use GearHead: Arena for it for the time beeing. I'll keep an eye on the sources, and when the Arena as matured enough, I'll add it.
 
And your contol remapping did work, too! You are my hero:)


Only (X) is mapped to ShiftGears instead Reverse and Stop has returned to being activated by 5 instead of ,backspace, but that is not too bad.


While playing around with the new wrcz mapping (great idea!) I finally realized, why it was so bad before. Since the cursor keys (Dpad) are mapped to the diagonal movement directions (relative to the underlying grid), the player is reduced to a (chess) bishop's movement and cannot reach every square. Would it be possible to have the cursor keys mapped to the directions now mapped to wrcz and vice versa? This would make playing solely with the Dpad possible in most situations and the other directions become relevant only in combat when every move is critical.


And another thanks for fixing the menu area!
 
And your contol remapping did work, too! You are my hero:)


Only (X) is mapped to ShiftGears instead Reverse and Stop has returned to being activated by 5 instead of ,backspace, but that is not too bad.


While playing around with the new wrcz mapping (great idea!) I finally realized, why it was so bad before. Since the cursor keys (Dpad) are mapped to the diagonal movement directions (relative to the underlying grid), the player is reduced to a (chess) bishop's movement and cannot reach every square. Would it be possible to have the cursor keys mapped to the directions now mapped to wrcz and vice versa? This would make playing solely with the Dpad possible in most situations and the other directions become relevant only in combat when every move is critical.


And another thanks for fixing the menu area!
The problem with inverting DPad / wrcz is that menu navigation will be weird. So not sure I can find a way to still have DPad in menu, and DPad as diagonal in game. Also, Up should be mapped to UpLeft or UpRight?

Ah, I removed by mistake the 0 and backspace mapping? Sorry, to many forward and backward in the modification, I lost track of what should not be moved. You can probably hack that (at least the Stop) in the gearhead.cfg.
 
Last edited by a moderator:
The problem with inverting DPad / wrcz is that menu navigation will be weird. So not sure I can find a way to still have DPad in menu, and DPad as diagonal in game. Also, Up should be mapped to UpLeft or UpRight?


I think UpRight fits the projection. But I agree that menu navigation is more important.


Ah, I removed by mistake the 0 and backspace mapping? Sorry, to many forward and backward in the modification, I lost track of what should not be moved. You can probably hack that (at least the Stop) in the gearhead.cfg.


Yes, it is a minor problem. Thank you for working on it!


Hopefully this port gives the author some additional motivation to work further on it:)
 
Yes, no audio, the author of the serie hasn't worked on audio at all.

Glad it worked ! :D

About Arena campaign, I don't think it work yet, it's the remake of the 1st GearHead using engine of 2nd GearHead, and it's curently a separated branch in the code (which I didn't compile).
I am surprised you did not ask HOW it worked!!?? :huh:   :p .

I usually download via mass storage. Recently I was downloading in my computer's card reader. Sometimes I change don't ask me why  :(   :unsure: ..so once I download this app via mass storage again it worked!

This is my only correlation because from what I see there is nothing you could have done on your side.

At least this is my opinion... :mellow:
 
Last edited:
Yes, no audio, the author of the serie hasn't worked on audio at all.

Glad it worked ! :D

About Arena campaign, I don't think it work yet, it's the remake of the 1st GearHead using engine of 2nd GearHead, and it's curently a separated branch in the code (which I didn't compile).
I am surprised you did not ask HOW it worked!!?? :huh:   :p .

I usually download via mass storage. Recently I was downloading in my computer's card reader. Sometimes I change don't ask me why  :(   :unsure: ..so once I download this app via mass storage again it worked!

This is my only correlation because from what I see there is nothing you could have done on your side.

At least this is my opinion... :mellow:
Hum, maybe your SDCard filesystem has some slight corruption. You should check it, looks strange. And yes, I didn't change things in the package, exept the exe itself.
 
New build on the repo.

Build 04
-----------


  • Corrected {X} to be reverse, and Backspace to be Fullstop
  • Change DPad to be Diagonal movements
  • Non-diagonal can be found on "rcdf" now (Quickfire is now h).


Should be all good now ! Menus are working well, no side effects I think.
 
Back
Top