Cybernoid nie ma żadnej następnej detekcji tylko z nas dupy nie hackerzy
W załączniku wersja, która po wybraniu beepera na 128 gra jak należy na beeperze.
Oryginalny kod detektujący wygląda tak:
6521 ld a,($386E)
6524 sub $FF
6526 jr z,$652A
6528 ld a,$01
652A ld ($8599),a
Czyli sprawdzamy czy w $386e jest $ff - jeśli nie to zapisujemy do $8599 jedynkę oznaczającą AYgreka. Moja poprawka zmieniała skok pod $6526 - na dwa NOPy dla AYgreka i bezwarunkowego JRa dla beepera. Problem w tym, że jeśli w $386e jest coś innego niż $ff (tak jest na przykład na 128) to do $8599 zapisuje się... coś innego niż spodziewane dla beepera zero. A test muzyki dalej to:
70F2 ld a,($8599)
70F5 or a
70F6 jr nz,$7106
Czyli ma być 0 albo nie zero. Na 128 przy prostej zmianie skoku zawsze zapisze się nie zero. W załączonej wersji jest tak, że JR jest zamieniany na dwa NOPy a pod $6529 (argument dla LD A,n) ładowane jest 0 albo 1 zależnie od selekcji.
POKE'i jakby ktoś potrzebował:
obie wersje: POKE 25894,0: POKE 25895,0
beeper: POKE 25899,0
AY: POKE 25899,1