Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.129 - CLIENT : 54.221.147.93

 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

The Last Ninja (Activision, 1989)

 
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> PROTECTION MALEFIQUE
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
qkumba



Inscrit le: 29 Jan 2012
Messages: 176

MessagePosté le: Jeu 25 Fév 2016, 5:03    Sujet du message: The Last Ninja (Activision, 1989) Répondre en citant

The Last Ninja is a fully double-hires action/adventure game. You fight your way through the guards, solve puzzles and collect special items, until the final showdown with the boss, and finally recover the sacred scroll!

I can't say enough good things about this game because... well, it isn't good. The isomorphic view gives terrible parallax errors while trying to pick up items, in particular, the scroll at the end. Anyway, that's nothing to do with deprotecting it.

The game comes on two sides of a floppy, in fully 18-sector format. The existing crack uses three sides, but we can do better.

We end up with a map that looks like this, showing how it's read (as whole track or individual sectors), and where it's loaded (main or aux), and the blank regions are unused:

Code:
01   trk   main
   00   e0
   01   e1
   02   e2
   03   e3
   04   e4
   05   e5
   06   e6
   07   e7
   08   e8
   09   e9
   0a   ea
   0b   eb
   0c   ec
   0d   ed
   0e   ee
   0f   ef
   10   f0
   11   f1
02   trk   main
   00   40
   01   41
   02   42
   03   43
   04   44
   05   45
   06   46
   07   47
   08   48
   09   49
   0a   4a
   0b   4b
   0c   4c
   0d   4d
   0e   4e
   0f   4f
   10   50
   11   51
03   trk   main
   00   9f
   01   a0
   02   a1
   03   a2
   04   a3
   05   a4
   06   a5
   07   a6
   08   a7
   09   a8
   0a   a9
   0b   aa
   0c   ab
   0d   ac
   0e   ad
   0f   ae
   10   af
   11   b0
04   sec   main
   00   b1
   01   b2
   02   b3
   03   b4
   04   b5
   05   b6
   06   b7
   07   b8
   08   b9
   09   ba
   0a   bb
   0b   bc
   0c   bd
   0d   be
   0e   bf
   0f   f2
   10   f3
   11   f4
05   trk   main
   00   04
   01   05
   02   06
   03   07
   04   08
   05   09
   06   0a
   07   0b
   08   0c
   09   0d
   0a   0e
   0b   0f
   0c   10
   0d   11
   0e   12
   0f   13
   10   14
   11   15
06   sec   main
   00   16
   01   17
   02   18
   03   19
   04   1a
   05
   06
   07
   08
   09
   0a
   0b
   0c
   0d
   0e
   0f
   10
   11
07   trk   main
   00   76
   01   77
   02   78
   03   79
   04   7a
   05   7b
   06   7c
   07   7d
   08   7e
   09   7f
   0a   80
   0b   81
   0c   82
   0d   83
   0e   84
   0f   85
   10   86
   11   87
08   sec   main
   00   88
   01   89
   02   8a
   03   8b
   04   8c
   05   8d
   06   8e
   07   8f
   08   90
   09   91
   0a   92
   0b   93
   0c   94
   0d   95
   0e   96
   0f   97
   10
   11
09   sec   main
   00   98
   01   99
   02   9a
   03
   04
   05
   06
   07
   08
   09
   0a
   0b
   0c
   0d
   0e
   0f
   10
   11
0a   trk   aux
   00   04
   01   05
   02   06
   03   07
   04   08
   05   09
   06   0a
   07   0b
   08   0c
   09   0d
   0a   0e
   0b   0f
   0c   10
   0d   11
   0e   12
   0f   13
   10   14
   11   15
0b   sec   aux
   00   16
   01   17
   02   18
   03   19
   04   1a
   05   1b
   06   1c
   07   1d
   08   1e
   09   1f
   0a   
   0b   
   0c   
   0d   
   0e   
   0f   
   10   
   11   
0c   trk   aux
   00   78
   01   79
   02   7a
   03   7b
   04   7c
   05   7d
   06   7e
   07   7f
   08   80
   09   81
   0a   82
   0b   83
   0c   84
   0d   85
   0e   86
   0f   87
   10   88
   11   89
0d   trk   aux
   00   8a
   01   8b
   02   8c
   03   8d
   04   8e
   05   8f
   06   90
   07   91
   08   92
   09   93
   0a   94
   0b   95
   0c   96
   0d   97
   0e   98
   0f   99
   10   9a
   11   9b
0e   trk   aux
   00   9c
   01   9d
   02   9e
   03   9f
   04   a0
   05   a1
   06   a2
   07   a3
   08   a4
   09   a5
   0a   a6
   0b   a7
   0c   a8
   0d   a9
   0e   aa
   0f   ab
   10   ac
   11   ad
0f   trk   aux
   00   ae
   01   af
   02   b0
   03   b1
   04   b2
   05   b3
   06   b4
   07   b5
   08   b6
   09   b7
   0a   b8
   0b   b9
   0c   ba
   0d   bb
   0e   bc
   0f   bd
   10   be
   11   bf
10   trk   main
   00   e0
   01   e1
   02   e2
   03   e3
   04   e4
   05   e5
   06   e6
   07   e7
   08   e8
   09   e9
   0a   ea
   0b   eb
   0c   ec
   0d   ed
   0e   ee
   0f   ef
   10   f0
   11   f1
11   sec   main
   00   f2
   01   f3
   02   f4
   03   f5
   04   f6
   05   f7
   06   f8
   07   f9
   08   fa
   09   fb
   0a   fc
   0b   fd
   0c   fe
   0d   ff
   0e   
   0f   
   10   
   11   


That's the game engine covered. Then we have level data. They all look like this:

Code:
12   sec   main
   00   1b
   01   1c
   02   1d
   03   1e
   04   1f
   05   
   06   
   07   
   08   
   09   
   0a   
   0b   
   0c   
   0d   
   0e   9b
   0f   9c
   10   9d
   11   9e
13   sec   aux
   00   16
   01   17
   02   18
   03   19
   04   1a
   05   1b
   06   1c
   07   1d
   08   1e
   09   1f
   0a   80
   0b   81
   0c   82
   0d   83
   0e   84
   0f   85
   10   86
   11   87
14   sec   aux
   00   88
   01   89
   02   76
   03   77
   04   78
   05   79
   06   7a
   07   7b
   08   7c
   09   7d
   0a   7e
   0b   7f
   0c   
   0d   
   0e   
   0f   
   10   
   11   
15   trk   aux
   00   8a
   01   8b
   02   8c
   03   8d
   04   8e
   05   8f
   06   90
   07   91
   08   92
   09   93
   0a   94
   0b   95
   0c   96
   0d   97
   0e   98
   0f   99
   10   9a
   11   9b
16   trk   aux
   00   9c
   01   9d
   02   9e
   03   9f
   04   a0
   05   a1
   06   a2
   07   a3
   08   a4
   09   a5
   0a   a6
   0b   a7
   0c   a8
   0d   a9
   0e   aa
   0f   ab
   10   ac
   11   ad
17   trk   aux
   00   ae
   01   af
   02   b0
   03   b1
   04   b2
   05   b3
   06   b4
   07   b5
   08   b6
   09   b7
   0a   b8
   0b   b9
   0c   ba
   0d   bb
   0e   bc
   0f   bd
   10   be
   11   bf
18   trk   aux
   00   04
   01   05
   02   06
   03   07
   04   08
   05   09
   06   0a
   07   0b
   08   0c
   09   0d
   0a   0e
   0b   0f
   0c   10
   0d   11
   0e   12
   0f   13
   10   14
   11   15


Tracks $19-1F are level 2, and that's it for side A. Side B has levels on tracks $01-07, $08-0E, $0F-15, $16-1C. The end sequence looks like this:

Code:
1d   sec   main
   00   f3
   01   f4
   sec   aux
   02   b6
   03   b7
   04   b8
   05   b9
   06   ba
   07   bb
   08   bc
   09   bd
   0a   
   0b   
   0c   
   0d   
   0e   
   0f   
   10   
   11   
1e   trk   aux
   00   80
   01   81
   02   82
   03   83
   04   84
   05   85
   06   86
   07   87
   08   88
   09   89
   0a   8a
   0b   8b
   0c   8c
   0d   8d
   0e   8e
   0f   8f
   10   90
   11   91
1f   trk   aux
   00   92
   01   93
   02   94
   03   95
   04   96
   05   97
   06   98
   07   99
   08   9a
   09   9b
   0a   9c
   0b   9d
   0c   9e
   0d   9f
   0e   a0
   0f   a1
   10   a2
   11   a3
20   trk   aux
   00   a4
   01   a5
   02   a6
   03   a7
   04   a8
   05   a9
   06   aa
   07   ab
   08   ac
   09   ad
   0a   ae
   0b   af
   0c   b0
   0d   b1
   0e   b2
   0f   b3
   10   b4
   11   b5
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
qkumba



Inscrit le: 29 Jan 2012
Messages: 176

MessagePosté le: Jeu 25 Fév 2016, 5:13    Sujet du message: Répondre en citant

Here is the new layout, using 16-sector tracks.

Code:
01   trk   main
   00   e0
   01   e1
   02   e2
   03   e3
   04   e4
   05   e5
   06   e6
   07   e7
   08   e8
   09   e9
   0a   ea
   0b   eb
   0c   ec
   0d   ed
   0e   ee
   0f   ef
02   trk   main
   00   40
   01   41
   02   42
   03   43
   04   44
   05   45
   06   46
   07   47
   08   48
   09   49
   0a   4a
   0b   4b
   0c   4c
   0d   4d
   0e   4e
   0f   4f
03   trk   main
   00   9f
   01   a0
   02   a1
   03   a2
   04   a3
   05   a4
   06   a5
   07   a6
   08   a7
   09   a8
   0a   a9
   0b   aa
   0c   ab
   0d   ac
   0e   ad
   0f   ae
04   sec   main
   00   af
   01   b0
   02   b1
   03   b2
   04   b3
   05   b4
   06   b5
   07   b6
   08   b7
   09   b8
   0a   b9
   0b   ba
   0c   bb
   0d   bc
   0e   bd
   0f   be
05   trk   main
   00   04
   01   05
   02   06
   03   07
   04   08
   05   09
   06   0a
   07   0b
   08   0c
   09   0d
   0a   0e
   0b   0f
   0c   10
   0d   11
   0e   12
   0f   13
06   sec   main
   00   14
   01   15
   02   16
   03   17
   04   18
   05   19
   06   1a
   07   50
   08   51
   09   bf
   0a   f0
   0b   f1
   0c   f2
   0d   f3
   0e   f4
   0f
07   trk   main
   00   76
   01   77
   02   78
   03   79
   04   7a
   05   7b
   06   7c
   07   7d
   08   7e
   09   7f
   0a   80
   0b   81
   0c   82
   0d   83
   0e   84
   0f   85
08   sec   main
   00   86
   01   87
   02   88
   03   89
   04   8a
   05   8b
   06   8c
   07   8d
   08   8e
   09   8f
   0a   90
   0b   91
   0c   92
   0d   93
   0e   94
   0f   95
09   sec   main
   00   96
   01   97
   02   98
   03   99
   04   9a
+sec aux
   05
   06
   07
   08
   09
   0a
   0b
   0c   04
   0d   05
   0e   06
   0f   07
0a   trk   aux
   00   08
   01   09
   02   0a
   03   0b
   04   0c
   05   0d
   06   0e
   07   0f
   08   10
   09   11
   0a   12
   0b   13
   0c   14
   0d   15
   0e   16
   0f   17
0b   sec   aux
   00   18
   01   19
   02   1a
   03   1b
   04   1c
   05   1d
   06   1e
   07   1f
   08   78
   09   79
   0a   7a
   0b   7b
   0c   7c
   0d   7d
   0e   7e
   0f   7f
0c   trk   aux
   00   80
   01   81
   02   82
   03   83
   04   84
   05   85
   06   86
   07   87
   08   88
   09   89
   0a   8a
   0b   8b
   0c   8c
   0d   8d
   0e   8e
   0f   8f
0d   trk   aux
   00   90
   01   91
   02   92
   03   93
   04   94
   05   95
   06   96
   07   97
   08   98
   09   99
   0a   9a
   0b   9b
   0c   9c
   0d   9d
   0e   9e
   0f   9f
0e   trk   aux
   00   a0
   01   a1
   02   a2
   03   a3
   04   a4
   05   a5
   06   a6
   07   a7
   08   a8
   09   a9
   0a   aa
   0b   ab
   0c   ac
   0d   ad
   0e   ae
   0f   af
0f   trk   aux
   00   b0
   01   b1
   02   b2
   03   b3
   04   b4
   05   b5
   06   b6
   07   b7
   08   b8
   09   b9
   0a   ba
   0b   bb
   0c   bc
   0d   bd
   0e   be
   0f   bf
10   trk   main
   00   e0
   01   e1
   02   e2
   03   e3
   04   e4
   05   e5
   06   e6
   07   e7
   08   e8
   09   e9
   0a   ea
   0b   eb
   0c   ec
   0d   ed
   0e   ee
   0f   ef
11   sec   main
   00   f0
   01   f1
   02   f2
   03   f3
   04   f4
   05   f5
   06   f6
   07   f7
   08   f8
   09   f9
   0a   fa
   0b   fb
   0c   fc
   0d   fd
   0e   fe
   0f   ff


That's the game engine. Here is the level layout:

Code:
12   sec   main
   00   1b
   01   1c
   02   1d
   03   1e
   04   1f
   05   9b
   06   9c
   07   9d
   08   9e
   09   
+sec aux
   0a   14
   0b   15
   0c   16
   0d   17
   0e   18
   0f   19
13   sec   aux
   00   1a
   01   1b
   02   1c
   03   1d
   04   1e
   05   1f
   06   76
   07   77
   08   78
   09   79
   0a   7a
   0b   7b
   0c   7c
   0d   7d
   0e   7e
   0f   7f
14   sec   aux
   00   80
   01   81
   02   82
   03   83
   04   84
   05   85
   06   86
   07   87
   08    88
   09   89
   0a   8a
   0b   8b
   0c   8c
   0d   8d
   0e   8e
   0f   8f
15   trk   aux
   00   90
   01   91
   02   92
   03   93
   04   94
   05   95
   06   96
   07   97
   08   98
   09   99
   0a   9a
   0b   9b
   0c   9c
   0d   9d
   0e   9e
   0f   9f
16   trk   aux
   00   a0
   01   a1
   02   a2
   03   a3
   04   a4
   05   a5
   06   a6
   07   a7
   08   a8
   09   a9
   0a   aa
   0b   ab
   0c   ac
   0d   ad
   0e   ae
   0f   af
17   trk   aux
   00   b0
   01   b1
   02   b2
   03   b3
   04   b4
   05   b5
   06   b6
   07   b7
   08   b8
   09   b9
   0a   ba
   0b   bb
   0c   bc
   0d   bd
   0e   be
   0f   bf
18   trk   aux
   00   04
   01   05
   02   06
   03   07
   04   08
   05   09
   06   0a
   07   0b
   08   0c
   09   0d
   0a   0e
   0b   0f
   0c   10
   0d   11
   0e   12
   0f   13


So that fits nicely. We just moved a few sectors around to take advantage of the unused sectors in the original, and inserted two additional reads into aux context. To avoid rewriting large chunks of code, we just replace one three-byte instruction with a JSR to our read routine.
That just leaves two things. One of them is the end sequence.


Derničre édition par qkumba le Jeu 25 Fév 2016, 5:20; édité 1 fois
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
qkumba



Inscrit le: 29 Jan 2012
Messages: 176

MessagePosté le: Jeu 25 Fév 2016, 5:18    Sujet du message: Répondre en citant

We got very lucky with the end sequence - we can move some sectors into a track with spare sectors, and the context is the same.

Code:
1d   sec   main
   00   f3
   01   f4
   sec   aux
   02   b6
   03   b7
   04   b8
   05   b9
   06   ba
   07   bb
   08   bc
   09   bd
+sec aux
   0a   80
   0b   81
   0c   82
   0d   83
   0e   84
   0f   85
1e   trk   aux
   00   86
   01   87
   02   88
   03   89
   04   8a
   05   8b
   06   8c
   07   8d
   08   8e
   09   8f
   0a   90
   0b   91
   0c   92
   0d   93
   0e   94
   0f   95
1f   trk   aux
   00   96
   01   97
   02   98
   03   99
   04   9a
   05   9b
   06   9c
   07   9d
   08   9e
   09   9f
   0a   a0
   0b   a1
   0c   a2
   0d   a3
   0e   a4
   0f   a5
20   trk   aux
   00   a6
   01   a7
   02   a8
   03   a9
   04   aa
   05   ab
   06   ac
   07   ad
   08   ae
   09   af
   0a   b0
   0b   b1
   0c   b2
   0d   b3
   0e   b4
   0f   b5


It fits in exactly the space as the original!
As for the other thing - the game supports saving and loading of the state. To support that, it used RW18 to write the entire track $21, even though it needs only one sector, just like Airheart and Prince of Persia. We simply change our routine to read a write routine from track $21, and to write one sector to the same track. That way, we don't need to carry the write routine all the time in memory.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
toinet
Site Admin


Inscrit le: 15 Juin 2007
Messages: 2949
Localisation: Le Chesnay, France

MessagePosté le: Jeu 25 Fév 2016, 10:52    Sujet du message: Répondre en citant

Citation:
We simply change our routine to read a write routine from track $21


Very clever!
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
qkumba



Inscrit le: 29 Jan 2012
Messages: 176

MessagePosté le: Jeu 25 Fév 2016, 19:33    Sujet du message: Répondre en citant

Here is my replacement 18-to-16 interface, which loads to $D000 like the original.

Code:
      ;fetch the command pointer
      PLA
      STA   $54
      PLA
      STA   $55
$D006:
      ;construct denibblisation table on first pass
      LDY   #$40
      BEQ   $D041
      LDX   #$80
$D00C:
      STX   $3C
      TXA
      ASL
      BIT   $3C
      BEQ   $D024
      ORA   $3C
      EOR   #$FF
      AND   #$7E
$D01A:
      BCS   $D024
      LSR
      BNE   $D01A
      DEY
      TYA

      ;store it in our private buffer
      ;allows reading directly into aux memory
      STA   $D1DC,X
$D024:
      DEX
      BNE   $D00C
      STY   $D007

      ;update soft-switches depending on slot
      LDA   $FD
      ORA   #$80
      STA   $D0CF
      ORA   #$08
      STA   $D089
      ORA   #$04
      STA   $D102
      STA   $D172
      STA   $D187
$D041:
      ;save critical zpage locations
      ;game misbehaves badly if they're replaced
      LDX   #$04
$D043:
      LDA   $F8,X
      PHA
      DEX
      BNE   $D043

      ;fetch command
      JSR   $D078
      ;throw away error loop bit
      ;but keep track advance bit
      ASL
      PHP
      AND   #$1E
      TAX
      ;dispatch
      JSR   $D067
      ;remember advance state
      PLP
      BPL   $D059
      ;adjust track, but no seek yet
      INC   $FE
$D059:
      ;adjust return address
      JSR   $D078
      LDX   #$04
$D05E:
      ;restore critical zpage locations
      PLA
      STA   $F8,X
      DEX
      BNE   $D05E
      ;return to caller
      JMP   ($54)
$D067:
      JMP   ($D06A,X)

      .WORD $D081   ;drive on
      .WORD $D088   ;drive off
      .WORD $D08C   ;seek
      .WORD $D107   ;read 18 (now 16)
      .WORD $D109   ;read n
      .WORD $D067   ;write 18 (not supported)
      .WORD $D1AE   ;write n

$D078:
      INC   $54
      BNE   $D07E
      INC   $55
$D07E:
      LDA   ($54)
      RTS

$D081:
      ;discard delay and fetch drive number
      JSR   $D078
      JSR   $D078
      ;drive on
      INY
$D088:
      ;adjust motor state
      LDA   $C0E8,Y
      RTS

$D08C:
      ;discard relative track and fetch new track
      JSR   $D078
      JSR   $D078
      STA   $FE
$D094:
      ;seek
      STZ   $FA
      LDA   $FE
      ASL
      STA   $FC
$D09B:
      LDA   $FF
      STA   $FB
      SEC
      SBC   $FC
      BEQ   $D106
      BCS   $D0AC
      EOR   #$FF
      INC   $FF
      BCC   $D0AF
$D0AC:
      DEC
      DEC   $FF
$D0AF:
      CMP   $FA
      BCC   $D0B5
      LDA   $FA
$D0B5:
      CMP   #$08
      BCS   $D0BB
      TAY
      SEC
$D0BB:
      ;size-optimised step
      LDA   $FF
      LDX   $D0E1,Y
      BNE   $D0C8
$D0C2:
      CLC
      LDA   $FB
      LDX   $D0E9,Y
$D0C8:
      STX   $3C
      AND   #$03
      ROL
      TAX
$D0CE:
      STA   $C0E0,X
$D0D1:
      LDX   #$13
$D0D3:
      DEX
      BNE   $D0D3
      DEC   $3C
      BNE   $D0D1
      LSR
      BCS   $D0C2
      INC   $FA
      BNE   $D09B

      .BYTE $01, $30, $28, $24, $20, $1E, $1D, $1C
      .BYTE $70, $2C,   $26, $22, $1F, $1E, $1D, $1C
      .BYTE 0, $D, $B, 9, 7, 5, 3, 1,   $E, $C,   $A, 8, 6, 4, 2,   $F

$D101:
      LDA   $C0EC
      BPL   $D101
$D106:
      RTS

$D107:
      SEC
      .BYTE $A9
$D109:
      CLC
      ;zero sector count
      STZ   $F9
      BRA   $D111
$D10E:
      ;skip fetch address in read-18 mode
      PLP
      BCS   $D116
$D111:
      ;skip empty slots
      JSR   $D078
      BEQ   $D11F
$D116:
      ;translate sector (for more human-readable disk layout)
      ;and store address
      LDX   $D0F1,Y
      STA   $D25C,X
      INC
      ;count sectors to read
      INC   $F9
$D11F:
      ;until 16 sectors counted
      INY
      PHP
      CPY   #$10
      BCC   $D10E
      ;in read-n mode, count up to 18 to complete array parse
      PLP
      BCS   $D12C
      CPY   #$12
      BNE   $D111
$D12C:
      ;seek
      JSR   $D094
$D12F:
      ;preset 2-bit array location
      LDA   #$C2
      STA   $41
      LDA   #$D1
      STA   $42
      LDX   #$00
$D139:
      ;read nibble
      JSR   $D101
$D13C:
      CMP   #$D5
      BNE   $D139
      JSR   $D101
      CMP   #$AA
      BNE   $D13C
      TAY
      JSR   $D101
      ;if not #$AD then #$96 is assumed
      EOR   #$AD
      BEQ   $D16B
      ;volume/track/sector only
      LDX   #$03
      STA   $3C
$D153:
      JSR   $D101
      ROL
      STA   $3C
      JSR   $D101
      AND   $3C
      DEX
      BNE   $D153
      STA   $3C
      TAY
      ;fetch corresponding address
      LDX   $D25C,Y
      STX   $FA
      BCS   $D139
$D16B:
      ;return if wrong mode
      CPX   #$00
      BEQ   $D139
      ;mask pass
      .BYTE $90
$D170:
      CLC
$D171:
      ;store array to pass-dependent location
      LDX   $C0EC
      BPL   $D171
      EOR   $D15C,X
      STA   ($41),Y
      INY
      BNE   $D171
      ;switch addresses
      STY   $41
      LDX   $FA
      STX   $42
      ;carry is set on first pass to force loop
      BCS   $D170
$D186:
      ;check checksum
      LDX   $C0EC
      BPL   $D186
      EOR   $D15C,X
      BNE   $D12F
      ;zero address on success
      LDX   $3C
      STA   $D25C,X
$D195:
      ;6-and-2 decode
      LDX   #$A9
$D197:
      INX
      BEQ   $D195
      LDA   ($41),Y
      LSR   $D1C2,X
      ROL
      LSR   $D1C2,X
      ROL
      STA   ($41),Y
      INY
      BNE   $D197
      DEC   $F9
      BNE   $D12F
      RTS

$D1AE:
      ;read "write" routine to $D500 and then run it
      LDY   #$D5
      STY   $D269
      INY
      STY   $D267
      LDA   #$02
      STA   $F9
      JSR   $D12C
      JMP   $D500
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> PROTECTION MALEFIQUE Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com