;z80 ;zx-spectrum ;assembler ;-----------------------------; ; source code of GOA 4k intro ; ; (c) 1998 Exploder/Extreme ; ;-----------------------------; ORG #6500 A?_MAP EQU #C000 ;LEN=#1300 UB1 T_TXR EQU #C000 ;LEN=#1000 UB1 C?_TXR EQU #E000 ;LEN=#2000 UB2 H?_MAP EQU #C000 ;LEN=#4000 UB3 UB4 UB5 USE_BANK_1 EQU #11 USE_BANK_2 EQU #11 USE_BANK_3 EQU #13 USE_BANK_4 EQU #14 USE_BANK_5 EQU #17 DI LD (EXIT+1),SP CALL INSTALL CALL M_INS CALL A?_INSTALL CALL C?_INSTALL CALL H?_INSTALL CALL I?_INSTALL EI CALL K?_INSTALL ;-- CALL G_INSTALL ;CREDIT ;-- CALL A_INSTALL ;RAYZ ;3 CALL M_WAIT LD BC,#0104 LD HL,A_ CALL Y_ CALL T_INS ;-- CALL B_INSTALL ;TURN ;2 CALL M_WAIT LD BC,#013A LD HL,B_ CALL Y_ ;-- CALL H_INSTALL ;STRETCH 1 ;3 CALL M_WAIT LD BC,#00CD LD HL,K_ CALL Y_ ;-- CALL D_INSTALL ;VOXEL ;4 CALL M_WAIT LD BC,#0099 LD HL,D_ CALL Y_ ;-- CALL F_INSTALL ;ROTATE ;4 CALL M_WAIT LD BC,#009D LD HL,F_ CALL Y_ ;-- CALL J_INSTALL ;PLAZMA ;4 CALL M_WAIT LD BC,#009D LD HL,J_ CALL Y_ ;-- CALL H_INSTALL ;STRETCH 2 ;3 CALL M_WAIT LD BC,#00C1 LD HL,H_ CALL Y_ ;-- CALL C_INSTALL ;BUMP ;3 CALL M_WAIT LD BC,#00D2 LD HL,C_ CALL Y_ ;-- CALL E_INSTALL ;SCALING ;2 CALL M_WAIT LD BC,#013A LD HL,E_ CALL Y_ ;-- CALL H_INSTALL ;TUNNEL ;3 CALL M_WAIT LD BC,#00D3 LD HL,I_ CALL Y_ ;-- LD BC,#0020 LD HL,L_ CALL Y_ ;------- EXIT: LD SP,#3131 DI CALL OOUT10 LD HL,M_OUT_T LD BC,#000D SUB A CALL FILL CALL M_INS LD IY,#5C3A LD A,#3F LD I,A IM 1 LD HL,#2758 EXX RET ;-------------------------------L------------------------------; L_:CALL HHALT LD HL,H_TPOS+1 INC (HL) INC L LD A,(HL) INC A AND #07 ADD A,#08 LD (HL),A LD HL,H_MPOS+1 INC (HL) INC L LD A,(HL) AND #07 ADD A,#08 LD (HL),A JP H_MAIN ;-------------------------------K------------------------------; K_: LD A,USE_BANK_5 LD DE,#01FF LD HL,K_SIN_0 LD BC,K_SIN_1 JP H_P00 ;------- K_SIN_0 DEFW #6880 DEFW #0000 DEFW #0010 K_SIN_1 DEFW #7380 DEFW #0000 DEFW #000C ;-------------------------------; K?_INSTALL: LD A,#2C LD LY,#00 CALL Z_MAIN LD DE,#8000 LD H,#C0-#20 LD B,T_SIN/#100 K_I10 LD L,#00 K_I11 LD A,(HL) LD C,A SRL A SRL A AND #3F LD (DE),A INC L INC E LD A,(BC) SRL A SRL A LD LX,A LD A,(HL) SUB D ADD A,LX AND #3F LD (DE),A INC L INC E JR NZ,K_I11 INC H INC D BIT 6,D JR Z,K_I10 LD A,USE_BANK_5 JP H_I20 ;-------------------------------J------------------------------; J_C2P_T EQU #80 J_REND_LN EQU #C000 ;COD=#0400 J_TEXTURE EQU #8000 ;TXR=#4000 J_B_SCR EQU #80C0 ;BUF=#2600 #40 x #26 J_SRL_T EQU #C400 ;TAB=#0100 ;--------------- J_: EI HALT ;------- CALL J_POSA ;------- J_TY1 LD B,#00 J_TY2 LD H,#00 J_TY3 LD D,#00 EXX J_TY4 LD H,#00 LD D,J_B_SCR/#100 LD B,J_SRL_T/#100 LD LX,#26 J_C01 LD E,J_B_SCR RES 6,H SET 7,H J_TX4 LD L,#00 EXX RES 6,B RES 6,H RES 6,D SET 7,B SET 7,H SET 7,D J_TX1 LD C,#00 J_TX2 LD L,#00 J_TX3 LD E,#00 CALL J_REND_LN INC B INC H INC D EXX INC H INC D DEC LX JR NZ,J_C01 JP C2P_ ;------- J_POSA: LD C,#0C J_PS01 LD HL,T_SIN INC L INC L INC L INC L LD (J_PS01+1),HL LD A,(HL) SRL A SRL A LD (J_TX1+1),A LD A,L ADD A,C LD L,A LD A,(HL) SRL A SRL A LD (J_TX2+1),A LD A,L ADD A,C LD L,A LD A,(HL) SRL A SRL A LD (J_TX3+1),A LD A,L ADD A,C LD L,A LD A,(HL) SRL A SRL A LD (J_TX4+1),A ;- J_PS02 LD HL,T_SIN+#20 INC L INC L LD (J_PS02+1),HL LD A,(HL) SRL A SRL A LD (J_TY1+1),A LD A,L ADD A,C LD L,A LD A,(HL) SRL A SRL A LD (J_TY2+1),A LD A,L ADD A,C LD L,A LD A,(HL) SRL A SRL A LD (J_TY3+1),A LD A,L ADD A,C LD L,A LD A,(HL) SRL A SRL A LD (J_TY4+1),A ;-- J_PS03 LD A,#00 INC A LD (J_PS03+1),A AND #0F LD HL,J_COLL ADD A,L LD L,A LD DE,J_SRL_T LD BC,#0020 LDIR RET ;-------------------------------; J_INSTALL: ;--------- LD DE,J_REND_LN LD HL,J_IT1 LD BC,#400F CALL MOVES LD (HL),#C9 ;----------- LD LX,#00 CALL B_I00 ;------- LD LX,J_C2P_T LD DE,J_B_SCR LD BC,#0100 CALL C2P_INS JP C2P_IAD ;------- J_IT1 LD A,(BC) INC C ADD A,(HL) INC L EX DE,HL ADD A,(HL) INC L EXX ADD A,(HL) INC L LD C,A LD A,(BC) LD (DE),A INC E EXX J_COLL DEFB #80,#81,#82,#83,#84,#85,#86,#87 DEFB #87,#86,#85,#84,#83,#82,#81,#80 DEFB #80,#81,#82,#83,#84,#85,#86,#87 DEFB #87,#86,#85,#84,#83,#82,#81,#80 DEFB #80,#81,#82,#83,#84,#85,#86,#87 DEFB #87,#86,#85,#84,#83,#82,#81,#80 DEFB #80,#81,#82,#83,#84,#85,#86,#87 DEFB #87,#86,#85,#84,#83,#82,#81,#80 ;-------------------------------I------------------------------; I_: LD A,USE_BANK_4 LD DE,#FFFE LD HL,I_SIN_0 LD BC,I_SIN_1 JP H_P00 ;-- I_SIN_0 DEFW #6880 DEFW #0000 DEFW #0018 I_SIN_1 DEFW #7380 DEFW #0000 DEFW #0014 ;-------------------------------; I?_INSTALL: LD A,#6F LD HL,I?_IT CALL Z_MAIN LD DE,#8000 LD H,#C0-#20 I_I10 LD L,#00 I_I11 LD A,(HL) SRL A SRL A LD (DE),A INC L INC E LD A,(HL) LD (DE),A INC L INC E JR NZ,I_I11 INC H INC D BIT 6,D JR Z,I_I10 LD A,USE_BANK_4 JP H_I20 I?_IT: DEFB #14,#1C,#24,#2B,#31,#36,#3B,#00 DEFB #04,#08,#0B,#0E,#11,#13,#15,#16 DEFB #17,#18,#19,#1A,#1B,#1B,#1C,#1D DEFB #1D,#1E,#1E,#1F,#1F,#20,#20,#21 DEFB #21,#21,#22,#22,#22,#23,#23,#23 DEFB #24,#24,#24,#25,#25,#25,#26,#26 DEFB #26,#26,#27,#27,#27,#27,#28,#28 DEFB #28,#28,#28,#29,#29,#29,#29,#29 ;-------------------------------H------------------------------; H_C2P_T EQU #80 H_REND_LN EQU #7E00 ;COD=#0200 H_TEXTURE EQU #8000 ;TXR=#4000 H_B_SCR EQU #80C0 ;BUF=#2600 #40 x #26 ;--------------- H_: LD A,USE_BANK_3 LD DE,#0102 LD HL,H_SIN_0 LD BC,H_SIN_1 H_P00: CALL HHALT PUSH BC CALL OOUT LD A,(H_TPOS+1) ADD A,D AND #3F LD (H_TPOS+1),A LD A,(H_TPOS+2) ADD A,E AND #3F OR #80 LD (H_TPOS+2),A CALL SIN SUB #60 ADD A,A LD (H_MPOS+1),A POP HL CALL SIN ADD A,#60-#13 LD (H_MPOS+2),A ;------- H_MAIN: LD D,H_B_SCR/#100 EXX H_MPOS LD HL,C_MAP+#40+#2000-#1300 CALL H_REND ;- CALL HHALT ;- CALL H_REND JP C2P_ ;------- H_REND: LD (H_SP+1),SP LD B,#13 H_C01 LD SP,HL INC H EXX H_TPOS LD BC,#8000 LD E,H_B_SCR JP H_REND_LN H_RET INC D EXX DJNZ H_C01 H_SP LD SP,#3131 RET ;------- H_SIN_0 DEFW #6880 DEFW #0000 DEFW #0010 H_SIN_1 DEFW #7380 DEFW #0000 DEFW #0010 ;-------------------------------; H_INSTALL: ;--------- LD DE,H_REND_LN LD HL,H_IT1 LD BC,#4007 CALL MOVES LD DE,H_RET CALL EXIT_1 ;----------- LD LX,H_C2P_T CALL B_I00 ;------- LD LX,H_C2P_T LD DE,H_B_SCR LD BC,#0100 CALL C2P_INS JP C2P_IAD ;------- H_IT1 POP HL ;10 ADD HL,BC ;11 RES 6,H ;8 LD A,(HL) ;7 LD (DE),A ;7 INC E ;7 ;47 ;-------------------------------; H?_INSTALL: LD A,#2C LD LY,#00 CALL Z_MAIN LD DE,#8000 LD H,#C0-#20 H_I10 LD L,#00 H_I11 LD A,(HL) SRL A SRL A ADD A,D AND #3F LD (DE),A INC L INC E LD A,(HL) LD (DE),A INC L INC E JR NZ,H_I11 INC H INC D BIT 6,D JR Z,H_I10 LD A,USE_BANK_3 H_I20 CALL OOUT JP B_I30 ;-------------------------------G------------------------------; G_C2P_T EQU #80 G_REND_LN EQU #8800 ;COD=#0400 G_SRL_T EQU #8C00 ;TAB=#0100 G_B_SCR EQU #DA00 ;BUF=#2600 #40 x #26 ;--------------- G_: LD A,#47 CALL FILATTR ;- LD IY,G_TEXT LD DE,G_B_SCR+#300+#05 LD HL,#0212 LD A,#03 CALL G_C00 LD DE,G_B_SCR+#300+#07 LD HL,#0018 LD A,#02 CALL G_C00 LD DE,G_B_SCR+#100+#07 LD HL,#0018 LD A,#02 CALL G_C00 LD DE,G_B_SCR+#300+#05 LD HL,#0212 LD A,#03 JP G_C00 ;------- G_BLUR: LD H,G_B_SCR/#100+1 LD C,#24 G_C22 LD L,G_B_SCR LD B,#3E LD A,(HL) G_C21 INC L ;4 DEC H ;4 ADD A,(HL) ;7 INC H ;4 INC H ;4 ADD A,(HL) ;7 DEC H ;4 INC L ;4 ADD A,(HL) ;7 DEC L ;4 SRL A ;8 SRL A ;8 ADD A,G_C2P_T ;7 LD (HL),A ;7 ;74 DJNZ G_C21 INC H DEC C JR NZ,G_C22 RET ;------- G_C00 LD HX,A LD A,H LD (G_D01+1),A LD A,L LD (G_D02+1),A LD A,G_C2P_T+#00 LD H,G_B_SCR/#100 G_C05 LD L,G_B_SCR LD B,#40 G_C04 LD (HL),A INC L DJNZ G_C04 INC H JR NZ,G_C05 ;---- PUSH DE G_C03 LD L,(IY+0) INC IY LD H,#00 ADD HL,HL ADD HL,HL ADD HL,HL LD A,H ADD A,#3C LD H,A PUSH DE LD LX,#08 G_C02 LD A,(HL) RRCA OR (HL) LD C,A PUSH DE LD B,#08 G_C01 RLC C LD A,G_C2P_T+#00 JR NC,$+2+2 LD A,G_C2P_T+#08 LD (DE),A INC E LD (DE),A INC E G_D01 JR $+2+2 LD (DE),A INC E DJNZ G_C01 POP DE INC D INC D INC D INC D INC L DEC LX JR NZ,G_C02 POP DE LD A,E G_D02 ADD A,#14 LD E,A DEC HX JR NZ,G_C03 ;---- POP HL LD HX,#08 G_C12 LD E,L LD D,H INC D LD LX,#03 G_C11 PUSH DE PUSH HL LD BC,#0040 LDIR POP HL POP DE INC D DEC LX JR NZ,G_C11 INC H INC H INC H INC H DEC HX JR NZ,G_C12 ;----------- CALL G_BLUR CALL M_WAIT CALL C2P_ EI LD B,#44 HALT DJNZ $-1 LD LX,#08 G_C31 HALT HALT CALL G_BLUR CALL C2P_ EI DEC LX JR NZ,G_C31 RET ;--------------- G_INSTALL: ;------- CALL OOUT10 ;-- SUB A LD (C2P_SPR),A LD LX,G_C2P_T LD DE,G_B_SCR LD BC,#0100 CALL C2P_INS LD HL,C2P_SPR1 CALL C2P_MOV ;- LD B,#10 HALT DJNZ $-1 JP G_ ;------- G_TEXT DEFB "GOA" DEFB "4K" DEFB "by" DEFB "XTM" ;-------------------------------F------------------------------; F_C2P_T EQU #80 F_TEXTURE EQU #C000 ;TXR=#4000 F_REND_LN EQU #8800 ;COD=#0200 F_B_SCR EQU #9000 ;BUF=#0980 #40 x #26 F_T_POS EQU #A000 ;BUF=#0130 ;--------------- F_: EI HALT ;------- CALL F_POSA CALL F_POSA CALL F_POSA ;---- LD BC,F_B_SCR F_X22 LD DE,#1111 EXX F_X12 LD DE,#1111 LD LY,#26 F_X11 LD HL,#2121 INC DE INC DE EXX F_X21 LD HL,#2121 DEC DE DEC DE CALL F_REND_LN EXX LD BC,#0008 ADD IX,BC ;-- PUSH DE LD DE,(F_X22+1) LD HL,(F_X11+1) ADD HL,DE LD (F_X11+1),HL LD DE,(F_X12+1) LD HL,(F_X21+1) OR A SBC HL,DE LD (F_X21+1),HL POP DE ;-- DEC LY JR NZ,F_X11 JP C2P_ ;------- F_POSA: LD HL,F_SIN_3 CALL SIN CALL F_SUB80 ;- PUSH HL LD HL,F_SIN_1 CALL SIN CALL F_SUB80 POP BC ADD HL,BC LD (F_X12+1),HL ;--- LD HL,F_SIN_2 CALL SIN CALL F_SUB80 LD (F_X22+1),HL ;------- LD HL,F_SIN_4 CALL SIN LD (F_X11+1),HL ;--- LD HL,F_SIN_5 CALL SIN LD (F_X21+1),HL RET F_SUB80 LD L,H LD H,#00 LD BC,#FF80 ADD HL,BC RET ;------- F_SIN_1 DEFW #1080 DEFW #0000 DEFW #0020 F_SIN_2 DEFW #1000 ; #8160 DEFW #0000 ; #0540 DEFW #0030 F_SIN_3 DEFW #3380 DEFW #0000 DEFW #0007 F_SIN_4 DEFW #5080 DEFW #0000 DEFW #0002 F_SIN_5 DEFW #4080 DEFW #0000 DEFW #0002 ;-------------------------------; F_INSTALL: ;------- LD A,#14 LD (BLUR_ON+1),A LD LX,F_C2P_T CALL B_I00 CALL B_I30 ;------- LD DE,F_REND_LN LD HL,F_IT1 LD BC,#400C CALL MOVES LD (HL),#C9 DEC HL LD (HL),#03 ;------- LD LX,#50 CALL F_POSA DEC LX JR NZ,$-2-3 ;------- LD A,#88 LD (C2P_SPR),A LD LX,F_C2P_T LD DE,F_B_SCR LD BC,#0040 CALL C2P_INS JP C2P_IAD ;------- F_IT1 LD A,H ;4 ADD HL,DE ;11 EXX ;4 OR #C0 ;7 LD B,A ;4 LD C,H ;4 ADD HL,DE ;11 LD A,(BC) ;7 EXX ;4 LD (BC),A ;7 INC C ;4 ;67 ;-------------------------------E------------------------------; E_C2P_T EQU #C0 E_TEXTURE EQU #8000 ;TXR=#4000 E_REND_LN EQU #C800 ;COD=#0200 E_B_SCR EQU #D000 ;BUF=#0980 #40 x #26 E_POSYKIZ EQU #E000 ;POS=#2000 ;--------------- E_:CALL HHALT ;------- E_POS1 LD A,#FF INC A INC A AND #1F LD (E_POS1+1),A CP #01 JR NZ,E_C01 EXA LD A,(E_PTXR2+1) ADD A,#28 LD (E_PTXR2+1),A LD (E_PTXR3+1),A ADD A,#28 LD (E_PTXR1+1),A EXA E_C01 LD C,A ADD A,E_POSYKIZ/#100 LD HX,A LD LX,#00 ;---- E_PTXR1 LD A,#28 ;POS TXR2 LD (E1_D14+2),A LD A,C E_PTXR2 ADD A,#00 ;POS TXR1 LD (E1_D01+2),A LD (E1_D11+2),A LD A,C ADD A,A ADD A,A ADD A,A LD E,A LD D,#00 LD HL,#0100 OR A SBC HL,DE LD (E1_D02+1),HL LD (E1_D12+1),HL LD (E1_D18+1),HL PUSH HL LD L,C SRL L LD H,#00 ADD HL,HL LD DE,E_DIV_T ADD HL,DE LD E,(HL) INC HL LD D,(HL) LD (E1_D15+1),DE ;-- POP DE LD B,C LD HL,#2000 ADD HL,DE DJNZ $-1 LD A,H E_PTXR3 ADD A,#00 ;POS TXR1 LD H,A LD (E1_D17+1),HL ;-- LD A,C CP #14 JR C,$+2+2 LD A,#13 LD LY,A LD A,#13 SUB LY LD HY,A ;-- LD HL,E_REND_LN+#E0-#07 LD B,C INC B LD DE,#0007 ADD HL,DE DJNZ $-1 LD (E1_D13+1),HL LD (E1_D19+1),HL ;-- LD HL,E_REND_LN+#1C0+#0E LD B,C INC B LD DE,0-#0E ADD HL,DE DJNZ $-1 LD (E1_D16+1),HL ;------- LD HL,E_B_SCR EXX LD A,HY OR A JR Z,E1_C1 E1_D01 LD HL,#0000 E1_D02 LD DE,#1111 LD B,(IX+#00) CALL E_REND_LN INC LX DEC HY JR NZ,E1_D01 ;- E1_C1 LD A,LY OR A JP Z,C2P_ E1_D11 LD HL,#0000 E1_D12 LD DE,#1111 LD B,(IX+#00) E1_D13 CALL #CDCD E1_D14 LD HL,#0000 E1_D15 LD DE,#1111 LD B,(IX+#30) E1_D16 CALL #CDCD E1_D17 LD HL,#2121 E1_D18 LD DE,#1111 LD B,(IX+#00) E1_D19 CALL #CDCD INC LX DEC LY JR NZ,E1_D11 JP C2P_ ;-------------------------------; E_INSTALL: ;------- LD A,#14 LD (BLUR_ON+1),A ;- LD DE,E_REND_LN LD HL,E_IT1 LD BC,#4007 CALL MOVES LD (HL),#C9 DEC L DEC L LD (HL),#23 ;------- LD BC,E_POSYKIZ+#0130+#12 LD IY,E_DIV_T LD IX,#1002 E_I22 LD E,(IY+#00) LD D,(IY+#01) INC IY INC IY PUSH IX PUSH BC LD HL,#8000 E_I21 LD A,H LD (BC),A INC C ADD HL,DE DEC LX JR NZ,E_I21 POP BC DEC C DEC C INC B INC B POP IX INC LX INC LX DEC HX JR NZ,E_I22 ;--- LD D,E_POSYKIZ/#100+1 LD BC,#00F8 LD HL,#8100 LD HX,#10 E_I42 PUSH HL DUP #20-#13 ADD HL,BC EDUP LD LX,#13 LD E,E_POSYKIZ E_I41 LD A,H LD (DE),A INC E ADD HL,BC DEC LX JR NZ,E_I41 POP HL INC H LD A,C SUB #08 LD C,A INC D INC D DEC HX JR NZ,E_I42 ;------- LD LX,E_C2P_T CALL B_I00 ;------- LD LX,E_C2P_T LD DE,E_B_SCR LD BC,#0040 CALL C2P_INS ;- LD DE,E_B_SCR+#480 LD BC,#FFC0 LD HL,C2P_TPOS1+#13+#13+#13+#13 LD A,#13 CALL C2P_I20 ;- JP C2P_IAD ;------- E_IT1 LD C,H ;4 LD A,(BC) ;7 ADD HL,DE ;11 EXX ;4 LD (HL),A ;7 INC L ;4 EXX ;4 ;41 ;------- E_DIV_T:DEFW #3FFF,#0CCC,#071C,#04EC DEFW #03C3,#030C,#028F,#0234 DEFW #01F0,#01BA,#018F,#016C DEFW #014E,#0135,#011F,#010C ;-------------------------------D------------------------------; D_C2P_T EQU #C0 D_VOXELZ EQU #8000 ;BUF=#4000 D_MAKE_LN EQU #D000 ;COD=#0800 D_B_SCR EQU #D800 ;BUF=#2600 #00-#40 - SCR BUFF D_VOLMZ EQU #D840 ;TAB=#2600 #40-#A0 - TAB VOLUMZ D_BRIGHTZ EQU #DAE0 ;TAB=#2600 #A0-#00 - TAB BRIGHTZ ;--------------- D_: EI HALT ;------- LD HL,D_SIN_1 CALL SIN LD (D_POS_X+1),HL ;-- LD HL,D_POS_Y+1 DEC (HL) ;------- LD DE,D_C2P_T*#100+D_C2P_T LD H,D_B_SCR/#100 LD B,#09 LD (D_CL_1+1),SP D_CL_2 LD L,#40 LD SP,HL DUP #20 PUSH DE EDUP INC H DJNZ D_CL_2 D_CL_1 LD SP,#3131 ;----------- D_POS_X LD HL,#2121 LD (D_D11+1),HL LD HL,#0106 LD (D_D12+1),HL ;---- LD BC,#00A0 LD H,D_VOLMZ/#100+#24 EXX D_POS_Y LD D,#00 LD LX,#16 D_C01 SET 7,D RES 6,D EXX LD E,#00 DEC H INC B INC B DEC C DEC C EXX D_D11 LD HL,#2121 LD BC,#00C0 ADD HL,BC LD (D_D11+1),HL D_D12 LD BC,#0101 DEC BC DEC C DEC C DEC C DEC C DEC C LD (D_D12+1),BC CALL D_MAKE_LN INC D DEC LX JR NZ,D_C01 JP C2P_ ;------- D_SIN_1 DEFW #6880 DEFW #0000 DEFW #0010 ;-----------------------; D_INSTALL: ;------- CALL OOUT10 ;-- LD DE,D_MAKE_LN LD HL,D_IT1 LD BC,#400D+10+2 CALL MOVES LD (HL),#C9 ;------- LD HX,D_VOLMZ/#100 LD HL,D_B_SCR-#0000 LD DE,#0100 LD C,#26 D_I22 PUSH HL LD LX,D_VOLMZ LD B,#60 D_I21 LD A,H CP D_VOLMZ/#100+#26 JR C,$+2+1 SUB A CP D_VOLMZ/#100 JR NC,$+2+1 SUB A LD (IX+0),A INC LX ADD HL,DE DJNZ D_I21 INC HX LD HL,#FFFB ;COMPRESS ADD HL,DE EX DE,HL POP HL DEC C JR NZ,D_I22 ;------- LD D,D_BRIGHTZ/#100 LD A,#26 D_I31 LD E,D_BRIGHTZ LD HL,D_IT2 LD BC,#0020 LDIR DEC A JR NZ,D_I31 LD (BLUR_ON+1),A ;------- LD LX,#00 CALL B_I00 ;------- LD HL,D_VOXELZ PUSH HL LD DE,D_VOXELZ+#4000 LD BC,#0100 LDIR POP HL D_I52 LD L,#00 D_I51 LD A,(HL) INC H ADD A,(HL) INC L ADD A,(HL) DEC H ADD A,(HL) DEC L ADD A,D_VOLMZ LD (HL),A INC L BIT 6,L JR Z,D_I51 LD E,L LD D,H LD BC,#00C0 LD L,B LDIR INC H BIT 6,H JR Z,D_I52 ;------- SUB A LD (C2P_SPR),A LD LX,D_C2P_T LD DE,D_B_SCR LD BC,#0100 CALL C2P_INS JP C2P_IAD ;------- D_IT1 ADD HL,BC ;11 LD E,H ;4 LD A,(DE) ;7 EXX ;4 ADD A,B ;8 LD L,A ;4 LD D,(HL) ;7 ADD A,C ;4 LD L,A ;4 LD A,(HL) ;7 DUP #06 LD (DE),A ;7 INC D ;4 EDUP LD (DE),A ;7 INC E ;4 ;54 EXX ;------- D_IT2 DEFB #C7,#C7,#C7,#C7 DEFB #C6,#C6,#C6,#C6 DEFB #C5,#C5,#C5,#C5 DEFB #C4,#C4,#C4,#C4 DEFB #C4,#C3,#C3,#C3 DEFB #C3,#C3,#C2,#C2 DEFB #C2,#C2,#C2,#C1 DEFB #C1,#C1,#C1,#C1 ;-------------------------------C------------------------------; C_C2P_T EQU #B0 C_TXR EQU #8000 ;TXR=#4000 #80 x #40 C_B_SCR EQU #80C0 ;BUF=#2600 #40 x #26 C_MAP EQU #C000 ;MAP=#4000 C_REND_LN EQU #7E00 ;COD=#0200 ;--------------- C_:CALL HHALT CALL C_POSA ;------- LD D,C_B_SCR/#100 EXX C_MPOS LD HL,C_MAP CALL C_REND ;- CALL HHALT ;- CALL C_REND JP C2P_ ;------- C_REND: LD (C_SP+1),SP LD B,#13 C_C01 SET 6,H SET 7,H LD SP,HL INC H EXX C_LPOS LD BC,#0000 LD E,C_B_SCR JP C_REND_LN C_RET INC D LD HL,C_LPOS+2 INC (HL) EXX DJNZ C_C01 C_SP LD SP,#3131 RET ;------- C_POSA: C_SIN_3 LD HL,T_SIN INC L INC L INC L INC L LD (C_SIN_3+1),HL LD A,(HL) CPL SRL A SRL A SRL A SRL A SRL A ADD A,#80-4+#20-#13 LD (C_LPOS+2),A ;- LD A,(HL) SRL A SRL A LD (C_MPOS+2),A ;--- C_SIN_2 LD HL,T_SIN+#20 INC L INC L LD (C_SIN_2+1),HL LD A,(HL) CPL SRL A SRL A SRL A ADD A,#10 LD B,A ;- LD A,(HL) SRL A AND #3F LD C,A ADD A,A LD (C_MPOS+1),A LD A,B SUB C LD (C_LPOS+1),A RET ;-------------------------------; C_INSTALL: ;------- LD DE,C_REND_LN LD HL,C_IT1 LD BC,#4005 CALL MOVES LD DE,C_RET CALL EXIT_1 ;----------- LD LX,#00 CALL B_I00 LD HL,#8000 LD BC,#2300 ;28 C_I51 LD A,(HL) AND #02 LD (HL),B JR NZ,$+2+1 LD (HL),C INC HL BIT 6,H JR Z,C_I51 LD BC,#1000 CALL B_I31 ;- LD LX,#02 C_I63 LD H,#81 LD C,#50 C_I62 LD L,#40 LD B,#50 LD A,(HL) C_I61 INC L DEC H ADD A,(HL) INC H INC H ADD A,(HL) DEC H INC L ADD A,(HL) DEC L SRL A SRL A LD (HL),A DJNZ C_I61 INC H DEC C JR NZ,C_I62 DEC LX JR NZ,C_I63 ;- LD A,#50 LD H,#81 C_I64 LD D,H LD L,#48 LD E,#88 LD BC,#0050 LDIR INC H DEC A JR NZ,C_I64 LD (BLUR_ON+1),A ;------- LD D,C_MAP/#100+#3F LD H,#80+#47 C_I22 LD E,C_MAP LD L,#48 LD B,#00 C_I21 LD C,(HL) INC L LD A,(HL) DEC L SUB C ADD A,B LD (DE),A INC E INC H LD A,(HL) DEC H SUB C LD (DE),A INC E INC L INC B BIT 7,B JR Z,C_I21 DEC H DEC D BIT 6,D JR NZ,C_I22 ;------------ LD A,USE_BANK_2 CALL OOUT LD HL,C?_TXR LD D,C_TXR/#100 C_I41 LD BC,#0080 LD E,C_TXR LDIR INC D BIT 6,D JR Z,C_I41 CALL OOUT10 ;------- LD LX,C_C2P_T LD DE,C_B_SCR LD BC,#0100 CALL C2P_INS JP C2P_IAD ;------- C_IT1 POP HL ;10 ADD HL,BC ;11 LD A,(HL) ;7 LD (DE),A ;7 INC E ;7 ;39 ;-------------------------------; C?_INSTALL: LD A,#6F LD HL,C?_IT CALL Z_MAIN LD DE,#8000 LD H,#C0-#20 LD C,#40 C_II1 LD B,#80 LD L,#01 C_II0 LD A,(HL) LD (DE),A INC DE INC L INC L DJNZ C_II0 INC H DEC C JR NZ,C_II1 LD A,USE_BANK_2 CALL OOUT LD HL,#8000 LD DE,C?_TXR LD BC,#2000 LDIR RET C?_IT DEFB #B7,#B7,#B7,#B7,#B7,#B6,#B6,#B6 DEFB #B6,#B5,#B5,#B4,#B4,#B3,#B3,#B2 DEFB #B2,#B2,#B1,#B1,#B1,#B0,#B0 DEFB #B0,#B0,#B1,#B1,#B1,#B2,#B2,#B2 DEFB #B3,#B3,#B4,#B4,#B5,#B5,#B5,#B6 DEFB #B6,#B6,#B7,#B7,#B7,#B7,#B6,#B6 DEFB #B6,#B5,#B5,#B5,#B4,#B4,#B3,#B3 DEFB #B2,#B2,#B2,#B1,#B1,#B1,#B0,#B0,#B0 ;-------------------------------B------------------------------; B_C2P_T EQU #83 B_B_SCR EQU #B820 ;BUF=#2600 #40 x #26 B_TXR_BUF EQU #8000 ;TXR=#7000 B_H_INC EQU #8100 ;COD=#0200 B_REND_LN EQU #8000 ;COD=#0C00 ;--------------- B_:CALL HHALT CALL B_POSA ;------- LD A,(B_R1_D4+1) LD B,A LD C,#00 LD HL,#0000 LD DE,#2500 CALL B_H_INC ;----------- B_R1_D1 LD A,#90 B_R1_D3 LD HL,#1000 B_R1_D4 LD DE,#0140 OR A LD B,#20 SBC HL,DE DJNZ $-2 PUSH HL LD HL,0 OR A LD B,#13 SBC HL,DE DJNZ $-2 SUB H LD B,A POP HL DEC D LD A,B LD (B_R_D1+2),A LD A,H LD (B_R_D1+1),A EXX LD LX,#26 LD D,B_B_SCR/#100 LD A,B_B_SCR B_UNTY1 OR #00 LD HX,A B_R_D1 LD HL,#0000 LD E,HX ;-- CALL B_REND_LN ;-- INC D EXX INC B LD A,B LD (B_R_D1+2),A ADD HL,DE LD A,H LD (B_R_D1+1),A EXX DEC LX JP NZ,B_R_D1 JP C2P_ ;--------------- B_POSA: LD HL,B_SIN_0 CALL SIN SRL A SRL A SRL A ADD A,#32+3 LD (B_R1_D3+2),A ;------- LD HL,B_SIN_1 CALL SIN SRL A SRL A SRL A ADD A,#80+#0A+#10 LD (B_R1_D1+1),A ;------- LD HL,B_SIN_2 CALL SIN SUB #10 LD (B_R1_D4+1),A ;------- LD A,(C2P_1+1) LD (B_UNTY1+1),A LD C,A LD A,(B_R1_D3+2) OR C XOR #80 LD (B_R1_D3+2),A LD A,C OR A LD HL,#0000 JR NZ,$+2+3 LD HL,#FDCB LD (B_ADD1+1),HL RET ;------- B_SIN_0 DEFW #5080 DEFW #0000 DEFW #0300 B_SIN_1 DEFW #5080 DEFW #0000 DEFW #0200 B_SIN_2 DEFW #4080 DEFW #0000 DEFW #0180 ;-------------------------------; B_INSTALL: ;------- LD LX,B_C2P_T CALL B_I00 ;- CALL B_I30 ;------- LD DE,B_REND_LN LD HL,B_IT1 LD BC,#4003 CALL MOVES LD (HL),#C9 ;------- LD HL,B_H_INC LD DE,B_REND_LN+#02 LD B,#40-1 B_I22 LD (HL),#09 ;ADD HL,BC INC HL LD (HL),#7B ;LD A,E INC HL LD (HL),#30 ;JR C,$+2+1 INC HL LD (HL),#01 INC HL LD (HL),#7A ;LD A,D INC HL LD (HL),#32 ;LD (#0000),A INC HL LD (HL),E INC HL LD (HL),D INC HL INC DE INC DE INC DE DJNZ B_I22 LD (HL),#C9 ;------- LD LX,B_C2P_T LD DE,B_B_SCR LD BC,#0100 JP C2P_INS ;----------- B_I00 LD A,USE_BANK_1 CALL OOUT LD D,B_TXR_BUF/#100 LD HL,T_TXR B_I02 LD E,#00 LD B,#40 B_I01 LD A,(HL) ADD A,LX LD (DE),A INC HL INC E DJNZ B_I01 INC D BIT 6,D JR Z,B_I02 ;- B_I32 LD H,B_TXR_BUF/#100 LD D,H B_I11 LD BC,#00C0 LD L,B LD E,#40 LDIR INC H BIT 6,H JR Z,B_I11 JP OOUT10 ;-- B_I30 LD BC,#4000 B_I31 LD HL,B_TXR_BUF LD DE,B_TXR_BUF+#4000 LDIR RET ;------- B_IT1 LDI NOP ;-------------------------------T------------------------------; T_INS: EI LD A,#C3 LD (T_RET),A ;- LD A,#50 CALL T_CALL2 SUB A LD (A_PRAY1+1),A LD (A_PRAY2+1),A LD (A_PRAY3+1),A LD (A_PRAY4+1),A LD H,T_SIN/#100 LD DE,A_RAYZ LD C,#03 CALL A_I51 CALL A_I51 LD C,#05 CALL A_I51 CALL A_I51 ;------- CALL T_CALL EI LD HL,A_B_SCR+#0C0+#10 LD DE,A_B_SCR LD LX,#20 T_C02 LD BC,#20 PUSH BC LDIR POP BC ADD HL,BC PUSH HL LD H,D LD L,E DEC L LD B,#20 T_C01 LD A,(HL) SUB A_C2P_T LD (HL),A LD (DE),A INC DE DEC L DJNZ T_C01 POP HL DEC LX JR NZ,T_C02 LD HL,A_B_SCR+#7FF LD DE,A_B_SCR+#800 LD BC,#40*#20 T_C03 LD A,(HL) LD (DE),A DEC HL INC DE DEC BC LD A,B OR C JR NZ,T_C03 LD A,USE_BANK_1 CALL OOUT LD HL,A_B_SCR LD DE,T_TXR LD BC,#1000 LDIR JP OOUT10 ;-------------------------------A------------------------------; A_C2P_T EQU #89 A_B_SCR EQU #8000 ;BUF=#0980 A_REND_LN EQU #9100 ;COD=#0180 A_RAY_DAT EQU #9300 ;BUF=#0100 A_RAYZ EQU #9400 ;TAB=#0400 A_SRL_TAB EQU #9800 ;TAB=#0100 A_GEN_RAYZ EQU #9900 ;COD=#0F00 A_GEN_LIGH EQU #A800 ;COD=#0480 A_MAP EQU #AD00 ;MAP=#1300 A_LIGH_VOL EQU #C000 ;TAB=#2600 A_VOLZ EQU #F000 ;TAB=#1000 ;--------------- A_:CALL HHALT CALL A_POSA_2 ;-- CALL A_POSA_1 ;------- T_CALL LD DE,A_RAY_DAT LD B,A_SRL_TAB/#100 A_PRAY1 LD HL,A_RAYZ+#000 EXX A_PRAY2 LD BC,A_RAYZ+#100 A_PRAY3 LD HL,A_RAYZ+#200 A_PRAY4 LD DE,A_RAYZ+#300 CALL A_GEN_RAYZ ;------- A_P_LIG LD HL,#2121 LD (A_GENL1+1),SP LD SP,HL JP A_GEN_LIGH A_GENL1 LD SP,#3131 ;-- LD LX,#0D LD HL,A_MAP LD BC,A_B_SCR CALL A_REND_M ;-- CALL HHALT CALL A_POSA_2 ;-- LD LX,#19 LD HL,A_MAP+#0680 LD BC,A_B_SCR+#0340 T_RET CALL A_REND_M ;------- CALL A_POSA_2 JP C2P_ ;--------------- A_REND_M: LD (A_R_03+1),SP LD SP,HL LD H,A_RAY_DAT/#100 A_R_02 JP A_REND_LN A_R_01 INC BC DEC LX JR NZ,A_R_02 A_R_03 LD SP,#3131 RET ;--------------- A_POSA_1: LD HL,A_SIN_1 CALL SIN LD (A_PRAY1+1),A LD HL,A_SIN_2 CALL SIN LD (A_PRAY2+1),A LD HL,A_SIN_3 CALL SIN LD (A_PRAY3+1),A A_SIN_4 LD HL,T_SIN INC L INC L INC L LD (A_SIN_4+1),HL LD A,(HL) SRL A LD (A_PRAY4+1),A RET ;------- A_POSA_2: A_SIN_6 LD A,#A1 DEC A JR NZ,$+2+1 INC A LD (A_SIN_6+1),A DEC A JR Z,A_SIN_5 A_SIN_7 LD A,#00 INC A BIT 6,A JR Z,$+2+1 DEC A LD (A_SIN_7+1),A SRL A ADD A,#27 JR T_CALL2 A_SIN_5 LD A,0 INC A CP 40 JR NZ,$+2+1 SUB A LD (A_SIN_5+1),A LD E,A LD D,#00 LD HL,A_T_MUZYKI ADD HL,DE LD A,(HL) ADD A,#38 T_CALL2 LD L,A LD H,#00 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD DE,A_VOLZ ADD HL,DE LD (A_P_LIG+1),HL RET ;--------------- A_T_MUZYKI: DEFB #0F,#0F,#0F,#0E,#0E DEFB #0D,#0D,#0C,#0B,#0A DEFB #0A,#08,#07,#05,#04 DEFB #03,#02,#01,#00,#00 DEFB #00,#02,#03,#04,#05 DEFB #07,#08,#09,#0A,#0A DEFB #0B,#0C,#0D,#0D,#0E DEFB #0E,#0F,#0F,#0F,#0F ;------- A_SIN_1 DEFW #5080 DEFW #0000 DEFW #0030 A_SIN_2 DEFW #4080 DEFW #0000 DEFW #0018 A_SIN_3 DEFW #5880 DEFW #0000 DEFW #0038 ;-------------------------------; A_INSTALL: LD A,USE_BANK_1 CALL OOUT LD HL,A?_MAP LD DE,A_MAP LD BC,#1300 LDIR CALL OOUT10 ;------- LD DE,A_REND_LN LD HL,A_IT1 LD BC,#4006 CALL MOVES DEC HL LD DE,A_R_01 CALL EXIT_1 ;------- LD DE,A_GEN_RAYZ LD HL,A_IT2 LD BC,#000F CALL MOVES DEC HL DEC HL LD (HL),#C9 ;------- LD HL,A_GEN_LIGH LD DE,A_LIGH_VOL LD C,#26 A_I32 LD B,#08 A_I31 LD (HL),#E1 INC HL LD (HL),#22 INC HL LD (HL),E INC HL LD (HL),D INC HL INC E INC E DJNZ A_I31 LD E,#00 INC D DEC C JR NZ,A_I32 LD DE,A_GENL1 CALL EXIT_1 ;------- LD HL,A_SRL_TAB A_I41 LD A,L RRCA RRCA RRCA RRCA AND #0F LD (HL),A INC L JR NZ,A_I41 ;------- LD H,T_SIN/#100 LD DE,A_RAYZ LD C,#09 CALL A_I51 LD C,#06 CALL A_I51 LD C,#08 CALL A_I51 LD C,#05 CALL A_I51 ;------- LD HL,A_VOLZ LD D,#B0 LD C,#00 A_I72 LD E,D LD B,#10 A_I71 LD A,E CP #80 JR C,$+2+2 LD A,#7F CP #70 JR NC,$+2+2 LD A,#70 SUB #70 SRL A ADD A,A_C2P_T LD (HL),A DEC E INC HL DJNZ A_I71 A_I73 LD A,#80 ADD A,#80 LD (A_I73+1),A JR NZ,$+2+1 DEC D DEC C JR NZ,A_I72 ;------- LD LX,#28 CALL A_POSA_1 DEC LX JR NZ,$-2-3 ;------- LD A,#88 LD (C2P_SPR),A LD LX,A_C2P_T LD DE,A_B_SCR LD BC,#0040 CALL C2P_INS JP C2P_IAD ;------- A_I51 LD A,(HL) SRL A SRL A LD (DE),A LD A,L ADD A,C LD L,A INC E JR NZ,A_I51 INC D RET ;------- A_IT1 POP DE ;10 LD L,E ;4 LD E,(HL) ;7 LD A,(DE) ;7 LD (BC),A ;7 INC C ;4 ;39 ;------- A_IT2 LD A,(BC) ;7 INC C ;4 ADD A,(HL) ;7 INC L ;4 EX DE,HL ;4 ADD A,(HL) ;7 INC L ;4 EXX ;4 ADD A,(HL) ;7 INC L ;4 LD C,A ;4 LD A,(BC) ;7 LD (DE),A ;7 INC E ;4 EXX ;4 ;78 ;-------------------------------; A?_INSTALL: LD A,#2C LD LY,#C0 CALL Z_MAIN LD DE,#8000 LD H,#C0-#13 A_I10 LD L,#80-#40 LD BC,#0080 LDIR INC H DEC A JR NZ,A_I10 LD A,USE_BANK_1 CALL OOUT LD HL,#8000 LD DE,A?_MAP LD BC,#1300 LDIR RET ;-------------------------------Z------------------------------; Z_MAIN LD (Z_T00+1),HL LD (Z_X00+1),A CALL OOUT10 LD HL,#0000 LD (T_V_D1+1),HL LD HL,#4000 LD (T_V_D2+1),HL LD HL,#8000 LD BC,#7FFF LD A,C CALL FILL ;--- LD B,#3F Z_I02 PUSH BC Z_T00 LD HL,#2121 LD A,(HL) INC HL LD (Z_T00+1),HL Z_X00 LD LY,A ;#6F LD ;#2C INC ;-- LD BC,#8000 T_V_D1 LD DE,#0000 INC E INC E INC E INC DE LD (T_V_D1+1),DE T_V_D2 LD HL,#4000 DEC H LD (T_V_D2+1),HL T_V_C1 LD A,H LD (BC),A ADD HL,DE INC C BIT 7,C JP Z,T_V_C1 ;--- LD BC,T_SIN LD IX,T_SIN+#40 Z_I01 LD H,#80 LD A,(BC) LD L,A SRL L LD E,(HL) LD L,(IX+0) SRL L LD D,(HL) SLA E SET 7,D ;- LD A,C LD (DE),A INC E LD A,LY LD (DE),A ;- INC LX INC C JR NZ,Z_I01 POP BC DJNZ Z_I02 ;------- LD LX,#02 Z_I22 LD HL,#8100 Z_I20 INC L LD A,(HL) CP #FF JR NZ,Z_I21 INC H LD D,(HL) DEC L LD E,(HL) DEC H LD (HL),E INC L LD (HL),D Z_I21 INC HL BIT 7,H JR NZ,Z_I20 DEC LX JR NZ,Z_I22 RET ;--------------------------------------------------------------; V_BLANK:DI PUSH HL PUSH DE PUSH BC PUSH AF CALL M_MAIN ;- LD A,#7F IN A,(#FE) BIT 0,A JP Z,EXIT ;- POP AF POP BC POP DE POP HL EI RET ;------- M_MAIN: M_C01 LD A,#7F INC A CP #05 JR C,$+2+1 SUB A LD (M_C01+1),A JR NZ,M_C02 M_C03 LD A,#0F INC A LD (M_C03+1),A CP #10 JR C,M_C04 SUB A LD (M_C03+1),A M_C05 LD HL,M_PDAT LD A,(HL) INC HL LD (M_C05+1),HL LD L,A LD H,#00 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD DE,M_PATS ADD HL,DE LD (M_C06+1),HL JR M_C07 M_C04 LD L,A LD H,#00 M_C06 LD DE,#1111 ADD HL,DE M_C07 LD A,(HL) ADD A,A ADD A,A LD L,A ADD A,A ADD A,A ADD A,L LD L,A LD H,#00 LD DE,M_SMPL0 ADD HL,DE JR $+2+3 M_C02 LD HL,#2121 LD A,(HL) INC HL LD (M_OUT_T+#09),A LD A,(HL) INC HL LD (M_OUT_T+#03),A LD A,(HL) INC HL LD (M_OUT_T+#02),A LD A,(HL) AND #0F LD (M_OUT_T+#06),A LD A,(HL) AND #F0 RRCA RRCA RRCA OR #28 LD (M_OUT_T+#07),A INC HL LD (M_C02+1),HL LD HL,M_OUT_T+#09 LD A,#09 JP M_OOUTI ;------- M_SMPL0 DEFB #00,#00,#00,#90 ;nop 0-0 DEFB #00,#00,#00,#90 DEFB #00,#00,#00,#90 DEFB #00,#00,#00,#90 DEFB #00,#00,#00,#90 DEFB #0E,#02,#6F,#0F ;bum 2-1 DEFB #0F,#02,#EF,#80 DEFB #0D,#04,#EF,#80 DEFB #0C,#06,#EF,#80 DEFB #0B,#08,#EF,#80 DEFB #0F,#01,#6F,#04 ;bumpss 6-2 DEFB #0E,#01,#EF,#05 DEFB #0D,#02,#6F,#05 DEFB #0C,#02,#EF,#04 DEFB #0B,#03,#6F,#02 DEFB #0D,#00,#09,#00 ;pss 8-3 DEFB #0A,#00,#00,#10 DEFB #06,#00,#00,#10 DEFB #00,#00,#00,#10 DEFB #00,#00,#00,#10 DEFB #0F,#01,#E9,#04 ;psssss C-4 DEFB #0F,#02,#1B,#02 DEFB #0F,#02,#4D,#02 DEFB #0E,#02,#7F,#01 DEFB #0C,#00,#00,#12 DEFB #0C,#00,#00,#12 ;psssss C-5 add DEFB #0C,#00,#00,#12 DEFB #0C,#00,#00,#12 DEFB #0C,#00,#00,#12 DEFB #0B,#00,#00,#12 ;------- M_INS: LD HL,M_OUT_T+#0D LD A,#0D M_OOUTI LD C,#FD LD DE,#FFBF LD B,D OUT (C),A LD B,E OUTD DEC A JP P,$-1-2-1-2-1 RET M_OUT_T DEFB #04,#08,#00,#00,#05,#08 DEFB #00,#2A DEFB #1F,#00,#1F DEFB #40,#00,#0A M_WAIT: LD A,(M_C03+1) OR A RET Z JR M_WAIT ;------- M_PDAT DEFB #7,#8 DEFB #5,#6,#5,#6,#5,#6,#5,#6 ;credit DEFB #4,#4 DEFB #0,#0,#0,#0,#0,#0,#0,#3 ;rayz DEFB #1,#2,#1,#2,#1,#2,#1,#3 ;turn DEFB #D,#E,#D,#E,#D,#E,#D,#F ;stretch1 DEFB #10,#11,#10,#12,#10,#11,#10,#13 ;voxel DEFB #A,#B,#A,#B,#A,#B,#A,#C ;rotate DEFB #0,#0,#0,#0,#0,#0,#0,#3 ;plazma DEFB #10,#11,#10,#12,#10,#11,#10,#13 ;stretch2 DEFB #A,#B,#A,#B,#A,#B,#A,#C ;bump DEFB #1,#2,#1,#2,#1,#2,#1,#3 ;scaling DEFB #D,#E,#D,#E,#D,#E,#D,#F ;tunnel DEFB #9,#9 M_PATS DEFB 1,3,1,3,4,5,5,2,3,2,1,3,4,5,1,3 ;0 DEFB 1,3,1,3,4,5,3,4,1,3,1,3,4,3,1,3 ;1 DEFB 1,3,1,3,4,5,3,4,3,2,1,3,4,3,1,3 ;2 DEFB 1,3,1,3,4,5,1,4,5,1,4,5,4,5,4,5 ;3 DEFB 1,0,3,0,1,0,3,0,1,0,3,0,1,0,3,0 ;4 DEFB 4,5,3,0,0,0,3,0,0,0,3,0,0,0,3,0 ;5 DEFB 0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,3 ;6 DEFB 0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0 ;7 DEFB 0,0,3,0,0,0,3,0,0,0,3,0,3,0,3,3 ;8 DEFB 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 ;9 ;- DEFB 1,0,1,3,2,0,1,2,1,3,1,0,4,5,2,2 ;A DEFB 1,0,1,3,4,5,1,2,1,2,1,0,4,5,1,0 ;B DEFB 1,0,1,3,4,5,1,0,1,0,3,3,3,3,3,3 ;C ;- DEFB 1,3,1,3,4,5,1,2,3,2,1,3,4,5,1,3 ;D DEFB 1,3,1,3,4,5,1,2,3,2,1,3,4,5,1,2 ;E DEFB 1,3,1,3,4,5,1,2,3,2,1,3,2,2,2,2 ;F ;- DEFB 1,0,3,3,3,0,1,0,2,0,1,0,3,0,1,0 ;10 DEFB 1,0,2,0,1,0,3,0,2,0,1,0,3,0,3,0 ;11 DEFB 1,0,2,0,1,0,3,0,2,0,1,0,2,0,2,0 ;12 DEFB 1,0,2,0,1,0,3,0,2,0,0,0,0,0,0,0 ;13 ;------- CL_T_COLL: DEFB #4D ;rayz DEFB #46 ;turn DEFB #4B ;stretch1 DEFB #44 ;voxel DEFB #4C ;rotare DEFB #56 ;plazma DEFB #44 ;stretch2 DEFB #4F ;bump DEFB #46 ;scaling DEFB #55 ;tunnel DEFB #07 ;--------------------------------------------------------------; C2P_TPOS1 EQU #6000 C2P_SPR1 EQU #60C0 C2P_TPOS2 EQU #6100 C2P_SPR2 EQU #61C0 ;------- C2P_: C2P_1 LD A,#00 ADD A,#80 LD (C2P_1+1),A B_ADD1 LD HL,#0000 JR NZ,$+2+2 BLUR_ON LD H,#14 LD (C2P_AD1),HL CALL HHALT JR NZ,C2P_C00 LD HL,C2P_TPOS2 CALL C2P_LNZ LD HL,C2P_SPR1 CALL C2P_MOV LD HL,C2P_TPOS1 JR C2P_LNZ C2P_C00:LD HL,C2P_TPOS1 CALL C2P_LNZ LD HL,C2P_SPR2 CALL C2P_MOV LD HL,C2P_TPOS2 ;------- C2P_LNZ:LD (C2P_SP1+1),HL LD (C2P_SP2+1),SP LD A,#26 C2P_SP1 LD SP,#3131 POP HL POP DE LD (C2P_SP1+1),SP C2P_AD1 NOP NOP LD SP,HL DUP #20 POP HL LDI EDUP DEC A JP NZ,C2P_SP1 C2P_SP2 LD SP,#3131 RET C2P_MOV:LD (C2P_SP3+1),SP LD SP,HL C2P_MOVE DEFS #80 C2P_SP3 LD SP,#3131 RET ;------- C2P_INS EXX LD HL,C2P_MOVE LD D,LX LD C,#08 C2P_I02 LD E,LX LD B,#04 C2P_I01 LD (HL),#E1 INC HL LD (HL),#22 INC HL LD (HL),E INC HL LD (HL),D INC HL INC E INC E DJNZ C2P_I01 INC D DEC C JR NZ,C2P_I02 EXX LD HL,C2P_TPOS1 LD A,#26 CALL C2P_I20 ;-- LD DE,C2P_SPR1 LD HL,C2P_SPR LD B,H LD C,L CALL C2P_I32 LD DE,C2P_SPR2 LD B,H LD C,L C2P_I32 LD HX,#08 C2P_I31 LD LX,#08 LD A,(HL) INC HL AND #0F LD LY,A PUSH BC C2P_I30 LD A,(BC) INC BC AND #F0 OR LY LD (DE),A INC E DEC LX JR NZ,C2P_I30 POP BC DEC HX JR NZ,C2P_I31 RET C2P_IAD HALT LD A,(C2P_1+1) OR A LD HL,C2P_SPR1 JR Z,$+2+3 LD HL,C2P_SPR2 JP C2P_MOV C2P_SPR:DEFB #88,#88,#AA,#AA,#EE,#EE,#FF,#FF DEFB #00,#22,#22,#AA,#AA,#BB,#BB,#FF ;------- C2P_I20:LD (HL),E INC L LD (HL),D INC H LD (HL),D DEC L LD (HL),E DEC H EX DE,HL ADD HL,BC EX DE,HL INC L INC L INC L INC L DEC A JR NZ,C2P_I20 RET ;--------------------------------------------------------------; INSTALL: ;------- LD HL,T_SIN+#7F LD DE,T_SIN+#81 LD A,(HL) LD (DE),A DEC L INC E JR NZ,$-2-2 ;------- LD HL,#6200 LD A,#63 LD (HL),A INC L JR NZ,$-2 INC H LD (HL),A LD A,#C3 LD (#6363),A LD HL,V_BLANK LD (#6364),HL LD A,#62 LD I,A IM 2 ;------- LD HL,C2P_TPOS1 LD DE,#4040 LD B,#13 C2P_I10 INC L INC L LD (HL),E INC L LD (HL),D INC L INC L INC L LD (HL),E INC L LD A,D ADD A,#04 LD (HL),A INC L LD A,E ADD A,#20 LD E,A JR NC,$+2+4 LD A,D ADD A,#08 LD D,A DJNZ C2P_I10 LD HL,C2P_TPOS1 LD DE,C2P_TPOS2 LD B,#26 C2P_I11 INC L INC L INC E INC E LD A,(HL) LD (DE),A INC L INC E LD A,(HL) ADD A,#02 LD (DE),A INC L INC E DJNZ C2P_I11 ;------- ;------- SUB A OUT (#FE),A CALL CL_SCR JP M_INS ;------- EXIT_1: LD (HL),#C3 INC HL LD (HL),E INC HL LD (HL),D RET EXIT_2: LD (HL),#DD INC HL LD (HL),#E9 RET OOUT10: LD A,#10 OOUT: LD BC,#7FFD OUT (C),A RET HHALT: EI HALT DI RET FILL: LD D,H LD E,L INC DE LD (HL),A LDIR RET MOVES: LD A,B LD B,#00 PUSH HL PUSH BC LDIR POP BC POP HL DEC A JR NZ,$-1-1-1-2-1-1 EX DE,HL RET SIN: LD (SIN_SP1+1),SP DI LD SP,HL POP BC POP HL POP DE PUSH DE BIT 7,B JR Z,$+2+3+3+1 LD A,E CPL LD E,A LD A,D CPL LD D,A INC DE ADD HL,DE PUSH HL ADD HL,BC PUSH HL LD A,H SIN_SP1 LD SP,#3131 EI RET ;------- Y_: EXX CL_TC1 LD HL,CL_T_COLL LD A,(HL) INC HL LD (CL_TC1+1),HL CALL FILATTR EXX ;- LD (Y_CD+1),HL Y_C1 PUSH BC Y_CD CALL #CDCD POP BC DEC BC LD A,B OR C JR NZ,Y_C1 ;------- EI CL_SCR: LD HL,#5AFF LD DE,#5AFE LD BC,#1B00 LD (HL),C LDDR RET FILATTR LD HL,#5840 LD BC,#025F JP FILL ;------- ORG #6400 T_SIN DEFB #FF,#FF,#FF,#FF,#FE,#FE,#FE,#FD DEFB #FD,#FC,#FB,#FA,#FA,#F9,#F8,#F6 DEFB #F5,#F4,#F3,#F1,#F0,#EE,#ED,#EB DEFB #EA,#E8,#E6,#E4,#E2,#E0,#DE,#DC DEFB #DA,#D7,#D5,#D3,#D0,#CE,#CB,#C9 DEFB #C6,#C4,#C1,#BE,#BC,#B9,#B6,#B3 DEFB #B0,#AD,#AA,#A7,#A5,#A2,#9E,#9B DEFB #98,#95,#92,#8F,#8C,#89,#86,#83 DEFB #80,#7C,#79,#76,#73,#70,#6D,#6A DEFB #67,#64,#61,#5D,#5A,#58,#55,#52 DEFB #4F,#4C,#49,#46,#43,#41,#3E,#3B DEFB #39,#36,#34,#31,#2F,#2C,#2A,#28 DEFB #25,#23,#21,#1F,#1D,#1B,#19,#17 DEFB #15,#14,#12,#11,#0F,#0E,#0C,#0B DEFB #0A,#09,#07,#06,#05,#05,#04,#03 DEFB #02,#02,#01,#01,#01,#00,#00,#00 ;------- ORG #6500