;
; WATER INVASION v1.0 - (c) EPSILON 1996 ; ORG #8000 ; ENT $ ; SSTONE1 EQU 64*11+#F000+13 SSTONE2 EQU 64*8+#E000+35 SSTONE3 EQU 64*8+#E800+55 SSTONE4 EQU 64*16+#E800+49 SSTONE5 EQU 64*23+#D000+19 SSTONE6 EQU 64*24+#E000+53 NBWATER EQU 1280 VALWATER EQU #CC ; LD A,(#A700) PUSH AF LD HL,#ABFF LD DE,#40 CALL #BCCB POP AF LD (#A700),A ; XOR A CALL #BC0E LD HL,OUT_F CALL OUT ; LD HL,TABCOL LD B,16 XOR A GOCOL PUSH BC PUSH AF PUSH HL LD C,(HL) LD B,C CALL #BC32 POP HL INC HL POP AF INC A POP BC DJNZ GOCOL LD BC,0 CALL #BC38 ; LD HL,#4000 LD DE,#C000 LD B,28 CALL GOSPR LD HL,#4D4A LD DE,64*3+#D800 LD B,25*8 CALL GOSPR LD HL,#4705 LD DE,64*29+#C000 LD B,24 CALL GOSPR ; LD DE,TABWAT LD B,NBWATER/10 CLCWAT PUSH BC LD HL,PRETAB LD BC,30 LDIR POP BC DJNZ CLCWAT ; LD HL,STONE LD DE,SSTONE1 LD B,4 CALL AFFSTONE LD HL,STONE LD DE,SSTONE2 LD B,4 CALL AFFSTONE LD HL,STONE LD DE,SSTONE3 LD B,4 CALL AFFSTONE LD HL,STONE LD DE,SSTONE4 LD B,4 CALL AFFSTONE LD HL,STONE LD DE,SSTONE5 LD B,4 CALL AFFSTONE LD HL,STONE LD DE,SSTONE6 LD B,4 CALL AFFSTONE ; DI LD HL,(#38) LD (END+1),HL LD HL,#C9FB LD (#38),HL EI ; SYNC LD B,#F5 IN A,(C) RRA JR NC,SYNC+2 EI ; LD B,#FF DJNZ $ ; HALT HALT HALT HALT HALT HALT ; CALL WATER ; CALL TESTKEY LD A,(BUFFKEY+6) CP #FD JP Z,STONE5 CP #FE JP Z,STONE6 LD A,(BUFFKEY+7) CP #FE JP Z,STONE4 CP #FD JP Z,STONE3 LD A,(BUFFKEY+8) CP #FD JP Z,STONE2 CP #FE JP Z,STONE1 LD A,(BUFFKEY) CP #BF JP Z,REFLET ; XOR A LD (STONE3+1),A LD (STONE2+1),A LD (STONE1+1),A LD (STONE4+1),A LD (STONE5+1),A LD (STONE6+1),A LD (REFLET+1),A ; LD A,(BUFFKEY+8) CP #FB JP NZ,SYNC ; END_ LD HL,0 LD (#38),HL ; LD HL,OUT_N CALL OUT LD A,2 CALL #BC0E CALL #BB03 RET ; TESTKEY LD HL,BUFFKEY LD BC,#F40E OUT (C),C LD B,#F6 IN A,(C) AND #30 LD C,A OR #C0 OUT (C),A OUT (C),C LD BC,#F792 OUT (C),C LD C,#40 TESTK LD B,#F6 OUT (C),C LD B,#F4 IN A,(C) LD (HL),A INC HL INC C LD A,C CP #4A JR NZ,TESTK LD BC,#F782 OUT (C),C LD BC,#F600 OUT (C),C RET ; BUFFKEY DS 10 ; REFLET LD A,0 OR A JP NZ,SYNC LD A,#FF LD (REFLET+1),A GOREFLET LD A,#FF XOR #FF LD (GOREFLET+1),A OR A JR Z,REF LD A,#0C LD (PKVALA+1),A LD (PKVALC+1),A LD A,#F0 LD (PKVALB+1),A JP SYNC REF LD A,VALWATER LD (PKVALA+1),A LD (PKVALC+1),A LD (PKVALB+1),A JP SYNC ; STONE3 LD A,0 OR A JP NZ,SYNC LD A,#FF LD (STONE3+1),A GOSTONE3 LD A,#FF XOR #FF LD (GOSTONE3+1),A OR A JR Z,ST3A LD HL,STONE JP ST3B ST3A LD HL,CSTONE ST3B LD DE,SSTONE3 LD B,4 CALL AFFSTONE JP SYNC ; STONE2 LD A,0 OR A JP NZ,SYNC LD A,#FF LD (STONE2+1),A GOSTONE2 LD A,#FF XOR #FF LD (GOSTONE2+1),A OR A JR Z,ST2A LD HL,STONE JP ST2B ST2A LD HL,CSTONE ST2B LD DE,SSTONE2 LD B,4 CALL AFFSTONE JP SYNC ; STONE1 LD A,0 OR A JP NZ,SYNC LD A,#FF LD (STONE1+1),A GOSTONE1 LD A,#FF XOR #FF LD (GOSTONE1+1),A OR A JR Z,ST1A LD HL,STONE JP ST1B ST1A LD HL,CSTONE ST1B LD DE,SSTONE1 LD B,4 CALL AFFSTONE JP SYNC ; STONE4 LD A,0 OR A JP NZ,SYNC LD A,#FF LD (STONE4+1),A GOSTONE4 LD A,#FF XOR #FF LD (GOSTONE4+1),A OR A JR Z,ST4A LD HL,STONE JP ST4B ST4A LD HL,CSTONE ST4B LD DE,SSTONE4 LD B,4 CALL AFFSTONE JP SYNC ; STONE5 LD A,0 OR A JP NZ,SYNC LD A,#FF LD (STONE5+1),A GOSTONE5 LD A,#FF XOR #FF LD (GOSTONE5+1),A OR A JR Z,ST5A LD HL,STONE JP ST5B ST5A LD HL,CSTONE ST5B LD DE,SSTONE5 LD B,4 CALL AFFSTONE JP SYNC ; STONE6 LD A,0 OR A JP NZ,SYNC LD A,#FF LD (STONE6+1),A GOSTONE6 LD A,#FF XOR #FF LD (GOSTONE6+1),A OR A JR Z,ST6A LD HL,STONE JP ST6B ST6A LD HL,CSTONE ST6B LD DE,SSTONE6 LD B,4 CALL AFFSTONE JP SYNC ; STONE DB #8F,#87,#87,#C7 DB #1E,#96,#69,#69 DB #4B,#2D,#96,#87 DB #8F,#C7,#4B,#4F CSTONE DS 4*4 ; AFFSTONE PUSH BC PUSH DE LDI LDI LDI LDI POP DE EX DE,HL CALL BC26 EX DE,HL POP BC DJNZ AFFSTONE RET ; OUT LD BC,#BD04 O_INCP DEC B LD A,(HL) OUT (C),A INC B INC HL LD A,(HL) OUT (C),A INC HL DEC C JR NZ,O_INCP RET ; OUT_F DB 1,32,2,42,6,32,7,34 OUT_N DB 1,40,2,46,6,25,7,30 ; GOSPR PUSH BC PUSH DE LD BC,64 LDIR POP DE EX DE,HL CALL BC26 EX DE,HL POP BC DJNZ GOSPR RET ; TABCOL DB 0,26,14,5,1,23,25,4 DB 8,16,6,3,9,18,17,13 ; BC26 LD A,H ADD A,08 LD H,A AND #38 RET NZ LD A,H SUB #40 LD H,A LD A,L ADD A,64 LD L,A RET NC INC H LD A,H AND #07 RET NZ LD A,H SUB 8 LD H,A RET ; WATER LD IX,TABWAT OKWAT3 LD BC,0 INC BC LD A,B CP #05 JR Z,OKWAT1 LD (OKWAT3+1),BC ; OKWAT1 LD L,(IX+0) LD H,(IX+1) LD A,(HL) CP #8F JR Z,OKWAT10 CP #87 JR Z,OKWAT10 CP #C7 JR Z,OKWAT10 CP #1E JR Z,OKWAT10 CP #96 JR Z,OKWAT10 CP #69 JR Z,OKWAT10 CP #4B JR Z,OKWAT10 CP #2D JR Z,OKWAT10 CP #4F JR Z,OKWAT10 ; LD D,H LD E,L ; CALL BC26 ; LD A,(HL) OR A JR NZ,OKWAT6 ; EX DE,HL LD (HL),0 EX DE,HL ; PKVALA LD A,#0C PKVALB XOR #F0 PKVALC XOR #0C LD (PKVALA+1),A LD (PKVALW+1),A LD (IX+2),0 JR OKWAT0 ; OKWAT6 LD A,VALWATER LD (PKVALW+1),A ; LD A,(IX+2) OR A JR NZ,OKWAT5 ; LD H,D LD L,E ; INC HL LD A,(HL) OR A JR NZ,OKWAT8 ; EX DE,HL LD (HL),0 EX DE,HL JR OKWAT7 ; OKWAT8 LD (IX+2),1 OKWAT5 LD H,D LD L,E ; DEC HL LD A,(HL) OR A JR NZ,OKWAT9 ; EX DE,HL LD (HL),0 EX DE,HL JR OKWAT0 ; OKWAT9 LD H,D LD L,E OKWAT7 LD (IX+2),0 OKWAT0 LD (IX+0),L LD (IX+1),H PKVALW LD (HL),VALWATER OKWAT10 INC IX INC IX INC IX DEC BC LD A,B OR C JP NZ,OKWAT1 RET ; PRETAB DW 64*4+#D800+3 DB 0 DW 64*4+#D800+3 DB 0 DW 64*4+#D800+3 DB 0 DW 64*4+#D800+3 DB 0 DW 64*3+#F800+2 DB 0 DW 64*4+#D800+3 DB 0 DW 64*4+#D800+3 DB 0 DW 64*3+#F800+2 DB 0 DW 64*3+#F800+2 DB 0 DW 64*4+#D800+3 DB 0 ; TABWAT ; ; ; ; |