Lode runner Broderbund Adaptation for 4play Antoine Vignau & Olivier Zardini Brutal Deluxe Software === Addresses in RAM vs Track/Sector $6000 T0E/S0 $7000 T0F/S0 $8000 T10/S0 $8F00 T10/SF Search of joystick usage on the disk with map in memory $C061 ----------- $0E/$01-$A5 $61A4 $0E/$09-$C9 $69C8 $0E/$0A-$DA $6AD9 $0F/$07-$C3 $77C2 $10/$07-$90 $878F $10/$0D-$37 $8D37 $C062 ----------- $0E/$01-$A0 $619F $0E/$09-$C4 $69C3 $0E/$0A-$D1 $6AD0 $0F/$07-$BE $77BD $10/$07-$8B $878A $10/$0D-$32 $8D31 $C064 ----------- $10/$07-$52 $8751 $10/$07-$5C $875B $10/$07-$A8 $87A7* $C065 ----------- $10/$07-$5F $875E $10/$07-$AB $87AA* $C070 ----------- $10/$07-$4D $874C $10/$07-$A3 $87A2* * checks that a joystick is plugged, if not, force Keyboard routine is called once at $6000 we can leave it as it is ADDRESSES TO PATCH IN MEMORY $xxxx before => after If we do not find a 4play card, jump to $87B5, that will init the Keyboard mode of LR: $6000 20 A2 87 => 20 00 8F $619F AD 62 C0 30 5D AD 61 C0 30 58 A=> AD 90 C0 30 5D 29 40 F0 59 EA B=> AD 90 C0 30 5D 29 40 D0 59 EA This next routine changes the behaviour of the program (slightly) Before, priority was given to button 2. Now, priority is given to button 1: $69C3 AD 62 C0 30 05 AD 61 C0 10 09 A=> AD 90 C0 30 05 29 40 D0 0A EA B=> AD 90 C0 30 05 29 40 F0 0A EA => $6AD0 is where you dig left or right: $6AD0 AD 62 C0 10 04 A9 D5 D0 07 AD 61 C0 10 07 A=> AD 90 C0 10 04 A9 D5 D0 07 29 40 D0 08 EA B=> AD 90 C0 10 04 A9 D5 D0 07 29 40 F0 08 EA $77BD AD 62 C0 30 14 AD 61 C0 30 0F A=> AD 90 C0 30 14 29 40 F0 10 EA B=> AD 90 C0 30 14 29 40 D0 10 EA $8746 A9 00 85 65 85 66 AD 70 C0 A2 01 BD 64 C0 10 13 F6 65 CA 10 F6 AD 64 C0 0D 65 C0 10 09 A5 65 05 66 10 E6 EA 10 EC 60 AB=> AD 90 C0 48 29 03 AA BD 5E 87 85 66 68 29 0C 4A 4A AA BD 5E 87 85 65 60 20 10 40 20 $878A AD 62 C0 30 07 AD 61 C0 30 02 A=> AD 90 C0 30 07 29 40 F0 03 EA B=> AD 90 C0 30 07 29 40 F0 03 EA $8D31 AD 62 C0 30 0B AD 61 C0 30 06 A=> AD 90 C0 30 0B 29 40 F0 07 EA B=> AD 90 C0 30 0B 29 40 D0 07 EA