?login_element?

Subversion Repositories NedoOS

Rev

Rev 528 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;*Z80
  2. ;---Финальный мультик
  3.         DEVICE ZXSPECTRUM1024
  4.         include "../../_sdk/sys_h.asm"
  5. ;*L+
  6. DSCR    EQU #4000
  7. MUSIC   EQU 25200
  8.  
  9. _128=PROGSTART+3
  10. swapimer=PROGSTART+6
  11. ttexpgs=PROGSTART+0x100
  12.  
  13.         macro PUSHs
  14.         PUSH DE
  15.         PUSH BC
  16.         PUSH HL
  17.         ENDM
  18.  
  19.         macro POPs
  20.         POP HL
  21.         POP BC
  22.         POP DE
  23.         ENDM
  24.  
  25.         macro Ds
  26.         DI
  27.         HALT
  28.         EI
  29.         ENDM
  30.  
  31.         ORG #8000
  32. begin
  33. WHO     DEFB 0 ;победили люди(0)/кунги(1)
  34.  
  35.         ;ENT $ ;вх #8000
  36. FINAL   DI
  37.          call swapimer ;NedoOS on
  38.         ;IM 1
  39.         ;LD IY,#1000
  40.         ;ld e,0
  41.         ;OS_SETSCREEN
  42.         di
  43.         ;jr $
  44.         ld sp,0x4000
  45.         ;OS_GETSCREENPAGES
  46. ;de=страницы 0-го экрана (d=старшая), hl=страницы 1-го экрана (h=старшая)
  47.         ld a,(user_scr0_high) ;ok
  48.         SETPG16K
  49.        
  50.         LD SP,#7FF0
  51.         XOR A
  52.         OUT (254),A
  53.         LD HL,#5800
  54.         LD DE,#5801
  55.         LD (HL),A
  56.         LD BC,767
  57.         LDIR
  58.         LD DE,#4000
  59.         LD HL,WINF+2
  60.         CALL DELPZ
  61.         LD B,8 ;декомп флик
  62. DPZ1    PUSH BC
  63.         LD A,B
  64.         DEC A
  65.         CP 2
  66.         JR Z,DPZ0
  67.         CP 5
  68.         JR Z,DPZ0
  69.         ;jr $
  70.         CALL MEM
  71.         LD HL,#C000
  72.         CALL DELPZF
  73. DPZ0    POP BC
  74.         DJNZ DPZ1
  75.         ;
  76.         LD A,(WHO)
  77.         OR A
  78.         PUSH AF
  79.         LD HL,MUS_H+2
  80.         LD BC,COL_HT
  81.         LD DE,TEXT_H
  82.         JR Z,WF1
  83.         LD HL,MUS_K+2
  84.         LD BC,COL_KT
  85.         LD DE,TEXT_K
  86. WF1     LD (TXTB),DE
  87.         LD (TXT),DE
  88.         PUSH BC
  89.         LD DE,MUSIC
  90.         CALL DELPZ
  91.         CALL MUSIC
  92.         POP HL
  93.         EXX
  94.         CALL PAINT
  95.         CALL PRE_S
  96.         CALL PRE_F
  97.         POP AF
  98.         CALL Z,WF_H
  99.         CALL WF_K
  100.  
  101.  
  102. COL_HT  DEFB #70,#50,#58,#78, #70, #68,#60,#68,#72
  103. COL_KT  DEFB #68,#70,#58,#78, #68, #71,#38,#48,#6F
  104. GETC    ;взять цвет
  105.         EXX
  106.         LD A,(HL)
  107.         INC HL
  108.         EXX
  109.         LD E,A
  110.         JP ATRBAR
  111.  
  112. PAINT   LD HL,#0
  113.         LD BC,#C20
  114.         CALL GETC ;
  115.         LD HL,#610
  116.         LD BC,#120C
  117.         CALL GETC ;
  118.         LD HL,#C1C
  119.         LD BC,#C04
  120.         CALL GETC ;
  121.         LD HL,#400
  122.         LD BC,#1410
  123.         CALL GETC ;
  124.         LD HL,#407
  125.         LD BC,#110
  126.         CALL GETC ;
  127.         LD HL,#501
  128.         LD BC,#120E
  129.         CALL GETC ;
  130.         LD HL,#712
  131.         LD BC,#0F0C
  132.         CALL GETC ;
  133.         LD HL,#100
  134.         LD BC,#307
  135.         CALL GETC
  136.         LD HL,27
  137.         LD BC,#205
  138.         CALL GETC
  139.         RET
  140.  
  141. TXTB    DEFW 880;ук на нач текста
  142. TXT     DEFW 0;ук на тек текст
  143. TXlin   DEFB 0;линия
  144. pTEXT   ;выв строчки текста
  145.         LD HL,TXlin
  146.         LD A,(HL)
  147.         INC (HL)
  148.         CP 16
  149.         JR C,pPT
  150.         CP 27
  151.         RET C
  152.         LD (HL),0
  153.         LD HL,(TXT)
  154.         LD DE,12
  155.         ADD HL,DE
  156.         LD A,(HL)
  157.         CP 126
  158.         JR C,pNT
  159.         LD HL,(TXTB)
  160. pNT     LD (TXT),HL
  161.         RET
  162. pPT     SRL A
  163.         LD C,A
  164.         LD HL,(TXT)
  165.         LD B,12
  166.         LD DE,#57B2
  167. pPT0    PUSH HL
  168.         PUSH BC
  169.         LD A,(HL)
  170.         ADD A,A
  171.         LD BC,FFONT
  172.         LD L,A
  173.         LD H,0
  174.         ADD HL,HL
  175.         ADD HL,HL
  176.         ADD HL,BC
  177.         POP BC
  178.         PUSH BC
  179.         LD B,0
  180.         ADD HL,BC
  181.         LD A,(HL)
  182.         LD (DE),A
  183.         POP BC
  184.         POP HL
  185.         INC E
  186.         INC HL
  187.         DJNZ pPT0
  188.         RET
  189.  
  190.  
  191. fINTRP  ;обработка im1
  192.         CALL pTEXT
  193.         XOR A
  194.         OUT (254),A
  195.         EI
  196.         HALT
  197.         DI
  198.         CALL MUSIC+6
  199.        
  200.          ld a,0x7f
  201.          in a,(0xfe)
  202.          rra
  203.          jr c,noquit
  204.          ld a,0xfe
  205.          in a,(0xfe)
  206.          rra
  207.          jr c,noquit
  208.         call shutay
  209.         ei
  210.         QUIT
  211. shutay
  212.         ld de,0xe00
  213. shutay0
  214.         dec d
  215.         ld bc,0xfffd
  216.         out (c),d
  217.         ld b,0xbf
  218.         out (c),e
  219.         jr nz,shutay0
  220.         ret
  221. noquit
  222.         LD (SPP+1),SP
  223.         JP SCROL
  224. SPP     LD SP,1
  225.         RET
  226.  
  227. ;-----W_GrLib--for intro---------------
  228. ATRADR  DEFB #58
  229.  
  230. ACOORD  LD A,L ;коорд атр HL->HL
  231.         RLA
  232.         RLA
  233.         RLA
  234.         SRL H
  235.         RRA
  236.         SRL H
  237.         RRA
  238.         SRL H
  239.         RRA
  240.         LD L,A
  241.         LD A,(ATRADR)
  242.         ADD A,H
  243.         LD H,A
  244.         RET
  245.  
  246. ATRBAR  ;HL - adr in scr; BC-size(yx) ;E-COLOR
  247.         PUSHs
  248.         CALL ACOORD
  249. ATRBA0  LD D,L
  250.         LD A,C
  251. ATRBA1  LD (HL),E
  252.         INC L
  253.         DEC A
  254.         JR NZ,ATRBA1
  255.         LD A,D
  256.         ADD A,32
  257.         LD L,A
  258.         JR NC,ATRBA2
  259.         INC H
  260. ATRBA2  DJNZ ATRBA0
  261.         POPs
  262.         RET
  263.  
  264. ;-------------------------
  265. ;---МУЛЬТФИЛЬМ------------
  266.  
  267. ;*************************
  268. P_ANI   DEFB 0 ;нач страница аним (0,3,6)
  269. DL_ANI  DEFB 4 ;задержка анимации
  270. ;*************************
  271.  
  272. FRAME   DEFB 0 ; (#кадра - 0..15)
  273. FDELAY  DEFB 3 ;задержка
  274.  
  275. FRWRD   LD B,16 ; 16 кадров вперёд
  276. frw0    PUSH BC
  277.         LD A,16
  278.         SUB B
  279.         LD (FRAME),A
  280.         CALL LDIRER
  281.         POP BC
  282.         DJNZ frw0
  283.         RET
  284.  
  285. FRWR8   LD B,8 ; 16 кадров вперёд
  286. frw8    PUSH BC
  287.         LD A,8
  288.         SUB B
  289.         ADD A,C
  290.         LD (FRAME),A
  291.         CALL LDIRER
  292.         POP BC
  293.         DJNZ frw8
  294.         RET
  295.  
  296. WF_K    ;победа кунгов
  297.         LD BC,450
  298. WK0     PUSH BC
  299.         CALL fINTRP
  300.         POP BC
  301.         DEC BC
  302.         LD A,C
  303.         OR B
  304.         JR NZ,WK0
  305.         LD A,3
  306.         LD (DL_ANI),A
  307. WK1     XOR A
  308.         LD (P_ANI),A
  309.         CALL FRWRD
  310.         LD A,3
  311.         LD (P_ANI),A
  312.         CALL FRWRD
  313.         LD A,6
  314.         LD (P_ANI),A
  315.         CALL FRWRD
  316.         JR WK1
  317.  
  318. WF_H    ;победа людей
  319.         LD BC,1400
  320. WH0     PUSH BC
  321.         CALL fINTRP
  322.         POP BC
  323.         DEC BC
  324.         LD A,C
  325.         OR B
  326.         JR NZ,WH0
  327.         LD A,5
  328.         LD (DL_ANI),A
  329.         LD A,R
  330.         LD (RNB),A
  331. WH1     CALL RND
  332.         CP 90
  333.         PUSH AF
  334.         CALL NC,FWK1
  335.         POP AF
  336.         CALL C,FWK2
  337.         JR WH1
  338.  
  339. FWK1    XOR A
  340.         LD (P_ANI),A
  341.         CALL FRWRD
  342.         LD A,3
  343.         LD (P_ANI),A
  344.         LD C,0
  345.         JP FRWR8
  346.  
  347. FWK2    LD A,3
  348.         LD (P_ANI),A
  349.         LD C,8
  350.         CALL FRWR8
  351.         LD A,6
  352.         LD (P_ANI),A
  353.         JP FRWRD
  354.  
  355.  
  356. LDIRER  ;один кадр
  357.         CALL fINTRP
  358.         LD HL,FDELAY
  359.         PUSH HL
  360.         LD A,(HL)
  361.         CP 2
  362.         CALL Z,PREFLI
  363.         POP HL
  364.         DEC (HL)
  365.         JR NZ,LDIRER
  366.         LD A,(DL_ANI)
  367.         LD (HL),A
  368.         ;
  369.         LD (SPPF+1),SP
  370.         JP OUTFLI
  371. SPPF    LD SP,#1997
  372.         RET
  373.  
  374. RNA     DEFW 1114
  375. RNB     DEFB 23
  376.  
  377. RND     PUSH    HL
  378.         LD      HL,(RNA)
  379.         INC     HL
  380.         LD      A,H
  381.         AND     #1F
  382.         LD      H,A
  383.         LD      A,(RNB)
  384.         RRCA
  385.         XOR     (HL)
  386.         ADD     A,L
  387.         LD      (RNA),HL
  388.         LD      (RNB),A
  389.         POP     HL
  390.         RET
  391.  
  392. ;-------быстр скрол
  393. P_str   LD SP,1
  394.         POPs
  395.         EXX
  396.         POPs
  397.         LD SP,1
  398.         PUSHs
  399.         EXX
  400.         PUSHs
  401.         JP SPP
  402.  
  403. SCROL   EQU #B600
  404. lines   EQU 120
  405. PRE_S   ;подгот п/п скрола текста
  406.         LD DE,SCROL
  407.         LD A,lines
  408. PP0     LD HL,P_str
  409.         LD BC,20
  410.         LDIR
  411.         DEC A
  412.         JR NZ,PP0
  413.         LD C,3
  414.         LDIR
  415.         LD HL,SCROL+1
  416.         LD DE,#41F2
  417.         CALL PRE1
  418.         LD HL,SCROL+11
  419.         LD DE,#40FE
  420. PRE1    LD B,lines
  421. PRE0    PUSH BC
  422.         LD (HL),E
  423.         INC HL
  424.         LD (HL),D
  425.         LD BC,19
  426.         ADD HL,BC
  427.         INC D
  428.         LD A,D
  429.         AND 7
  430.         JR NZ,PRE2
  431.         LD A,E
  432.         ADD A,32
  433.         LD E,A
  434.         JR C,PRE2
  435.         LD A,D
  436.         SUB 8
  437.         LD D,A
  438. PRE2    POP BC
  439.         DJNZ PRE0
  440.         RET
  441.  
  442. ;-------быстр выв флика
  443. P_strF  LD SP,1
  444.         POPs
  445.         EXX
  446.         POPs
  447.         POP AF
  448.         LD SP,1
  449.         PUSH AF
  450.         PUSHs
  451.         EXX
  452.         PUSHs
  453.         JP SPPF
  454.  
  455. OUTFLI  EQU #A900
  456. lineF   EQU 144
  457. PRE_F   ;подгот п/п скрола текста
  458.         LD DE,OUTFLI
  459.         LD A,lineF
  460. PPF0    LD HL,P_strF
  461.         LD BC,22
  462.         LDIR
  463.         DEC A
  464.         JR NZ,PPF0
  465.         LD C,3
  466.         LDIR
  467.         LD HL,OUTFLI+12
  468.         LD DE,#40AF
  469.         LD B,lineF
  470. PRF0    PUSH BC
  471.         LD (HL),E
  472.         INC HL
  473.         LD (HL),D
  474.         LD BC,21
  475.         ADD HL,BC
  476.         INC D
  477.         LD A,D
  478.         AND 7
  479.         JR NZ,PRF2
  480.         LD A,E
  481.         ADD A,32
  482.         LD E,A
  483.         JR C,PRF2
  484.         LD A,D
  485.         SUB 8
  486.         LD D,A
  487. PRF2    POP BC
  488.         DJNZ PRF0
  489.         RET
  490.  
  491. PREFLI  LD A,(FRAME) ;перед каждым кадром (0-15)
  492.         CP 8
  493.         LD E,A
  494.         JR C,LMP2
  495.         SUB 8
  496.         LD E,A
  497.         LD C,1
  498.         JR LMP3
  499. LMP2    LD C,0
  500. LMP3    LD A,(P_ANI)
  501.         ADD A,C
  502.          push bc
  503.         CALL MEM
  504.          pop bc
  505.         LD A,E
  506.         LD HL,#C000
  507.         OR A
  508.         JR Z,LMP4
  509.         LD DE,2016
  510. LMP5    ADD HL,DE
  511.         DEC A
  512.         JR NZ,LMP5
  513. LMP4    EX DE,HL
  514.         ;
  515.         LD HL,OUTFLI+1
  516.         LD B,lineF
  517. PFF0    PUSH BC
  518.         LD (HL),E
  519.         INC HL
  520.         LD (HL),D
  521.         LD BC,21
  522.         ADD HL,BC
  523.         LD C,14
  524.         EX DE,HL
  525.         ADD HL,BC
  526.         EX DE,HL
  527.         POP BC
  528.         DJNZ PFF0
  529.         RET
  530.  
  531.  
  532. FFONT
  533.         incbin "data/wfont.fnt"
  534.  
  535. ;Декомпрессор
  536.  
  537. DLPCB   db "FCUT"
  538.         include "xdelpz.asm"
  539.  
  540. DELPZF  LD DE,#FFFE
  541. ;Декомпрессор
  542. ;HL - ОТКУДА И КУДА, DE - ВЕРХНЯЯ ГРАНИЦА ОБЛАСТИ
  543. DELPZX  PUSH HL
  544.         LD C,(HL)
  545.         INC HL
  546.         LD B,(HL)
  547.         ADD     HL,BC
  548.         LDDR
  549.         EX      DE,HL
  550.         INC     HL
  551.         POP     DE
  552.         JP      DELPZ
  553.  
  554.         if 1==1
  555. MEM=_128
  556.         else
  557. ;TODO fix
  558. MEM     OR      %10000
  559.         PUSH BC
  560.         LD      BC,#7FFD
  561.         OUT     (C),A
  562.         POP BC
  563.         RET
  564.         endif
  565.  
  566. OFFD    XOR     A
  567. OFFD__  LD      DE,DSCR+#1AFE
  568.         LD      HL,DSCR+#1AFF
  569.         LD      BC,768
  570.         LD      (HL),A
  571.         LDDR
  572.         RET
  573.  
  574. WA      RLCA
  575. BA      ADD     A,L
  576.         LD      L,A
  577.         JR      NC,B1
  578.         INC     H
  579. B1      LD      A,(HL)
  580.         RET
  581.  
  582. TEXT_H
  583.         incbin "data/wvicthum.dat"
  584. TEXT_K
  585.         incbin "data/wvictorc.dat"
  586.  
  587.  
  588. MUS_K
  589.         incbin "bobov/crow_k.lpz"
  590. MUS_H
  591.         incbin "bobov/crow_h.lpz"
  592. WINF    ;окно для флика
  593.         incbin "intro/winvict.lpz"
  594.         display $
  595. end
  596.  
  597. ;*L+
  598.  
  599. ;---------------------------------
  600. ;*P0;
  601. ;        ORG #C000
  602. ;*B ..\INTRO\FLICK.LPZ\WANIu_0.LPZ
  603. ;*P1;
  604. ;        ORG #C000
  605. ;*B ..\INTRO\FLICK.LPZ\WANIu_1.LPZ
  606. ;*P3;
  607. ;        ORG #C000
  608. ;*B ..\INTRO\FLICK.LPZ\WANIv_0.LPZ
  609. ;*P4;
  610. ;        ORG #C000
  611. ;*B ..\INTRO\FLICK.LPZ\WANIv_1.LPZ
  612. ;*P6;
  613. ;        ORG #C000
  614. ;*B ..\INTRO\FLICK.LPZ\WANIw_0.LPZ
  615. ;*P7;
  616. ;        ORG #C000
  617. ;*B ..\INTRO\FLICK.LPZ\WANIw_1.LPZ
  618. ;*P0 ;==
  619.  
  620. ;       savebin "br/brfinal.dat",begin,end-begin
  621.