LST OFF ORG $1000 ******************************** * * * Anim 3 pour Muryaden II * * (c)1991 LoGo * * Source par Deckard (2013) * * * ******************************** * Adresses ressources FT EQU $1800 ; font P3 EQU $4000 ; image 1 Extasie compress{e P4 EQU $7300 ; image 2 Extasie compress{e * Adresses ROM KEY EQU $C000 MAINWRT EQU $C004 AUXWRT EQU $C005 STROBE EQU $C010 TXTCLR EQU $C050 TXTSET EQU $C051 MIXCLR EQU $C052 LOWSCR EQU $C054 HISCR EQU $C055 LORES EQU $C056 HIRES EQU $C057 WAIT EQU $FCA8 *------------------------------- * Dhgr on STA $C001 ; 80STORE = 1 STA $C00D ; switch 80 colonnes STA MIXCLR ; full page STA LOWSCR ; page 1 STA HIRES ; mode graphique haute r{solution STA $C05E ; double hgr LDA #>P3 ; d{compression 1}re image JSR GO_EXTASIE LDA #0 ; 1er scroll JSR DRV_SCROLL LDA #>P4 ; d{compression 2nde image JSR GO_EXTASIE LDA #1 ; 2nd scroll JSR DRV_SCROLL * Dhgr off STA $C05F ; double hgr off STA LORES STA LOWSCR STA TXTSET ; mode texte STA $C00C ; 40 colonnes STA KEY RTS *------------------------------- * Driver scroll *------------------------------- DRV_SCROLL STA POS_DEB_SCR+1 ; num{ro scroll JSR POS_DEB_SCR ; d{but de texte concern{ LDA #2 ; on commence par l'init STA SCR_02+1 SCR_02 LDA #2 ; action CMP #2 ; init? BEQ INIT_SCROLL ; oui JSR DO_SCROLL ; scroll @ gauche 1 position INC SCR_02+1 ; 2 scrolls pour le caract}re complet LDA #$A0 JSR WAIT ; temporisation LDA KEY ; touche appuy{e? BPL SCR_02 ; non, continue BIT STROBE RTS *------------------------------- * Repositionne sur le d{but du * texte d'un scroll *------------------------------- POS_DEB_SCR LDA #0 ; num{ro scroll *2 ASL TAX LDA ADR_SCROLL,X STA SCR_03+1 INX LDA ADR_SCROLL,X STA SCR_03+2 RTS *------------------------------- INIT_SCROLL LDA #FT STA SCR_01+2 ; high *------------------------------- SCR_03 LDA TXT_SCROLL1 ; "caract}re" courant BNE SCR_04 ; pas un terminateur JSR POS_DEB_SCR JMP INIT_SCROLL SCR_04 SEC ; "caract}re" -> caract}re SBC #" " TAX BEQ SCR_12 ; espace uniquement SCR_05 LDA SCR_01+1 ; recherche d{but datas font du caract}re CLC ADC #16 STA SCR_01+1 ; low BNE SCR_11 INC SCR_01+2 ; high SCR_11 DEX ; on est sur le caract}re d{sir{? BNE SCR_05 ; pas encore SCR_12 INC SCR_03+1 ; positionne sur "caract}re" suivant du texte BNE SCR_13 INC SCR_03+2 SCR_13 JMP SCR_02 *------------------------------- * Gestion du scroll *------------------------------- DO_SCROLL LDX #184 ; data {cran 1}re ligne du scroll SCR_06 LDA DATALOW,X STA $FE LDA DATAHIGH,X STA $FF * Phase 1 : d{calage du texte d{j@ affich{ sur l'{cran LDY #0 STA LOWSCR ; copie l'octet position courante d'une SCR_07 LDA ($FE),Y ; m{moire vers l'autre STA HISCR STA ($FE),Y INY LDA ($FE),Y STA LOWSCR DEY CPY #39 ; et ce pour toutes les positions de la ligne BEQ SCR_08 STA ($FE),Y INY JMP SCR_07 SCR_08 INX ; et on recommence pour toutes les lignes CPX #192 ; du scroll BNE SCR_06 * Phase 2 : affichage d'un nouveau caract}re du texte LDX #184 ; data {cran 1}re ligne du scroll SCR_09 LDA DATALOW,X STA $FE LDA DATAHIGH,X STA $FF LDY #39 ; positionne sur la colonne la plus @ droite STA LOWSCR SCR_01 LDA $FFFF ; data font du caract}re STA ($FE),Y INC SCR_01+1 ; data suivant (low) BNE SCR_10 INC SCR_01+2 ; (high) SCR_10 INX ; ligne suivante CPX #192 ; derni}re ligne+1? BNE SCR_09 ; pas encore, on continue RTS *------------------------------- GO_EXTASIE STA EXT_V08 ; sauve adr high image @ traiter *------------------------------- * Unpack image format EXTASIE *------------------------------- EXTASIE STA TXTSET LDA #1 STA EXT_V01 STA KEY JSR EXT_01 LDA #0 STA EXT_V02 STA EXT_V03 STA EXT_V04 STA EXT_V01 JSR EXT_DECOMP ; exec unpack STA $C001 STA TXTCLR RTS *------------------------------- EXT_02 LDA #$00 STA EXT_V02 STA EXT_V03 STA EXT_V04 LDA EXT_V08 ; high : d{but en page pleine OBLIGATOIRE STA $09 LDA #$02 ; low STA $08 LDA EXT_V08 ; high : idem STA $19 LDA #$03 STA $18 RTS *------------------------------- EXT_03 INC $18 BNE EXT_04 INC $19 LDA $19 CMP #$A7 BNE EXT_04 PLA PLA LDA #$FF STA EXT_V07 EXT_04 RTS *------------------------------- EXT_05 LDA $18 STA $08 LDA $19 STA $09 RTS *------------------------------- EXT_01 JSR EXT_02 EXT_DECOMP LDY #$00 LDA ($08),Y STA EXT_V05 BMI EXT_06 EXT_08 LDY #$00 LDA ($18),Y JSR EXT_07 JSR EXT_03 DEC EXT_V05 BNE EXT_08 JSR EXT_05 JSR EXT_03 CLC BCC EXT_09 EXT_06 AND #$7F STA EXT_V05 LDA ($18),Y STA EXT_V06 EXT_10 LDA EXT_V06 JSR EXT_07 DEC EXT_V05 BNE EXT_10 JSR EXT_03 JSR EXT_05 JSR EXT_03 EXT_09 LDA EXT_V02 CMP #40 BCC EXT_DECOMP RTS *------------------------------- EXT_07 TAX LDY EXT_V03 LDA DATALOW,Y STA $06 LDA DATAHIGH,Y STA $07 LDY EXT_V02 LDA EXT_V01 BEQ EXT_11 STA AUXWRT EXT_11 TXA STA ($06),Y STA MAINWRT INC EXT_V03 LDA EXT_V03 CMP #$C0 BCC EXT_12 LDA #$00 STA EXT_V03 INC EXT_V02 EXT_12 RTS * Variables Extasie EXT_V01 DFB 0 EXT_V02 DFB 0 EXT_V03 DFB 0 EXT_V04 DFB 0 EXT_V05 DFB 0 EXT_V06 DFB 0 EXT_V07 DFB 0 EXT_V08 DFB 0 *------------------------------- * Infos scrolls *------------------------------- ADR_SCROLL DA TXT_SCROLL1 DA TXT_SCROLL2 TXT_SCROLL1 ASC "Bienvenu dans le monde agite de " ASC "Lord Brutish..." DS 40,$A0 DFB 0 TXT_SCROLL2 ASC "Votre quete sera longue... mais ce pays " ASC "compte de nombreux jardins ou vous " ASC "pourrez dormir d'un sommeil... profond !" DS 40,$A0 DFB 0 *------------------------------- * Adresses lignes {cran HGR *------------------------------- DATALOW HEX 00000000000000008080808080808080 HEX 00000000000000008080808080808080 HEX 00000000000000008080808080808080 HEX 00000000000000008080808080808080 HEX 2828282828282828A8A8A8A8A8A8A8A8 HEX 2828282828282828A8A8A8A8A8A8A8A8 HEX 2828282828282828A8A8A8A8A8A8A8A8 HEX 2828282828282828A8A8A8A8A8A8A8A8 HEX 5050505050505050D0D0D0D0D0D0D0D0 HEX 5050505050505050D0D0D0D0D0D0D0D0 HEX 5050505050505050D0D0D0D0D0D0D0D0 HEX 5050505050505050D0D0D0D0D0D0D0D0 DATAHIGH HEX 2024282C3034383C2024282C3034383C HEX 2125292D3135393D2125292D3135393D HEX 22262A2E32363A3E22262A2E32363A3E HEX 23272B2F33373B3F23272B2F33373B3F HEX 2024282C3034383C2024282C3034383C HEX 2125292D3135393D2125292D3135393D HEX 22262A2E32363A3E22262A2E32363A3E HEX 23272B2F33373B3F23272B2F33373B3F HEX 2024282C3034383C2024282C3034383C HEX 2125292D3135393D2125292D3135393D HEX 22262A2E32363A3E22262A2E32363A3E HEX 23272B2F33373B3F23272B2F33373B3F ASC "LoGo for Deckard 31 08 91 " HEX FFFF SAV A3