Scramble Freeplay

philmurr

Active member
vacBacker
Feedback
44 (100%)
Credits
2,189CR
Scramble is a cracking game, but again like so many games of its era lacks free play mode. So you either need to keep it coined up (where it just stares back at you telling you to press start) or coin it up every time you want to play it. So this mod is to overcome those problems. It has the following features:-

A freeplay mode, selectable by the coinage DIP switches (on a real board, you need DIPs 4 & 5 off, in mame you select 1 coin/4 credits)

Attract mode is maintained in free play mode

It displays "FREE PLAY" on the screen when in free play mode instead of credits

You can't add credits when in free play mode

DIPs are only checked on boot, so changing them mid game has no impact

The hack has been done
for the Stern (set 1 & 2) which use different addressing. The different variants of game code are very similar, and my code is
pretty simple so could be adapted to other ROMs (e.g. Konami) by changing the absolute
addresses. I'm sharing the (annotated) source code below if you want to change it to other versions.

Parching changes to be made:-

Stern set 1

0D8D (ROM 2e, address 058d->)

CD 00 3B

06E3 (ROM 2d, address 06e3->)

CA 28 3B

3B00 (ROM 2p, address 300->)

3A 00 40 FE 03 C2 B9 0D 3A 06 40 A7 C2 F8 0D 3A 01 81 CB 7F 3E 01 28 0A 3A 01 81 CB 77 3E 02 C2 F8 0D 32 02 40 C3 F8 0D 3A 00 40 FE 03 C2 DE 0A 21 9F 4B 11 3C 3B 01 E0 FF C3 36 04 40 46 52 45 45 40 50 4C 41 59 40 40 3F

Stern set 2

21EB (ROM 2j, address 01eb->)

CD 00 3D

0710 (ROM 2d, address 0710->)

CA 28 3D

3D00 (ROM 2p, address 500->)

3A 00 40 FE 03 C2 EC 09 3A 06 40 A7 C2 2C 0A 3A 01 81 CB 7F
3E 01 28 0A 3A 01 81 CB 77 3E 02 C2 2C 0A 32 02 40 C3 2C 0A 3A 00 40 FE 03 C2
1A 07 21 9F 4B 11 3C 3D 01 E0 FF C3 52 04 40 46 52 45 45 40 50 4C 41 59 40 40
3F

Source code (this is for the set 1 version, set 2 is mostly the same, just with different absolute addresses)

; Stern Scramble (set 1) enhanced free play @0x3B00
; philmurr 06/11/16

; call freeplaycode ;intercept for hack @ 0D8D
; jp printfreeplay ;intercept for printing on screen @06E3

org 0x3b00

freeplaycode:

ld a,(0x4000) ; are we in "free play" mode?
cp 3
jp nz,0x0db9 ; return to main code if not

ld a,(0x4006) ;are we in a game?
and a
jp nz,0x0df8 ;if yes, don't try to add more credits
ld a,(0x8101)
bit 7,a ; P1 button pressed
ld a,1 ;1 dummy credit
jr z,addcredit
ld a,(0x8101)
bit 6,a ; P2 button pressed?
ld a,2 ;2 dummy credits
jp nz,0x0df8 ; return to main code if not
addcredit:
ld (0x4002),a ; add 1 or 2 credits depending on P1/P2 pressed
jp 0x0df8 ; return to main code

printfreeplay:

ld a,(0x4000) ;are we in "free play" mode?
cp 3
jp nz,0x0ade ;if not, go to code to print "CREDIT x"
ld hl,0x4b9f ;screen position
ld de,fptext ;text data
ld bc,0xffe0 ;next line
jp 0x0436 ;print it and continue

fptext:

db 64,70,82,69,69,64,80,76,65,89,64,64,63
;

Photos from Mame and on real hardware are below

scramble_demo_1.JPG
scramble_demo_3.JPG


scramble_demo_4.JPG


Scramble_hardware_2.JPG


Scramble_hardware_1.JPG


Edit: typos in patching for set 1
philmurr2016-11-06 14:45:59
 

cparsonsuk

Active member
Credits
205CR
Great stuff, love these little changes that really make a difference... imagine how much less screen burn there would be out there if you'd been around back in the day!
 
Top