
         LST   OFF
         ORG   $6000

********************************
*                              *
*       INTRO MURYADEN 1       *
*      (C)1989 BYTLEJUICE      *
*       SOURCE BY DECKARD      *
*                              *
********************************

* Page 0

CPT_LIG  EQU   $0F        ; compteur ligne Hires
GBASL    EQU   $26        ; pointeur {cran calcul{ par HPOSN
GBASH    EQU   $27
PTR_DATA EQU   $3C        ; pointeur datas {cran
HPAG     EQU   $E6        ; $20=page 1 / $40 = page 2
CPT_LIG2 EQU   $FE        ; compteur ligne Hires
CPT_COL  EQU   $FF        ; compteur byte colonne Hires

* Point d'entr{e = START_INTRO ($6270)

CPT_ANIM_M EQU $0800      ; compteur mvt anim Muryaden
H0800    EQU   $0800      ; relocate : destination
H1C00    EQU   $1C00      ; relocate : fin destination+1
SCROLL   EQU   $0801      ; scroll message Deckard
PLAY_ED  EQU   $1000      ; player Electric Duet
UNPACK   EQU   $9000
CMP_PAG  =     UNPACK+$0B
LDA_PAG  =     UNPACK+$0F
H9600    EQU   $9600      ; relocate : source
RDOS     EQU   $BE00

* Images ou morceaux d'images compress{s

PAK_AUTEURS EQU $6760     ; image auteurs (AUTEURS packed)
PAK_IMG2 EQU   $6E50      ; image monstre en extase (IMG2 packed)
PAK_IMG1 EQU   $8000      ; image monstre d{but (IMG1 packed)
PAK_MVT1 EQU   $8B2D      ; mouvement 1 Muryaden (MVT1 packed)
PAK_MVT2 EQU   $8C19      ; mouvement 2 Muryaden (MVT2 packed)
PAK_MVT3 EQU   $8CEB      ; mouvement 3 Muryaden (MVT3 packed)
PAK_MVT4 EQU   $8DB6      ; mouvement 4 Muryaden (MVT4 packed)
PAK_MVT5 EQU   $8E71      ; mouvement 5 Muryaden (MVT5 packed)
PAK_VISAGE1 EQU $8F5D     ; mouvement 1 visage (VISAGE1 packed)
PAK_VISAGE2 EQU $8F89     ; mouvement 2 visage (VISAGE2 packed)

* ROM

STROBE   EQU   $C010
SPKR     EQU   $C030
TXTCLR   EQU   $C050
LOWSCR   EQU   $C054
HISCR    EQU   $C055
HIRES    EQU   $C057
HF3F2    EQU   $F3F2
HPOSN    EQU   $F411
SETTXT   EQU   $FB39
HOME     EQU   $FC58
WAIT     EQU   $FCA8

*-------------------------------
* 1er {cran : anim et musique
* avec Muryaden et le monstre
*-------------------------------

PART1    LDA   #<PAK_IMG1 ; image monstre d{but
         STA   PTR_DATA
         LDA   #>PAK_IMG1
         STA   PTR_DATA+1
         JSR   UNPACK

         BIT   TXTCLR
         BIT   HISCR
         BIT   HIRES
         JSR   PREP_ECRAN1 ; {cran vert + affichage monstre
         JSR   PLAY_ED    ; musique avec anim Muryaden et monstre
         RTS

         DS    3,0

*-------------------------------
* S{quence des animations
* pendant la musique ED
*-------------------------------

ANIM1    LDA   CPT_ANIM_M ; s{quence suivante
         INC   CPT_ANIM_M
         CMP   #9         ; derni}re valeur?
         BEQ   H6061      ; oui

         CMP   #1
         BNE   H602F

         JSR   DO_MVT1

H602F    CMP   #2
         BNE   H6036

         JSR   DO_MVT2

H6036    CMP   #3
         BNE   H603D

         JSR   DO_MVT3

H603D    CMP   #4
         BNE   H6044

         JSR   DO_MVT4

H6044    CMP   #5
         BNE   H604B

         JSR   DO_MVT3

H604B    CMP   #6
         BNE   H6052

         JSR   DO_VISAGE1 ; anim visage monstre

H6052    CMP   #7
         BNE   H6059

         JSR   DO_MVT2

H6059    CMP   #8
         BNE   H6060

         JSR   DO_MVT5
H6060    RTS


H6061    JSR   DO_VISAGE2 ; anim visage monstre
         LDA   #0         ; init compteur anim Muryaden
         STA   CPT_ANIM_M
         RTS

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

         DS    22,$EA     ; NOP

*-------------------------------
* Liste des anims sur IMG1
*-------------------------------

DO_MVT1  LDA   #<PAK_MVT1
         STA   PTR_DATA
         LDA   #>PAK_MVT1
         STA   PTR_DATA+1
         JSR   UNPACK
         RTS

DO_MVT2  LDA   #<PAK_MVT2
         STA   PTR_DATA
         LDA   #>PAK_MVT2
         STA   PTR_DATA+1
         JSR   UNPACK
         RTS

DO_MVT3  LDA   #<PAK_MVT3
         STA   PTR_DATA
         LDA   #>PAK_MVT3
         STA   PTR_DATA+1
         JSR   UNPACK
         RTS

DO_MVT4  LDA   #<PAK_MVT4
         STA   PTR_DATA
         LDA   #>PAK_MVT4
         STA   PTR_DATA+1
         JSR   UNPACK
         RTS

DO_MVT5  LDA   #<PAK_MVT5
         STA   PTR_DATA
         LDA   #>PAK_MVT5
         STA   PTR_DATA+1
         JSR   UNPACK
         RTS

DO_VISAGE1 LDA #<PAK_VISAGE1
         STA   PTR_DATA
         LDA   #>PAK_VISAGE1
         STA   PTR_DATA+1
         JSR   UNPACK
         RTS

DO_VISAGE2 LDA #<PAK_VISAGE2
         STA   PTR_DATA
         LDA   #>PAK_VISAGE2
         STA   PTR_DATA+1
         JSR   UNPACK
         RTS

         DFB   0

*-------------------------------
* Pr{paration {cran pour anim 1
*-------------------------------

PREP_ECRAN1 JSR ECRAN_VERT
         JSR   DSP_MONSTRE ; affichage monstre + muryaden
         LDA   #0         ; init anim Muryaden
         STA   CPT_ANIM_M
         RTS

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

         DS    15,0

*-------------------------------
* Rempli {cran HGR2 avec masque
* vert et blanc
*-------------------------------

ECRAN_VERT LDA #$40       ; HGR2
         STA   HPAG
         NOP
         NOP
         NOP

         LDA   #0
         STA   CPT_LIG

         LDA   CPT_LIG
H60FD    LDY   #0
         LDX   #0
         JSR   HPOSN      ; positionne sur ligne courante

         LDY   #0         ; affiche ligne verte sur l'{cran
H6106    LDA   LIGNE_VERTE,Y
         STA   (GBASL),Y
         INY
         CPY   #40        ; dernier octet de la ligne fini?
         BNE   H6106      ; non

         JSR   SON_SCRN_VERT ; bruitage {cran vert
         INC   CPT_LIG
         LDA   CPT_LIG
         CMP   #192       ; derni}re ligne?
         BNE   H60FD      ; non

         RTS

*-------------------------------
* Bruitage {cran vert
*-------------------------------

SON_SCRN_VERT LDA CPT_LIG
         ADC   #$30
         TAX
H6121    STA   SPKR
         DEX
         BNE   H6121

         RTS

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

         DS    4,0

*-------------------------------
* Son sur l'extase du monstre
*-------------------------------

SOUND_MONS LDX #$FF
         STX   H6185+1
         LDA   #$01
         STA   H6185
H6136    LDA   #$30
         STA   $F0
H613A    LDX   H6185+1
H613D    DEX
         BNE   H613D

         BIT   SPKR
         LDX   H6185
H6146    DEX
         BNE   H6146

         BIT   SPKR
         DEC   $F0
         BNE   H613A

         DEC   H6185+1
         INC   H6185
         LDA   H6185
         CMP   #$1B
         BNE   H6136

H615D    LDA   #$30
         STA   $F0
H6161    LDX   H6185+1
H6164    DEX
         BNE   H6164

         BIT   SPKR
         LDX   H6185
H616D    DEX
         BNE   H616D

         BIT   SPKR
         DEC   $F0
         BNE   H6161

         DEC   H6185
         INC   H6185+1
         LDA   H6185
         CMP   #$00
         BNE   H615D

         RTS

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

H6185    HEX   0000       ; octets pour son

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

         HEX   8A48180000 ; not used

*-------------------------------
* 40 octets pour la ligne verte
* et blanche
*-------------------------------

LIGNE_VERTE HEX 3E572B576A552A75
         HEX   2A552A553A552A55
         HEX   2A552A552B552A55
         HEX   2A552A5D2A552A55
         HEX   2E552A576A556B7D

         HEX   000000000000 ; not used

*-------------------------------
* Affichage monstre + Muryaden
* sur HGR2 apr}s {cran vert.
* Affichage de haut en bas avec
* bruitage
*-------------------------------

DSP_MONSTRE LDA #0        ; commence en haut @ gauche
         STA   CPT_LIG2
         STA   CPT_COL
         LDA   #$20       ; HGR1
         STA   HPAG
H61C4    JSR   POS_LIG    ; positionne sur ligne courante

H61C7    LDA   (GBASL),Y  ; lecture octet HGR1
         BIT   SPKR
         TAX
         LDA   GBASH
         STA   $FD        ; sauve adr HGR1
         CLC
         ADC   #$20
         STA   GBASH      ; pointe maintenant sur HGR2
         TXA
         LDY   CPT_COL
         STA   (GBASL),Y  ; {criture sur HGR2
         LDA   $FD        ; repart sur HGR1
         STA   GBASH
         INC   CPT_COL    ; colonne suivante
         LDA   CPT_COL
         CMP   #40        ; ligne termin{e?
         BEQ   H61EC      ; oui

         LDY   CPT_COL    ; colonne suivante de la ligne courante
         JMP   H61C7

H61EC    INC   CPT_LIG2   ; ligne suivante
         LDA   CPT_LIG2
         CMP   #192       ; derni}re ligne?
         BEQ   H6205      ; oui => fin

         LDX   #0         ; positionne sur 1}re colonne
         STX   CPT_COL
         JMP   H61C4

*-------------------------------
* Positionne sur ligne $FE
*-------------------------------

POS_LIG  LDA   CPT_LIG2
         LDX   #0
         LDY   #0
         JSR   HPOSN
         RTS

H6205    RTS

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

         DS    10,0

*-------------------------------
* S{quence des {crans
*-------------------------------

RUN_INTRO JSR  PART1      ; anim Muryaden et le monstre

         LDA   #<PAK_IMG2 ; image monstre en extase
         STA   PTR_DATA
         LDA   #>PAK_IMG2
         STA   PTR_DATA+1
         LDA   #$40
         STA   CMP_PAG
         STA   LDA_PAG
         JSR   UNPACK

         BIT   HISCR
         JSR   SOUND_MONS ; son extase

         LDX   #$F0       ; tempo
H622E    JSR   WAIT
         INX
         BNE   H622E

         LDA   #$20
         STA   CMP_PAG
         STA   LDA_PAG

         LDA   #<PAK_AUTEURS ; image auteurs
         STA   PTR_DATA
         LDA   #>PAK_AUTEURS
         STA   PTR_DATA+1
         JSR   UNPACK

         BIT   LOWSCR

*-------------------------------
* Vide {cran HGR2
*-------------------------------

CLR_HGR2 LDX   #0
H624C    LDA   #0
H624E    STA   $4000,X
         INX
         BNE   H624C

         INC   H624E+2
         LDA   H624E+2
         CMP   #>$6000
         BNE   CLR_HGR2

*-------------------------------
* Lance la suite
*-------------------------------

         BIT   STROBE
         JSR   SCROLL     ; smooth scroll HGR
         JSR   HOME
         JSR   SETTXT
         LDX   #$60
         JMP   RDOS       ; lance la suite

         NOP

*-------------------------------
* Recopie $9600-$A9FF vers
*         $0800-$1BFF
*-------------------------------

* Point d'entr{e de l'introduction Muryaden 1

START_INTRO LDX #$00
:1       LDA   H9600,X
:2       STA   H0800,X
         INX
         BNE   :1

         INC   :1+2
         INC   :2+2
         LDA   :2+2
         CMP   #>H1C00
         BNE   START_INTRO

* Pr{paration {cran

         LDA   #$20       ; efface HGR1
         STA   HPAG
         JSR   HF3F2
         LDA   #$40       ; efface HGR2
         STA   HPAG
         JSR   HF3F2

         LDA   #$A0
         STA   $DC
         JMP   RUN_INTRO

*-------------------------------
* Not used
*-------------------------------

         DS    47,0

         JSR   PLAY_ED
         RTS

         DS    $490,0

         SAV   B6000.675F
