I've modified the assembler and the game seems that works well but i'm not sure if my fix may imply some errors.
My work:
The game is not tape protected so using 16k expansion i've loaded the Tape file and saved it to a disk on VICE.
LOAD"SHIFTY"
SAVE"SHIFTY",8
simply.
When i load the file from a disk and RUN, the Vic resets.
Using VICE monitor i've investigate and i don't know why but after a command (BNE $32FD) the program jump to an address ($32fd) that reset the vic (JMP $FD22 = SYS64802) but if the game is loaded from the tape, after the command (BNE $32FD) the program does not jump.
So to fix the game i've substitute 2 BNE commands that produce the reset with the CMP command of the previous line, i don't know what the CMP command do, may produce a problem?
Code: Select all
1702 A9 2F LDA #$2F <== SYS5890 start program
1704 85 2C STA $2C
1706 4C B0 32 JMP $32B0
32b0 A9 C2 LDA #$C2
32b2 8D 14 03 STA $0314
32b5 A9 80 LDA #$80
32b7 8D 91 02 STA $0291
32ba A9 00 LDA #$00
32bc 8D 8A 02 STA $028A
32bf A9 5A LDA #$5A
32c1 8D 18 03 STA $0318
32c4 A9 33 LDA #$33
32c6 85 2C STA $2C
32c8 A9 CB LDA #$CB
32ca 8D 19 03 STA $0319
32cd A5 9D LDA $9D
32cf D0 2C BNE $32FD ok doesn't jump
32d1 AD 0B 12 LDA $120B
32d4 C9 8A CMP #$8A
32d6 D0 25 BNE $32FD ok doesn't jump
32d8 AD 51 03 LDA $0351
32db C9 58 CMP #$58
32dd D0 1E BNE $32FD >--- FILL $32DD $32DE C9 58
32df AD 52 03 LDA $0352 |
32e2 C9 59 CMP #$59 |
32e4 D0 17 BNE $32FD >--- FILL $32E4 $32E5 C9 59
32e6 AD 07 12 LDA $1207 |
32e9 C9 38 CMP #$38 |
32eb D0 10 BNE $32FD | ok doesn't jump
32ed AD 09 12 LDA $1209 |
32f0 EA NOP |
32f1 EA NOP |
32f2 A9 89 LDA #$89 |
32f4 8D 7D 38 STA $387D |
32f7 A9 30 LDA #$30 |
32f9 8D 7F 38 STA $387F |
32fc 60 RTS >---------+--
32fd 4C 22 FD JMP $FD22 <--- | <-- RESET
e144 08 PHP <------------