LST OFF ORG $1000 ******************************** * * * Anim 2 pour Muryaden II * * (c)1991 LoGo * * Source par Deckard (2013) * * * ******************************** * Adresses ressources FT EQU $1800 ; font P2 EQU $4000 ; image Extasie compress{e S2 EQU $6000 ; windows/sprites des 2 monstres M2 EQU $4000 ; musique Electric Duet * Adresses de d{but des datas sprites H6000 = S2 H6193 = S2+$0193 H6326 = S2+$0326 H64B9 = S2+$04B9 H664C = S2+$064C H67DF = S2+$07DF H6972 = S2+$0972 H6B05 = S2+$0B05 H6C98 = S2+$0C98 H6E2B = S2+$0E2B H6FBE = S2+$0FBE H7151 = S2+$1151 H72E4 = S2+$12E4 H7477 = S2+$1477 H760A = S2+$160A H779D = S2+$179D H7930 = S2+$1930 H7AC3 = S2+$1AC3 H8000 = S2+$2000 H8174 = S2+$2174 H82E8 = S2+$22E8 H845C = S2+$245C H85D0 = S2+$25D0 H8744 = S2+$2744 H88B8 = S2+$28B8 H8A2C = S2+$2A2C H8BA0 = S2+$2BA0 H8D14 = S2+$2D14 H8E88 = S2+$2E88 H8FFC = S2+$2FFC H9170 = S2+$3170 H92E4 = S2+$32E4 H9458 = S2+$3458 H95CC = S2+$35CC H9740 = S2+$3740 H98B4 = S2+$38B4 * Adresses ROM KEY EQU $C000 MAINWRT EQU $C004 AUXWRT EQU $C005 STROBE EQU $C010 RPAGE2 EQU $C01C SPKR EQU $C030 TXTCLR EQU $C050 TXTSET EQU $C051 MIXCLR EQU $C052 LOWSCR EQU $C054 HISCR EQU $C055 LORES EQU $C056 HIRES EQU $C057 *------------------------------- * Unpack image Extasie *------------------------------- * 1er call H1000 JSR EXTASIE RTS *------------------------------- * Scroll + anim + musique *------------------------------- * 2nd call H1004 * Dhgr on STA $C001 ; 80STORE = 1 STA $C00D ; switch 80 colonnes STA TXTCLR STA MIXCLR ; full page STA LOWSCR ; page 1 STA HIRES ; mode graphique haute r{solution STA $C05E ; double hgr JSR PLAY_ED * Dhgr off STA $C05F ; double hgr off STA LORES STA LOWSCR STA TXTSET ; mode texte STA $C00C ; 40 colonnes STA KEY RTS *------------------------------- * Joue la musique Electric Duet * avec interruption pour anim * DHGR et scroll *------------------------------- PLAY_ED LDA #M2 STA $1F LDA #$01 STA $09 STA $1D PHA PHA PHA BNE PED_01 PED_02 INY LDA ($1E),Y STA $09 INY LDA ($1E),Y STA $1D PED_03 LDA $1E CLC ADC #$03 STA $1E BCC PED_01 INC $1F PED_01 LDY #0 LDA ($1E),Y CMP #$01 BEQ PED_02 BCS PED_04 PLA PLA PLA PED_05 LDX #$49 INY LDA ($1E),Y BNE PED_06 LDX #$C9 PED_06 BIT STROBE RTS PED_04 STA $08 JSR PED_05 STX PED_07 STA $06 LDX $09 PED_08 LSR DEX BNE PED_08 STA PED_10+1 JSR PED_05 STX PED_09 STA $07 LDX $1D PED_11 LSR DEX BNE PED_11 STA PED_12+1 JSR ANIM ; animation monstres+scroll sur {cran dhgr PLA TAY PLA TAX PLA BNE PED_13 PED_14 BIT SPKR PED_13 CMP #$00 BMI PED_16 NOP BPL PED_15 PED_16 BIT SPKR PED_15 STA $4E BIT KEY ; touche appuy{e? BMI PED_06 ; oui => arret DEY ; continue BNE PED_10 BEQ PED_17 PED_10 CPY #$36 BEQ PED_07 BNE PED_18 PED_17 LDY $06 PED_07 EOR #$40 PED_18 BIT $4E BVC PED_24 BVS PED_19 PED_19 BPL PED_20 NOP BMI PED_21 PED_24 NOP BMI PED_20 NOP BPL PED_21 PED_20 CMP SPKR PED_21 DEC $4F BNE PED_22 DEC $08 BNE PED_22 BVC PED_23 BIT SPKR PED_23 PHA TXA PHA TYA PHA JMP PED_03 PED_22 DEX BNE PED_12 BEQ PED_26 PED_12 CPX #$0C BEQ PED_09 BNE PED_27 PED_26 LDX $07 PED_09 EOR #$80 PED_27 BVS PED_14 NOP BVC PED_13 RTS *------------------------------- * Animation pendant musique ED *------------------------------- * 2 appels de scroll pour 1 appel d'anim monstres car * 1 caract}re est affich{ en 2 fois (font double) ANIM LDA #2 ; code action CMP #2 ; [1=scroll,2=anim+scroll] BNE H1111 JSR POS_CAR_MSG ; positionne caract}re pour scroll JSR ANIM_MONSTRES ; anim en windowing LDA #0 STA ANIM+1 H1111 JSR DO_SCROLL ; scroll texte INC ANIM+1 RTS *------------------------------- INIT_SCROLL LDA #TXT_SCROLL STA POS_CAR_MSG+2 ; high *------------------------------- * Positionne sur le caract}re * suivant du message @ scroller *------------------------------- POS_CAR_MSG LDA TXT_SCROLL ; terminateur? BEQ INIT_SCROLL ; oui, boucle TAX ; X="caract}re" LDA #FT STA SCR_01+2 ; high TXA ; "caract}re" -> caract}re SEC SBC #" " TAX ; x=caract}re BEQ SCR_02 ; espace uniquement (pointeur font ok) SCR_03 LDA SCR_01+1 ; recherche d{but datas font du caract}re CLC ADC #16 STA SCR_01+1 ; low BNE SCR_04 INC SCR_01+2 ; high SCR_04 DEX ; on est sur le caract}re d{sir{? BNE SCR_03 ; pas encore SCR_02 INC POS_CAR_MSG+1 ; positionne sur "caract}re" suivant du texte BNE SCR_05 INC POS_CAR_MSG+2 SCR_05 RTS *------------------------------- * 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 BNE 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 *------------------------------- * Animation des 2 monstres *------------------------------- ANIM_MONSTRES LDX #0 ; anim monstre de gauche LDA #12 ; largeur LDY #0 ; colonne JSR DSP_WND H11AD LDX #18 ; anim monstre de droite LDA #11 ; largeur LDY #34 ; colonne JSR DSP_WND INC ANIM_MONSTRES+1 ; passe au "sprite" suivant INC H11AD+1 ; idem LDA ANIM_MONSTRES+1 ; cycle fini? CMP #18 BNE H11CD ; non, pas encore LDA #0 ; repart sur les sprites de d{but STA ANIM_MONSTRES+1 LDA #18 STA H11AD+1 H11CD RTS *------------------------------- * Window displayer *------------------------------- * In : acc = largeur * X = sprite number * Y = colonne d{but DSP_WND STA H1305 STY H11F4+1 LDA TBL_SPRL,X ; positionne pointeur datas sprite STA H11F6+1 LDA TBL_SPRH,X STA H11F6+2 LDX #0 ; compteur ligne {cran H11E2 LDA #0 ; init compteur colonne pour largeur STA H1306 STA HISCR LDA DATALOW,X ; pointeur {cran STA $FE LDA DATAHIGH,X STA $FF H11F4 LDY #0 ; affichage {cran H11F6 LDA $FFFF ; lecture data sprite STA ($FE),Y ; {criture {cran INC H11F6+1 ; data suivant sprite (low) BNE H1203 INC H11F6+2 ; (high) H1203 LDA H1306 ; derni}re colonne? CMP H1305 BEQ H1220 ; oui INC H1306 ; colonne suivante LDA RPAGE2 ; switch sur m{moire d{sir{e BMI H121A STA HISCR INY JMP H11F6 ; traite la colonne H121A STA LOWSCR JMP H11F6 ; traite la colonne H1220 INX ; ligne {cran suivante CPX #30 ; derni}re ligne? BNE H11E2 ; pas encore, continue RTS *------------------------------- * 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 #>P2+2 STA $09 LDA #P2+3 STA $19 LDA #H6000,#>H6193,#>H6326,#>H64B9 DFB #>H664C,#>H67DF,#>H6972,#>H6B05 DFB #>H6C98,#>H6E2B,#>H6FBE,#>H7151 DFB #>H72E4,#>H7477,#>H760A,#>H779D DFB #>H7930,#>H7AC3,#>H8000,#>H8174 DFB #>H82E8,#>H845C,#>H85D0,#>H8744 DFB #>H88B8,#>H8A2C,#>H8BA0,#>H8D14 DFB #>H8E88,#>H8FFC,#>H9170,#>H92E4 DFB #>H9458,#>H95CC,#>H9740,#>H98B4 *------------------------------- 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 01 09 91 " DS 3,$FF SAV A2