Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.129 - CLIENT : 54.80.83.123

 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 

Galaxie-L (Ediciel, 1983)

 
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
toinet
Site Admin


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

MessagePosté le: Lun 29 Sep 2014, 8:50    Sujet du message: Galaxie-L (Ediciel, 1983) Répondre en citant

Galaxie-L est la version française de Star Maze, un très bon logiciel d'arcade avec un super scrolling dans tous les sens !

PROTECTION
This is a pure change of format, using a 4*4 coding scheme. The floppy disk cannot be copied with Locksmith. We'll have to boot trace the code to get the load code.

First feeling:
- The game loads a single phase
- But, the drive seems to be doing something after the game is loaded

BOOT TRACE
From the monitor (call -151)
- 9600<C600.C6FFM
- 96FB:20 FDDA 60 (non-IIgs users, enter the code at 96F8)
- 9600G
...
04
...
- COE8
=> The boot code is loaded at $0800. It will be studied in the next thread.

HOW TO CRACK?
I rewrote the load routine and switched off the call to the read/write score table (see below)

HOW TO ENHANCE?
As I said, my crack disables the read and write of the score table, please read the GL.TODO.S file to finish the crack by adding one read and one write sector routine for the score to be handled. A work for Peter...

Find the floppy disk image at http://www.brutaldeluxe.fr/crack/

LoGo
9/2014


Dernière édition par toinet le Mar 30 Sep 2014, 20:15; édité 3 fois
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: 2945
Localisation: Le Chesnay, France

MessagePosté le: Lun 29 Sep 2014, 8:55    Sujet du message: Répondre en citant

This is the original boot code at $0800 which uses false opcodes, relocates the code in the text screen area...

Code:

*---------------------------------------------------------*
*     Disassembled with The Flaming Bird Disassembler     *
*    (c) Phoenix corp. 1992,93  -  All rights reserved    *
*---------------------------------------------------------*

         TYP   BIN

         MX    %11
L0800    HEX   04
         LDY   #$00
L0803    LDA   L0800,Y
         STA   $0400,Y
         LDA   $0900,Y
         STA   L04FF+1,Y
         LDA   $0A00,Y
         STA   L0600,Y
         LDA   $0B00,Y
         STA   L06CC+$34,Y
         INY
         BNE   L0803
         JMP   L0421

         ORG   $000421
L0421    JSR   L07A0
         BIT   TXTCLR
         BIT   MIXCLR
         BIT   HIRES
         BIT   TXTPAGE1
         JSR   L0672
         JSR   L04FA
         JSR   L068C
         LDA   IRQLOC+1   ; 3FF
         CMP   $07FF
         BEQ   L0444
         JMP   (SOFTEV)

L0444    INC   L0447
L0447    CMP   L044A
L044A    PHP
         ASL   $2C
         INX
         CPY   #$20
         STY   $FE
         JSR   INIT
         JSR   SETVID
         NOP
         NOP
         NOP
         ADC   $1023
         ORA   [$06]
         JMP   $5FD0

         DB    $00
L0464    DB    $00
L0465    DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $C0
         DB    $12
L0471    DB    $00
L0472    DB    $08
L0473    DB    $98
L0474    DB    $01
         DB    $01
L0476    DB    $02
         DB    $0F
L0478    DB    $00
         DB    $00
         DB    $00
         DB    $00
L047C    ORA   [$06]
         JSR   L0566
L0481    LDX   $2B
         LDA   #$60
         STA   L0464
         LDA   L0474
         STA   $02
         LDA   $C08E,X
L0490    DEY
         BNE   L049E
         DEC   L0464
         BNE   L049E
         JSR   L067E
         JMP   L0481

L049E    LDA   $C08C,X
         BPL   L049E
         CMP   #$D5
         BNE   L0490
L04A7    LDA   $C08C,X
         BPL   L04A7
         CMP   #$DF
         BNE   L0490
L04B0    LDA   $C08C,X
         BPL   L04B0
         CMP   #$9F
         BNE   L0490
L04B9    LDA   $C08C,X
         BPL   L04B9
         CMP   #$D7
         BNE   L0490
L04C2    LDA   $C08C,X
         BPL   L04C2
L04C7    CMP   #$FF
         BNE   L0490
L04CB    LDA   $C08C,X
         BPL   L04CB
L04D0    CMP   #$FF
         BNE   L0490
         LDY   #$00
L04D6    LDA   $C08C,X
         BPL   L04D6
         SEC
         ROL
         STA   $03
L04DF    LDA   $C08C,X
         BPL   L04DF
         AND   $03
         STA   ($00),Y
         INY
         BNE   L04D6
L04EB    LDA   $C08C,X
         BPL   L04EB
         CMP   #$9D
         BNE   L0481
         INC   $01
         STA   $C08E,X
         RTS

L04FA    LDA   #$10
         STA   L0465
L04FF    JSR   L05C8
         LDX   $2B
         LDA   #$00
         STA   $05
         LDA   L0472
         STA   $01
         LDA   L0471
         STA   $00
L0512    JSR   L05DB
         JSR   L047C
         JSR   L047C
         JSR   L047C
         JSR   L047C
         LDA   $01
         CMP   L0473
         BCC   L0512
         LDA   #$3C
         STA   $10
         JSR   L05E7
         LDA   $C08E,X
         LDA   $C08C,X
         RTS

L0536    HEX   9A96979B9D9E9FA6A7ABACADAEAFB2B3
         HEX   B4B5B6B7B9BABBBCBDBEBFCBCDCECFD3
         HEX   D6D7D9DADBDCDDDEDFE5E6E7E9EAEBEC
L0566    INC   $05
         LDA   $05
         AND   #$1F
         TAY
         LDA   L0536,Y
         STA   L04D0+1
         INY
         INY
         INY
         INY
         LDA   L0536,Y
         STA   L04C7+1
         RTS

         LDA   #$00
         STA   L0478
L0583    LDX   $2B
         LDA   $C08E,X
         LDA   #$00
         STA   $04
L058C    LDA   $C08C,X
         BPL   L058C
         CMP   #$D5
         BNE   L058C
L0595    LDA   $C08C,X
         BPL   L0595
         CMP   #$AA
         BNE   L058C
L059E    LDA   $C08C,X
         BPL   L059E
         CMP   #$96
         BNE   L058C
         LDY   #$03
L05A9    LDA   $C08C,X
         BPL   L05A9
         SEC
         ROL
         STA   $02
L05B2    LDA   $C08C,X
         BPL   L05B2
         AND   $02
         STA   $04
         DEY
         BNE   L05A9
         LDA   #$8D
         LDA   $04
         CMP   L0478
         BNE   L058C
         RTS

L05C8    LDA   #$00
         STA   L0478
         JSR   L0583
         LDA   L0476
         STA   $10
         JSR   L05E3
         RTS

L05D9    DB    $00
L05DA    DB    $00
L05DB    LDA   L05D9
         CLC
         ADC   #$01
         STA   $10
L05E3    LDA   $10
         LDX   #$60
L05E7    STX   $06
         STA   L05DA
         CMP   L05D9
         BEQ   L0645
         LDA   #$00
         STA   $11
L05F5    LDA   L05D9
         STA   $12
         SEC
         SBC   L05DA
         BEQ   L0633
L0600    BCS   L0609
         EOR   #$FF
         INC   L05D9
         BCC   L060E
L0609    ADC   #$FE
         DEC   L05D9
L060E    CMP   $11
         BCC   L0614
         LDA   $11
L0614    CMP   #$0C
         BCS   L0619
         TAY
L0619    SEC
         JSR   L0637
         LDA   L065A,Y
         JSR   L0649
         LDA   $12
         CLC
         JSR   L063A
         LDA   L0666,Y
         JSR   L0649
         INC   $11
         BNE   L05F5
L0633    JSR   L0649
         CLC
L0637    LDA   L05D9
L063A    AND   #$03
         ROL
         ORA   $06
         TAX
         LDA   $C080,X
         LDX   $06
L0645    RTS

         TAX
         LDY   #$A0
L0649    LDX   #$11
L064B    DEX
         BNE   L064B
         INC   $13
         BNE   L0654
         INC   $14
L0654    SEC
         SBC   #$01
         BNE   L0649
         RTS

L065A    HEX   01302824201E1D1C1C1C1C1C
L0666    HEX   702C26221F1E1D1C1C1C1C1C
L0672    LDA   #$04
         STA   L05D9
         LDA   #$00
         STA   $10
         JMP   L05E3

L067E    DEC   L0465
         BNE   L0686
         JMP   (SOFTEV)

L0686    JSR   BELL
         LDX   #$60
         RTS

L068C    LDA   #$08
         STA   $01
         LDA   #$8B
         STA   $02
         LDA   #$00
         STA   $00
         TAY
L0699    EOR   ($00),Y
         INY
         BNE   L0699
         INC   $01
         DEC   $02
         BNE   L0699
         STA   IRQLOC+1   ; 3FF
         LDA   #$08
         STA   $01
         LDA   #$8B
         STA   $02
         LDA   #$00
         STA   $00
         TAY
L06B4    CLC
         ADC   ($00),Y
         INY
         BNE   L06B4
         INC   $01
         DEC   $02
         BNE   L06B4
         EOR   IRQLOC+1   ; 3FF
         STA   IRQLOC+1   ; 3FF
         RTS

         DB    $03
         STA   IRQLOC+1
         RTS

L06CC    HEX   F5F52A28FFF52228FDFD202AFDFF2028
         HEX   FDFD2020FFFD2220F5FD2820F5FF282A
         HEX   F5F72828FDF52A28FFFD2A20F5FD2820
         HEX   F5FF282AFFFF2020FFFF2220FFFF2022
         HEX   FFFF2020FDFF2020FFFF2022FFFD2220
         HEX   FFFD2020FFFF2020FFFF2022FFFF2220
         HEX   FFFF2020FFFF2220FFFF2020FFFF2020
         HEX   FFFF2020FFFF2220FFFD2220FFFD2022
         HEX   FDFF2020FDFD2020FFFD2220FDFD2020
         HEX   FDFF2022FDFF2020FFFD2220FFFD2220
         HEX   FDFD2020FFFF2022FFFF2020FFFD2220
         HEX   FDFD2022F7F72828FFF72028FFF72220
         HEX   F7F72028FDFF2020FFFD2020FDFF2220
         HEX   FFF52220
L07A0    LDA   #$00
         STA   SOFTEV
         LDA   #$03
         STA   SOFTEV+1
         JSR   SETPWRC
         LDA   LCBANK2
         LDA   LCBANK2
         LDY   #$00
         LDA   #$D0
         STA   $01
         STY   $00
L07BB    STA   ($00),Y
         INY
         BNE   L07BB
         INC   $01
         BMI   L07BB
         LDA   RROMWRAM2
         LDY   #$00
L07C9    LDA   $07D3,Y
         STA   L0300,Y
         INY
         BPL   L07C9
         RTS

         ORG   $000300
L0300    LDA   #$00
         JSR   L0312
         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         JMP   $C600

L0312    LDY   #$00
         STY   $00
         LDX   #$04
         STX   $01
         LDX   #$BC
L031C    STA   ($00),Y
         INY
         BNE   L031C
         INC   $01
         DEX
         BNE   L031C
         RTS

         DB    $20
         DB    $28
         DB    $FD
         DB    $F5
         DB    $20
         DB    $98
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: 2945
Localisation: Le Chesnay, France

MessagePosté le: Lun 29 Sep 2014, 8:56    Sujet du message: Répondre en citant

Now, let's make it easier to read...

Code:
*
* Galaxie-L
* (c) 1982, Eastman computing Inc.
* (c) 1983, GIE Matra et Hachette
* (k) 2013, LoGo
*

*----------------------------

         org   $0800
         lst   off

         mx    %11

*----------------------------

SOFTEV   EQU   $03F2

TXTCLR   EQU   $C050
MIXCLR   EQU   $C052
TXTPAGE1 EQU   $C054
HIRES    EQU   $C057
LCBANK2  EQU   $C083
RROMWRAM2 EQU  $C085
INIT     EQU   $FB2F
SETPWRC  EQU   $FB6F
SETVID   EQU   $FE93
BELL     EQU   $FF3A

*----------------------------

L0800    HEX   04         ; nb of sectors to read

         LDY   #$00       ; move read sectors
L0803    LDA   L0800,Y    ; at $0400++
         STA   $0400,Y
         LDA   L0800+$100,Y
         STA   $0500,Y
         LDA   L0800+$200,Y
         STA   $0600,Y
         LDA   L0800+$300,Y
         STA   $0700,Y
         INY
         BNE   L0803
         JMP   L0421      ; and jump

*----------------------------

         ORG   $000421

L0421    JSR   L07A0      ; clear ROM
         BIT   TXTCLR
         BIT   MIXCLR
         BIT   HIRES
         BIT   TXTPAGE1

         JSR   L0672      ; 2- move arm to phase 2
         JSR   L04FA      ; 3- load program and move to track $1E
         JSR   L068C      ; 4- calculate checksum
         LDA   $03FF      ; are checksum
         CMP   $07FF      ; equal? Must be $98
         BEQ   L0444      ; ...yes
         JMP   (SOFTEV)   ; ...no, reboot

*--- Some self mod bytes...

L0444    INC   L0447
L0447    CMP   L044A      ; CD (CMP) => CE (DEC)

L044A    PHP              ; 08 (PHP) => 07 (ORA ind long)
         ASL   $2C        ; 06 (ASL) + 2C (BIT)
         INX              ; E8 (INX)
         CPY   #$20       ; C0 (CPY) + 20 (JSR)
         STY   $FE        ; 86 (STY) + FE (INC)

*--- And now, the decyphered version

         ORA   [$06]      ; This opcode is bad!
         BIT   $C0E8
         JSR   $FE86

*--- End of decyphered code

         JSR   INIT
         JSR   SETVID
         NOP
         NOP
         NOP
         ADC   $1023
         ORA   [$06]      ; This opcode is bad!
         JMP   $5FD0

         DB    $00
L0464    DB    $00
L0465    DB    $00        ; set to $10
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $C0
         DB    $12
L0471    DB    $00
L0472    DB    $08
L0473    DB    $98
L0474    DB    $01
         DB    $01
L0476    DB    $02        ; phase
         DB    $0F
L0478    DB    $00
         DB    $00
         DB    $00
         DB    $00

*----------------------------

L047C    ORA   [$06]      ; This opcode is bad!
         JSR   L0566      ; prepare marker

L0481    LDX   $2B
         LDA   #$60
         STA   L0464

         LDA   L0474      ; useless?
         STA   $02
         LDA   $C08E,X
L0490    DEY
         BNE   L049E
         DEC   L0464      ; nb errors
         BNE   L049E
         JSR   L067E      ; reboot
         JMP   L0481

*----------------------------

L049E    LDA   $C08C,X
         BPL   L049E
         CMP   #$D5
         BNE   L0490
L04A7    LDA   $C08C,X
         BPL   L04A7
         CMP   #$DF
         BNE   L0490
L04B0    LDA   $C08C,X
         BPL   L04B0
         CMP   #$9F
         BNE   L0490
L04B9    LDA   $C08C,X
         BPL   L04B9
         CMP   #$D7
         BNE   L0490
L04C2    LDA   $C08C,X
         BPL   L04C2
L04C7    CMP   #$FF       ; variable
         BNE   L0490
L04CB    LDA   $C08C,X
         BPL   L04CB
L04D0    CMP   #$FF       ; variable
         BNE   L0490

         LDY   #$00       ; A 4*4 encoded routine
L04D6    LDA   $C08C,X
         BPL   L04D6
         SEC
         ROL
         STA   $03
L04DF    LDA   $C08C,X
         BPL   L04DF
         AND   $03
         STA   ($00),Y
         INY
         BNE   L04D6

L04EB    LDA   $C08C,X    ; End data marker
         BPL   L04EB
         CMP   #$9D
         BNE   L0481
         INC   $01        ; Next page
         STA   $C08E,X    ; Hum...
         RTS

*----------------------------
* STEP 3
*----------------------------

L04FA    LDA   #$10
         STA   L0465
L04FF    JSR   L05C8

         LDX   $2B
         LDA   #$00
         STA   $05
         LDA   L0472      ; $08
         STA   $01
         LDA   L0471      ; $00
         STA   $00

L0512    JSR   L05DB      ; move arm
         JSR   L047C      ; read 4*4 page
         JSR   L047C      ; read 4*4 page
         JSR   L047C      ; read 4*4 page
         JSR   L047C      ; read 4*4 page

         LDA   $01        ; next RAM ptr
         CMP   L0473      ; $98
         BCC   L0512

         LDA   #$3C       ; track $1E
         STA   $10
         JSR   L05E7      ; move arm
         LDA   $C08E,X    ; prepare read mode
         LDA   $C08C,X
         RTS

*----------------------------
* Table of nibbles

L0536    HEX   9A96979B9D9E9FA6A7ABACADAEAFB2B3
         HEX   B4B5B6B7B9BABBBCBDBEBFCBCDCECFD3
         HEX   D6D7D9DADBDCDDDEDFE5E6E7E9EAEBEC

L0566    INC   $05
         LDA   $05
         AND   #$1F
         TAY
         LDA   L0536,Y
         STA   L04D0+1
         INY
         INY
         INY
         INY
         LDA   L0536,Y
         STA   L04C7+1
         RTS

*----------------------------

         LDA   #$00
         STA   L0478

L0583    LDX   $2B
         LDA   $C08E,X
         LDA   #$00
         STA   $04
L058C    LDA   $C08C,X
         BPL   L058C
         CMP   #$D5
         BNE   L058C
L0595    LDA   $C08C,X
         BPL   L0595
         CMP   #$AA
         BNE   L058C
L059E    LDA   $C08C,X
         BPL   L059E
         CMP   #$96
         BNE   L058C
         LDY   #$03
L05A9    LDA   $C08C,X
         BPL   L05A9
         SEC
         ROL
         STA   $02
L05B2    LDA   $C08C,X
         BPL   L05B2
         AND   $02
         STA   $04
         DEY
         BNE   L05A9

* We read Track, Sector, Volume
* and we check volume only

         LDA   #$8D
         LDA   $04        ; volume must be $00
         CMP   L0478
         BNE   L058C      ; if not, we retry...
         RTS

*----------------------------

L05C8    LDA   #$00
         STA   L0478
         JSR   L0583      ; read header info

         LDA   L0476      ; $02
         STA   $10
         JSR   L05E3      ; move arm
         RTS

*----------------------------
* MOVE ARM
*----------------------------

L05D9    DB    $00
L05DA    DB    $00

L05DB    LDA   L05D9
         CLC
         ADC   #$01
         STA   $10

L05E3    LDA   $10
         LDX   #$60
L05E7    STX   $06
         STA   L05DA
         CMP   L05D9
         BEQ   L0645
         LDA   #$00
         STA   $11
L05F5    LDA   L05D9
         STA   $12
         SEC
         SBC   L05DA
         BEQ   L0633
L0600    BCS   L0609
         EOR   #$FF
         INC   L05D9
         BCC   L060E
L0609    ADC   #$FE
         DEC   L05D9
L060E    CMP   $11
         BCC   L0614
         LDA   $11
L0614    CMP   #$0C
         BCS   L0619
         TAY
L0619    SEC
         JSR   L0637
         LDA   L065A,Y
         JSR   L0649
         LDA   $12
         CLC
         JSR   L063A
         LDA   L0666,Y
         JSR   L0649
         INC   $11
         BNE   L05F5
L0633    JSR   L0649
         CLC
L0637    LDA   L05D9
L063A    AND   #$03
         ROL
         ORA   $06
         TAX
         LDA   $C080,X
         LDX   $06
L0645    RTS

         TAX
         LDY   #$A0
L0649    LDX   #$11
L064B    DEX
         BNE   L064B
         INC   $13
         BNE   L0654
         INC   $14
L0654    SEC
         SBC   #$01
         BNE   L0649
         RTS

L065A    HEX   01302824201E1D1C1C1C1C1C
L0666    HEX   702C26221F1E1D1C1C1C1C1C

*----------------------------
* STEP 2
*----------------------------

L0672    LDA   #$04       ; phase to go
         STA   L05D9
         LDA   #$00       ; current phase
         STA   $10
         JMP   L05E3      ; move arm

*--- read error, prepare reboot

L067E    DEC   L0465      ; read error
         BNE   L0686
         JMP   (SOFTEV)

L0686    JSR   BELL
         LDX   #$60
         RTS

*----------------------------
* STEP 3
*----------------------------

L068C    LDA   #$08       ; Calculate checksum
         STA   $01
         LDA   #$8B
         STA   $02
         LDA   #$00
         STA   $00
         TAY
L0699    EOR   ($00),Y
         INY
         BNE   L0699
         INC   $01
         DEC   $02
         BNE   L0699
         STA   $03FF      ; $03FF

         LDA   #$08
         STA   $01
         LDA   #$8B
         STA   $02
         LDA   #$00
         STA   $00
         TAY
L06B4    CLC
         ADC   ($00),Y
         INY
         BNE   L06B4
         INC   $01
         DEC   $02
         BNE   L06B4
         EOR   $03FF      ; $03FF
         STA   $03FF      ; $03FF
         RTS

         DB    $03
         STA   $03FF
         RTS

         HEX   F5F52A28FFF52228FDFD202AFDFF2028
         HEX   FDFD2020FFFD2220F5FD2820F5FF282A
         HEX   F5F72828FDF52A28FFFD2A20F5FD2820
         HEX   F5FF282AFFFF2020FFFF2220FFFF2022
         HEX   FFFF2020FDFF2020FFFF2022FFFD2220
         HEX   FFFD2020FFFF2020FFFF2022FFFF2220
         HEX   FFFF2020FFFF2220FFFF2020FFFF2020
         HEX   FFFF2020FFFF2220FFFD2220FFFD2022
         HEX   FDFF2020FDFD2020FFFD2220FDFD2020
         HEX   FDFF2022FDFF2020FFFD2220FFFD2220
         HEX   FDFD2020FFFF2022FFFF2020FFFD2220
         HEX   FDFD2022F7F72828FFF72028FFF72220
         HEX   F7F72028FDFF2020FFFD2020FDFF2220
         HEX   FFF52220

*----------------------------
* STEP 1
*----------------------------

L07A0    LDA   #$00       ; Set RESET
         STA   SOFTEV
         LDA   #$03
         STA   SOFTEV+1
         JSR   SETPWRC

         LDA   LCBANK2    ; Clear ROM
         LDA   LCBANK2
         LDY   #$00
         LDA   #$D0
         STA   $01
         STY   $00
L07BB    STA   ($00),Y
         INY
         BNE   L07BB
         INC   $01
         BMI   L07BB

         LDA   RROMWRAM2  ; Copy a reboot routine
         LDY   #$00
L07C9    LDA   $07D3,Y
         STA   L0300,Y
         INY
         BPL   L07C9
         RTS

*----------------------------

         ORG   $000300
L0300    LDA   #$00
         JSR   L0312
         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         NOP
         JMP   $C600

*----------

L0312    LDY   #$00       ; Erase $0400..$BFFF
         STY   $00
         LDX   #$04
         STX   $01
         LDX   #$BC
L031C    STA   ($00),Y
         INY
         BNE   L031C
         INC   $01
         DEX
         BNE   L031C
         RTS

*----------------------------

         DB    $20
         DB    $28
         DB    $FD
         DB    $F5
         DB    $20
         DB    $98        ; $07FF
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
amauget



Inscrit le: 06 Déc 2009
Messages: 958
Localisation: Nantes

MessagePosté le: Mar 30 Sep 2014, 7:23    Sujet du message: Répondre en citant

Excellent toinet !

Star Maze est un de mes jeux préférés. Je ne savais pas qu'il existait une version française. J'attends l'image crackée avec impatience Very Happy
Pour la petite histoire, Gordon Eastman, l'auteur du jeux, réalise quelques ventes sur eBay de temps en temps...
_________________
Antony
Apple II forever
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
qkumba



Inscrit le: 29 Jan 2012
Messages: 176

MessagePosté le: Mar 30 Sep 2014, 16:08    Sujet du message: Re: Galaxie-L (Ediciel, 1984) Répondre en citant

toinet a écrit:
please read the GL.TODO.S file to finish the crack by adding one read and one write sector routine for the score to be handled. A work for Peter...


Thank you, I will take a look at it.
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: 2945
Localisation: Le Chesnay, France

MessagePosté le: Mar 30 Sep 2014, 20:04    Sujet du message: Répondre en citant

Now that we have the understandable version of the boot code, we will rewrite it to grab the code in RAM...

Code:
*
* Galaxie-L
* (c) 1982, Eastman computing Inc.
* (c) 1983, GIE Matra et Hachette
* (k) 2014, LoGo
*

*----------------------------

         org   $b000
         lst   off

         mx    %11

*----------------------------

SOFTEV   EQU   $03F2

TXTCLR   EQU   $C050
MIXCLR   EQU   $C052
TXTPAGE1 EQU   $C054
HIRES    EQU   $C057
LCBANK2  EQU   $C083
RROMWRAM2 EQU  $C085
INIT     EQU   $FB2F
SETPWRC  EQU   $FB6F
SETVID   EQU   $FE93
BELL     EQU   $FF3A

*----------------------------

         jmp   debut

L0004    DB    $00
L03FE    DB    $00
L03FF    DB    $00
L07FF    DB    $98        ; $07FF

debut    ldx   #$60

         JSR   L0672      ; 2- move arm to phase 2
         JSR   L04FA      ; 3- load program and move to track $1E
         JSR   L068C      ; 4- calculate checksum

         BIT   $C0E8
         jmp   $ff59

         DB    $00
L0464    DB    $00
L0465    DB    $00        ; set to $10
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $00
         DB    $C0
         DB    $12
L0471    DB    $00
L0472    DB    $08
L0473    DB    $98
L0474    DB    $01
         DB    $01
L0476    DB    $02        ; phase
         DB    $0F
L0478    DB    $00
         DB    $00
         DB    $00
         DB    $00

*----------------------------

L047C    JSR   L0566      ; prepare marker

L0481    LDX   $2B
         LDA   #$60
         STA   L0464

         LDA   L0474      ; useless?
         STA   $02
         LDA   $C08E,X
L0490    DEY
         BNE   L049E
         DEC   L0464      ; nb errors
         BNE   L049E
         JSR   L067E      ; reboot
         JMP   L0481

*----------------------------

L049E    LDA   $C08C,X
         BPL   L049E
         CMP   #$D5
         BNE   L0490
L04A7    LDA   $C08C,X
         BPL   L04A7
         CMP   #$DF
         BNE   L0490
L04B0    LDA   $C08C,X
         BPL   L04B0
         CMP   #$9F
         BNE   L0490
L04B9    LDA   $C08C,X
         BPL   L04B9
         CMP   #$D7
         BNE   L0490
L04C2    LDA   $C08C,X
         BPL   L04C2
L04C7    CMP   #$FF       ; variable
         BNE   L0490
L04CB    LDA   $C08C,X
         BPL   L04CB
L04D0    CMP   #$FF       ; variable
         BNE   L0490

         LDY   #$00       ; A 4*4 encoded routine
L04D6    LDA   $C08C,X
         BPL   L04D6
         SEC
         ROL
         STA   $03
L04DF    LDA   $C08C,X
         BPL   L04DF
         AND   $03
         STA   ($00),Y
         INY
         BNE   L04D6

L04EB    LDA   $C08C,X    ; End data marker
         BPL   L04EB
         CMP   #$9D
         BNE   L0481
         INC   $01        ; Next page
         STA   $C08E,X    ; Hum...
         RTS

         ds    \

*----------------------------
* STEP 3
*----------------------------

L04FA    LDA   #$10
         STA   L0465
L04FF    JSR   L05C8

         LDX   $2B
         LDA   #$00
         STA   $05
         LDA   L0472      ; $08
         STA   $01
         LDA   L0471      ; $00
         STA   $00

L0512    JSR   L05DB      ; move arm
         JSR   L047C      ; read 4*4 page
         JSR   L047C      ; read 4*4 page
         JSR   L047C      ; read 4*4 page
         JSR   L047C      ; read 4*4 page

         LDA   $01        ; next RAM ptr
         CMP   L0473      ; $98
         BCC   L0512

         LDA   #$3C       ; track $1E
         STA   $10
         JSR   L05E7      ; move arm
         LDA   $C08E,X    ; prepare read mode
         LDA   $C08C,X
         RTS

*----------------------------
* Table of nibbles

L0536    HEX   9A96979B9D9E9FA6A7ABACADAEAFB2B3
         HEX   B4B5B6B7B9BABBBCBDBEBFCBCDCECFD3
         HEX   D6D7D9DADBDCDDDEDFE5E6E7E9EAEBEC

L0566    INC   $05
         LDA   $05
         AND   #$1F
         TAY
         LDA   L0536,Y
         STA   L04D0+1
         INY
         INY
         INY
         INY
         LDA   L0536,Y
         STA   L04C7+1
         RTS

*----------------------------

         LDA   #$00
         STA   L0478

L0583    LDX   $2B
         LDA   $C08E,X
         LDA   #$00
         STA   $04
L058C    LDA   $C08C,X
         BPL   L058C
         CMP   #$D5
         BNE   L058C
L0595    LDA   $C08C,X
         BPL   L0595
         CMP   #$AA
         BNE   L058C
L059E    LDA   $C08C,X
         BPL   L059E
         CMP   #$96
         BNE   L058C
         LDY   #$03
L05A9    LDA   $C08C,X
         BPL   L05A9
         SEC
         ROL
         STA   $02
L05B2    LDA   $C08C,X
         BPL   L05B2
         AND   $02
         STA   $04
         DEY
         BNE   L05A9

* We read Track, Sector, Volume
* and we check volume only

         LDA   #$8D
         LDA   $04        ; volume must be $00
         STA   L0004
* CMP L0478
* BNE L058C ; if not, we retry...
         RTS

*----------------------------

L05C8    LDA   #$00
         STA   L0478
         JSR   L0583      ; read header info

         LDA   L0476      ; $02
         STA   $10
         JSR   L05E3      ; move arm
         RTS

         ds    \

*----------------------------
* MOVE ARM
*----------------------------

L05D9    DB    $00
L05DA    DB    $00

L05DB    LDA   L05D9
         CLC
         ADC   #$01
         STA   $10

L05E3    LDA   $10
         LDX   #$60
L05E7    STX   $06
         STA   L05DA
         CMP   L05D9
         BEQ   L0645
         LDA   #$00
         STA   $11
L05F5    LDA   L05D9
         STA   $12
         SEC
         SBC   L05DA
         BEQ   L0633
L0600    BCS   L0609
         EOR   #$FF
         INC   L05D9
         BCC   L060E
L0609    ADC   #$FE
         DEC   L05D9
L060E    CMP   $11
         BCC   L0614
         LDA   $11
L0614    CMP   #$0C
         BCS   L0619
         TAY
L0619    SEC
         JSR   L0637
         LDA   L065A,Y
         JSR   L0649
         LDA   $12
         CLC
         JSR   L063A
         LDA   L0666,Y
         JSR   L0649
         INC   $11
         BNE   L05F5
L0633    JSR   L0649
         CLC
L0637    LDA   L05D9
L063A    AND   #$03
         ROL
         ORA   $06
         TAX
         LDA   $C080,X
         LDX   $06
L0645    RTS

         TAX
         LDY   #$A0
L0649    LDX   #$11
L064B    DEX
         BNE   L064B
         INC   $13
         BNE   L0654
         INC   $14
L0654    SEC
         SBC   #$01
         BNE   L0649
         RTS

L065A    HEX   01302824201E1D1C1C1C1C1C
L0666    HEX   702C26221F1E1D1C1C1C1C1C

*----------------------------
* STEP 2
*----------------------------

L0672    LDA   #$04       ; phase to go
         STA   L05D9
         LDA   #$00       ; current phase
         STA   $10
         JMP   L05E3      ; move arm

*--- read error, prepare reboot

L067E    DEC   L0465      ; read error
         BNE   L0686

L0686    JSR   BELL
         LDX   #$60
         RTS

*----------------------------
* STEP 3
*----------------------------

L068C    LDA   #$08       ; Calculate checksum
         STA   $01
         LDA   #$8B
         STA   $02
         LDA   #$00
         STA   $00
         TAY
L0699    EOR   ($00),Y
         INY
         BNE   L0699
         INC   $01
         DEC   $02
         BNE   L0699
         STA   L03FF      ; $03FF

         LDA   #$08
         STA   $01
         LDA   #$8B
         STA   $02
         LDA   #$00
         STA   $00
         TAY
L06B4    CLC
         ADC   ($00),Y
         INY
         BNE   L06B4
         INC   $01
         DEC   $02
         BNE   L06B4
         EOR   L03FF      ; $03FF
         STA   L03FE      ; $03FF
         RTS

         ds    \


Note that the use of $3FE and $3FF to calculate the checksum of the program. We will later check in the code if the calculated value is checked. That is a way to check for an original file against a copy.
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: 2945
Localisation: Le Chesnay, France

MessagePosté le: Mar 30 Sep 2014, 20:10    Sujet du message: Répondre en citant

Now, we have the program in memory. You will find for the FE03 or FF03 patterns in memory, you will find one occurence of each but it seems to be only data, not code (Peter, do you confirm?)

The game is now loaded at $0800 until $97FF. If you $0800G, the game will run with no issue, that is fine!

But, you will also determine that the disk drive is turned on, some data is read at $A700. That looks like a score table (understand: it is the score table)

There is one routine to read the score table and one routine to write it. This is a simple routine that reads or writes nibbles of such data, no more.

The code below is the relocated code. Once in memory, the game starts at $5FD0 where it relocates some data in a higher address in memory.

Code:
*
* Galaxie-L
* (c) 1982, Eastman computing Inc.
* (c) 1983, GIE Matra et Hachette
* (k) 2014, LoGo
*

*----------------------------

         org   $7eb5
         lst   off

         mx    %11

*----------------------------
* READ
*----------------------------

L7EB5    JSR   $BB50
         LDA   $C0EE
         LDA   #$32       ; Number of data to read
         STA   $03

L7EBF    LDY   #$00       ; Read nibbles
L7EC1    LDA   $C0EC
         BPL   L7EC1
         CMP   #$FF
         BEQ   L7ECF
         DEY
         BNE   L7EC1
         BEQ   L7F2D
L7ECF    LDY   #$C8
L7ED1    LDA   $C0EC
         BPL   L7ED1
         CMP   #$FF
         BNE   L7F2D
         DEY
         BNE   L7ED1
L7EDD    LDA   $C0EC
         BPL   L7EDD
         CMP   #$FF
         BEQ   L7EDD
         CMP   #$D5
         BNE   L7F2D
L7EEA    LDA   $C0EC
         BPL   L7EEA
         CMP   #$AA
         BNE   L7F2D
L7EF3    LDA   $C0EC
         BPL   L7EF3
         CMP   #$AD
         BNE   L7F2D

         LDX   #$61       ; Read nibbles
L7EFE    LDA   $C0EC
         BPL   L7EFE
         STA   $A700,X
         DEX
         BPL   L7EFE

         LDX   #$61       ; Decode nibbles
         LDY   #$00
         SEC
L7F0E    LDA   $A700,X
         ROL
         DEX
         AND   $A700,X
         STA   $AEC0,Y
         INY
         DEX
         BPL   L7F0E

         LDX   #$2F       ; Calculate checksum
         LDA   #$00
L7F21    CLC
         ADC   $AEC0,X
         DEX
         BPL   L7F21
         CMP   $AEF0      ; Correct
         BEQ   L7F3B

L7F2D    DEC   $03        ; One more try
         BNE   L7EBF

         LDA   #$00       ; Erase all
         LDX   #$2F       ; We've not been able
L7F35    STA   $AEC0,X    ; to read the data
         DEX
         BPL   L7F35
L7F3B    LDA   $C0E8
         RTS

*----------------------------
* WRITE
*----------------------------

L7F3F    JSR   $BB50
         JSR   L7F96      ; Prepare data
         LDX   #$00
         LDA   #$18       ; Number of nibbles to write
         STA   $03        ; 18 pairs = $30 bytes
         LDA   $C0ED,X    ; Is it write protected?
         LDA   $C0EE,X
         BMI   L7F76

         LDA   #$FF       ; Write data
         STA   $C0EF,X
         CMP   $C0EC,X
         PHA
         PLA
         PHA
         PLA
         NOP
         JSR   L7F7F      ; 6+6 cycles
L7F63    JSR   L7F80
         DEC   $03        ; Next data please
         BNE   L7F63
         LDY   #$67
L7F6C    LDA   $A700,Y
         JSR   $BB49
         NOP
         DEY
         BPL   L7F6C

L7F76    LDA   $C0EE,X    ; Read more
         LDA   $C0EC,X
         LDA   $C0E8
L7F7F    RTS

L7F80    LDY   #$00       ; Write data
         JMP   L7F8B      ; with delay

L7F85    JSR   L7F7F
         JSR   L7F7F
L7F8B    STA   $C0ED,X
         CMP   $C0EC,X
         NOP
         DEY
         BNE   L7F85
         RTS

L7F96    LDX   #$2F       ; Calculate checksum
         LDA   #$00
L7F9A    CLC
         ADC   $AEC0,X
         DEX
         BPL   L7F9A
         STA   $AEF0

         LDA   #$EB       ; Prepare nibbles
         STA   $A700
         LDA   #$AA
         STA   $A701
         STA   $A766
         LDA   #$DE
         STA   $A702
         LDA   #$AD
         STA   $A765
         LDA   #$D5
         STA   $A767

         LDY   #$03       ; Encode data into nibbles
         LDX   #$30
L7FC4    LDA   $AEC0,X
         ORA   #$AA
         STA   $A700,Y
         INY
         LDA   $AEC0,X
         LSR
         ORA   #$AA
         STA   $A700,Y
         INY
         DEX
         BPL   L7FC4
         RTS
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: 2945
Localisation: Le Chesnay, France

MessagePosté le: Mar 30 Sep 2014, 20:14    Sujet du message: Répondre en citant

What I did on my v1 crack is to use Apple's standard RWTS, the standard boot1 code and no more. See track 0, sector 1 for more information.

To get a complete and more interesting crack, please find room in Apple's memory to put a RWTS to read/write the score table on a standard floppy disk.

This is the TO-DO for Peter Wink

Code:
*
* Galaxie-L
* (c) 1982, Eastman computing Inc.
* (c) 1983, GIE Matra et Hachette
* (k) 2014, LoGo
*

*----------------------------
* TO-DO for a complete crack
*
*
* Track 4, sector 5, offset $B5: 60 => 20
*  That will read the score at T1E/S00
*
* Track 4, sector 6, offset $3F: 60 => 20
*  That will save the score at T1E/S00
*
* Find some room to have a read/write sector routine
* And change the routines described in GL.RWTS.S
*
* LoGo
* 9/2014
*
*----------------------------
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: Mar 30 Sep 2014, 23:28    Sujet du message: Répondre en citant

toinet a écrit:
Now, we have the program in memory. You will find for the FE03 or FF03 patterns in memory, you will find one occurence of each but it seems to be only data, not code (Peter, do you confirm?)


Yes, one of each, both data.
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: Mar 30 Sep 2014, 23:30    Sujet du message: Répondre en citant

toinet a écrit:
To get a complete and more interesting crack, please find room in Apple's memory to put a RWTS to read/write the score table on a standard floppy disk.

This is the TO-DO for Peter ;-)


I see enough room for the read OR the write, but not obviously both. I think that a read routine will read the write routine and then be discarded.
It will be interesting work.
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: 2945
Localisation: Le Chesnay, France

MessagePosté le: Mer 01 Oct 2014, 6:47    Sujet du message: Répondre en citant

That is a very clever idea, Peter!
av
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: Mer 01 Oct 2014, 16:03    Sujet du message: Répondre en citant

I used what I think is a better idea - I read the scores during the boot time (a little insert before the jump to $5FD0, using the new RWTS), so we still don't use the original read routine. That saves some space, which I desperately need. I hope that it will be enough, but it's not clear yet. The write *routine* fits, but the nibble data? Ehhh...
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: 2945
Localisation: Le Chesnay, France

MessagePosté le: Mer 01 Oct 2014, 17:29    Sujet du message: Répondre en citant

OK, I will provide the original score table.
For nibbles, is there some room available near the $A700 area?
av
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 02 Oct 2014, 1:57    Sujet du message: Répondre en citant

I copied the nibbilisation table to the stack, and made use of the space at $AE00-AF00 for the encoding.
Not so bad after all.
The disk was sent in e-mail.
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: 2945
Localisation: Le Chesnay, France

MessagePosté le: Ven 03 Oct 2014, 20:48    Sujet du message: Répondre en citant

And v2 of the crack, courtesy San Inc., is available at http://www.brutaldeluxe.fr/crack/

Nice work, Sir!

LoGo
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