WHDLoad MantisBT - Baal
View Issue Details
0006437Baal[WHDLoad Installs Games] slavepublic2024-03-11 16:282024-03-17 13:02
Reporterztronzo 
Assigned ToAbaddon 
PrioritynormalSeverityfeatureReproducibilityhave not tried
StatusassignedResolutionopen 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
MachineA1200
CPU68020
CPUSpeed50
ChipSetAGA
GFXCardNone
ChipMem2 MB
FastMem0 MB
WorkbenchOS 3.0
KickROM40 - Kick 3.1
KickSoftNone
WHDLoad18.9
imported
Summary0006437: 2nd fire for jump - feature request
DescriptionCan you please add support for 2nd fire for jump on normal joysticks?

CD32 support mode includes buttons to shortcuts but nothing for jump.
Steps To ReproduceTo normally jump you need to hit Fire + UP + direction (Left/Right)
This is rather difficult for some users.
Additional InformationUsing the WHDload source code, I added the following to apply a patch myself using copy of the original code and adding the 3 last operations.
But it would probably be better to add and combine this to your main source.

PL_PSS $9BC2,_joystick_2nd_button,$4a
PL_R $9BC8 ; writes the opcode for the RTS instruction ($4e75)


_joystick_2nd_button

                    ; LEA.L $010e(PC),A0 ; already passed previously by skipping patch location
                MOVE.W $00dff00c,D0
                MOVE.W D0,D2
                AND.W #$0002,D0
                LSL.W #$02,D0
                MOVE.W D0,D3
                MOVE.W D2,D0
                AND.W #$0200,D0
                LSR.W #$07,D0
                OR.W D0,D3
                MOVE.W D2,D0
                MOVE.W D2,D1
                LSL.W #$01,D1
                AND.W #$0002,D0
                AND.W #$0002,D1
                EOR.W D1,D0
                OR.W D0,D3
                MOVE.W D2,D0
                MOVE.W D2,D1
                LSR.W #$01,D1
                AND.W #$0100,D0
                AND.W #$0100,D1
                EOR.W D1,D0
                LSR.W #$08,D0
                OR.W D0,D3
                MOVE.B $00bfe001,D0
                NOT.B D0
                AND.B #$80,D0
                OR.B D0,D3
                MOVE.W D3,(A0)
                BSET.W #1,(A0)
                    BTST.B #$0006,$00dff016 ; check for 2nd fire
                    BNE .no_2nd_fire ; button not pressed
                    OR.W #$81,(A0) ; adding fire + up = $81 = 10000001 using logical OR.W
.no_2nd_fire RTS




; Additional info:
; $80 10000000 Fire
; $81 10000001 Fire + up
; $89 10001001 fire + jump up-right
; $85 10000101 fire + jump up-left
; $88 10001000 fire + right
; $84 10000100 fire + left
; #82 10000010 fire + down
TagsNo tags attached.
Attached Files

Notes
(0013625)
ztronzo   
2024-03-12 10:47   
I actually ended up using OR.W #$89,(A0)
This allows to to jump towards the direction we are facing..
Jump "up" was pretty much useless and can still be performed with the old style control if needed.

Issue History
2024-03-11 16:28ztronzoNew Issue
2024-03-12 10:47ztronzoNote Added: 0013625
2024-03-17 13:02StingRayAssigned To => Abaddon
2024-03-17 13:02StingRayStatusnew => assigned