; DETONATORS v0.02 by Martin Rehak ; (C) 2001; rayer@centrum.cz ; A86 r00L3z! (designed for Portfolio) MOV AX,0004h INT 10h ;nahod gfx ;defaultni MAPA je MAP1 CALL INITP ;set PLAYER pos CALL DRAWMAP CALL DRAWP START: CALL WATCHKBD CALL WATCHBOMB JMP START KONEC: MOV AX,0007h INT 10h ;nahod text INT 20h ;------ GLOBAL VARIABLES, SUBROUTINES P1: DW 0 ;pozice P1SID: DB 50h ;SID P1DIE: DB 0 ;pocet zabiti P1 P1B: DW 0 ;pozice bomby P1BC: DW 0 ;bomb counter P1BR: DB 2 ;bomb range P2: DW 0 ;pozice P2SID: DB 60h ;SID P2DIE: DB 0 ;pocet zabiti P2 P2B: DW 0 ;pozice bomby P2BC: DW 0 ;bomb counter P2BR: DB 0 ;bomb range CURMAP: DW OFFSET MAP1 DEFBOMBC: DW 6 ;default bomb CNT CHAINBOMB: DB 0 ;zretezeny vybuch DLY: PUSHA ;pocet loopu dej do CX POPA LOOP DLY RET WATCHBOMB: PUSH AX PUSH BX PUSH DX PUSH SI MOV AX,[P1BC] CMP AX,0 ;je-li 0 preskoc JE WATCHBOMB1 DEC AX ;dekrementuj MOV [P1BC],AX MOV BX,[P1] MOV DX,[P1B] CMP BX,DX JE WATCHBOMB2 MOV SI,OFFSET SBOMB1 CALL DRAWS ;nakresli bombu WATCHBOMB2: CMP AX,0 ;je-li 0 bouchni JNE WATCHBOMB1 MOV AL,[P1BR] MOV DX,[P1B] CALL DETBOMB CALL CLRBOMB MOV AH,[CHAINBOMB] CMP AH,6 ;zasazena B2? JNE WATCHBOMB1 MOV AL,[P2BR] MOV DX,[P2B] CALL DETBOMB ;bouchni B2 CALL CLRBOMB XOR AX,AX MOV [P2BC],AX ;snuluj B2 MOV [CHAINBOMB],AL WATCHBOMB1: ;to samy pro P2 MOV AX,[P2BC] CMP AX,0 ;je-li 0 preskoc JE WATCHBOMB3 DEC AX ;sniz pocitadlo MOV [P2BC],AX MOV BX,[P2] MOV DX,[P2B] CMP BX,DX JE WATCHBOMB4 MOV SI,OFFSET SBOMB1 CALL DRAWS ;nakresli bombu WATCHBOMB4: CMP AX,0 ;je-li 0 bouchni JNE WATCHBOMB3 MOV AL,[P2BR] MOV DX,[P2B] CALL DETBOMB CALL CLRBOMB MOV AH,[CHAINBOMB] CMP AH,5 ;zasazena B1? JNE WATCHBOMB3 MOV AL,[P1BR] MOV DX,[P1B] CALL DETBOMB ;bouchni B1 CALL CLRBOMB XOR AX,AX MOV [P1BC],AX ;snuluj B1 MOV [CHAINBOMB],AL WATCHBOMB3: POP SI POP DX POP BX POP AX RET WATCHKBD: ;hlidej klavesy PUSH AX ;a hejbej playerem PUSH BX ; XOR AH,AH ;cti klavesu ; INT 16h MOV AH,1 ;zjisti stisk key INT 16h JZ WATCHKBTMP ; nebyla skoc XOR AH,AH ;kdyz byla, tak INT 16h ;cti klavesu MOV BX,AX CMP BL,27 ;ESC JNE WATCHKBD1 JMP KONEC ;EXIT WATCHKBD1: CMP BL,'w' ;P1UP KEY JNE WATCHKBD2 MOV AX,0101h CALL MOVEP WATCHKBTMP: JMP WATCHKBD_END WATCHKBD2: CMP BL,'z' ;P1DOWN KEY JNE WATCHKBD3 MOV AX,0100h CALL MOVEP JMP WATCHKBD_END WATCHKBD3: CMP BL,'s' ;P1RIGHT KEY JNE WATCHKBD4 MOV AX,0102h CALL MOVEP JMP WATCHKBD_END WATCHKBD4: CMP BL,'a' ;P1LEFT KEY JNE WATCHKBD5 MOV AX,0103h CALL MOVEP JMP WATCHKBD_END WATCHKBD5: CMP BL,' ' ;P1BOMB KEY JNE WATCHKBD6 CALL P1PUTBOMB JMP WATCHKBD_END WATCHKBD6: CMP BL,'[' ;P2UP KEY JNE WATCHKBD7 MOV AX,0201h CALL MOVEP JMP WATCHKBD_END WATCHKBD7: CMP BL,'/' ;P2DOWN KEY JNE WATCHKBD8 MOV AX,0200h CALL MOVEP JMP WATCHKBD_END WATCHKBD8: CMP BL,39 ;P2RIGHT KEY JNE WATCHKBD9 MOV AX,0202h CALL MOVEP JMP WATCHKBD_END WATCHKBD9: CMP BL,';' ;P2LEFT KEY JNE WATCHKBD10 MOV AX,0203h CALL MOVEP JMP WATCHKBD_END WATCHKBD10: CMP BL,13 ;P2BOMB KEY JNE WATCHKBD11 CALL P2PUTBOMB JMP WATCHKBD_END WATCHKBD11: WATCHKBD_END: CALL DRAWP POP BX POP AX RET DRAWS: PUSHA ;dej do SI ;offset spritu, [X,Y]->DH,DL CMP SI,0 ;je-li SI=0 JE DRAWS3 ;nekresli nic SHL DH,3 ;X,Y v blocich SHL DL,3 MOV DI,DX SHR DI,8 ;X do DI XOR DH,DH ;Y do DX MOV AH,0Ch XOR BH,BH MOV CX,8 DRAWS2: MOV BL,[SI] PUSH CX MOV CX,DI ADD CX,8 DRAWS1: MOV AL,BL AND AL,1 SHR BL,1 DEC CX INT 10h CMP CX,DI JNE DRAWS1 POP CX INC SI INC DX LOOP DRAWS2 DRAWS3: POPA RET P1PUTBOMB: PUSH AX ;P1 da bombu PUSH DX PUSH DI MOV DI,[CURMAP] MOV AX,[P1BC] CMP AX,0 ;je uz bomba? JNE P1PUTBOMB_END ;jinak poloz MOV AX,[DEFBOMBC] MOV [P1BC],AX ;vloz CNT MOV AL,[P1SID] ADD AL,4 ;updatuj SID MOV [P1SID],AL MOV DX,[P1] ;vloz BOMBPOS MOV [P1B],DX CALL _COMPOFS MOV AL,5 ;P1B SID MOV [DI],AL ;update MAP P1PUTBOMB_END: POP DI POP DX POP AX RET P2PUTBOMB: PUSH AX ;P2 da bombu PUSH DX PUSH DI MOV DI,[CURMAP] MOV AX,[P2BC] CMP AX,0 ;je uz bomba? JNE P2PUTBOMB_END ;jinak poloz MOV AX,[DEFBOMBC] MOV [P2BC],AX ;vloz CNT MOV AL,[P2SID] ADD AL,4 ;updatuj SID MOV [P2SID],AL MOV DX,[P2] ;vloz BOMBPOS MOV [P2B],DX CALL _COMPOFS MOV AL,6 ;P2B SID MOV [DI],AL ;update MAP P2PUTBOMB_END: POP DI POP DX POP AX RET DRAWMAP:PUSH AX ;nakresli PUSH CX ;CURMAP PUSH DX PUSH SI MOV SI,[CURMAP] XOR DX,DX MOV CX,8 DRAWM0: PUSH CX MOV CX,30 DRAWM1: MOV AL,[SI] ;nacti SID PUSH SI CMP AL,0 ;EMPTY SPRITE JNE DRAWM3 MOV SI,OFFSET SEMPTY JMP DRAWM2 DRAWM3: CMP AL,1 ;SBWALL JNE DRAWM4 MOV SI,OFFSET SBWALL JMP DRAWM2 DRAWM4: CMP AL,7 ;SWALL JNE DRAWM5 MOV SI,OFFSET SWALL JMP DRAWM2 DRAWM5: CMP AL,9 ;SEXIT JNE DRAWM6 MOV SI,OFFSET SEXIT JMP DRAWM2 DRAWM6: CMP AL,8 ;SSTART JNE DRAWM7 MOV SI,OFFSET SSTART JMP DRAWM2 DRAWM7: CMP AL,3 ;PLAYER 1 JNE DRAWM8 XOR SI,SI JMP DRAWM2 DRAWM8: CMP AL,4 ;PLAYER 2 JNE DRAWM9 XOR SI,SI JMP DRAWM2 DRAWM9: DRAWM2: CALL DRAWS ;kresli SPRITE INC DH ;posun X POP SI INC SI LOOP DRAWM1 XOR DH,DH ;vynuluj X INC DL ;posun Y POP CX LOOP DRAWM0 POP SI POP DX POP CX POP AX RET CLRBOMB:PUSHA ;dej [X,Y]->DH,DL MOV CX,1000h CALL DLY XOR CH,CH ;range do AL MOV DI,[CURMAP] ;MAP ofs MOV SI,OFFSET SEMPTY INC AL CALL DRAWS ;stred PUSH DX ;pravy segment MOV CL,AL CLRBOMB1: INC DH CALL _DETBOMB_CHK CMP BL,0 JNE CLRBOMB2 CALL DRAWS LOOP CLRBOMB1 CLRBOMB2: POP DX ;levy segment PUSH DX MOV CL,AL CLRBOMB3: DEC DH CALL _DETBOMB_CHK CMP BL,0 JNE CLRBOMB4 CALL DRAWS LOOP CLRBOMB3 CLRBOMB4: POP DX ;dolni segment PUSH DX MOV CL,AL CLRBOMB5: INC DL CALL _DETBOMB_CHK CMP BL,0 JNE CLRBOMB6 CALL DRAWS LOOP CLRBOMB5 CLRBOMB6: POP DX ;horni segment MOV CL,AL CLRBOMB7: DEC DL CALL _DETBOMB_CHK CMP BL,0 JNE CLRBOMB8 CALL DRAWS LOOP CLRBOMB7 CLRBOMB8: POPA RET DETBOMB:PUSHA ;dej [X,Y]->DH,DL ;range do AL MOV DI,[CURMAP] ;MAP ofs v DI XOR CX,CX PUSH DI CALL _COMPOFS MOV [DI],CL ;update MAP POP DI ;stred MOV SI,OFFSET SBOMB2 CALL DRAWS ;stred exploze ;pravy segment PUSH DX CMP AL,0 JE DETBOMB3 MOV CL,AL DETBOMB2: INC DH CALL _DETBOMB_CHK CMP BL,0 JNE DETBOMB1 MOV SI,OFFSET SBOMB21 CALL DRAWS LOOP DETBOMB2 DETBOMB3: INC DH CALL _DETBOMB_CHK CMP BL,0 JNE DETBOMB1 MOV SI,OFFSET SBOMB2R CALL DRAWS DETBOMB1: POP DX ;levy segment PUSH DX CMP AL,0 JE DETBOMB4 MOV CL,AL DETBOMB5: DEC DH CALL _DETBOMB_CHK CMP BL,0 JNE DETBOMB6 MOV SI,OFFSET SBOMB21 CALL DRAWS LOOP DETBOMB5 DETBOMB4: DEC DH CALL _DETBOMB_CHK CMP BL,0 JNE DETBOMB6 MOV SI,OFFSET SBOMB2L CALL DRAWS DETBOMB6: POP DX ;dolni segment PUSH DX CMP AL,0 JE DETBOMB7 MOV CL,AL DETBOMB8: INC DL CALL _DETBOMB_CHK CMP BL,0 JNE DETBOMB9 MOV SI,OFFSET SBOMB22 CALL DRAWS LOOP DETBOMB8 DETBOMB7: INC DL CALL _DETBOMB_CHK CMP BL,0 JNE DETBOMB9 MOV SI,OFFSET SBOMB2D CALL DRAWS DETBOMB9: POP DX ;horni segment CMP AL,0 JE DETBOMB10 MOV CL,AL DETBOMB11: DEC DL CALL _DETBOMB_CHK CMP BL,0 JNE DETBOMB12 MOV SI,OFFSET SBOMB22 CALL DRAWS LOOP DETBOMB11 DETBOMB10: DEC DL CALL _DETBOMB_CHK CMP BL,0 JNE DETBOMB12 MOV SI,OFFSET SBOMB2U CALL DRAWS DETBOMB12: POPA RET _DETBOMB_CHK: ;check MAP if PUSH AX ;breakable SPR PUSH DI ;if YES BL=0 CALL _COMPOFS MOV BL,0FFh MOV AL,[DI] ;cti SID(X,Y) CMP AL,3 ;SID P1 JNE _DETBOMB_CHK2 PUSH AX MOV AH,58h ;dead P1 MOV [P1SID],AH MOV AH,[P1DIE] INC AH MOV [P1DIE],AH ;inc score POP AX _DETBOMB_CHK2: CMP AL,4 ;SID P2 JNE _DETBOMB_CHK3 PUSH AX MOV AH,68h ;dead P2 MOV [P2SID],AH MOV AH,[P2DIE] INC AH MOV [P2DIE],AH ;inc score POP AX _DETBOMB_CHK3: CMP AL,5 ;SID B1 JNE _DETBOMB_CHK4 MOV [CHAINBOMB],AL _DETBOMB_CHK4: CMP AL,6 ;SID B2 JNE _DETBOMB_CHK5 MOV [CHAINBOMB],AL _DETBOMB_CHK5: CMP AL,5 ;je-li >=5 JGE _DETBOMB_CHK1 XOR BL,BL MOV [DI],BL ;snuluj sprite _DETBOMB_CHK1: POP DI POP AX RET _COMPOFS: PUSH AX ;spocti offset MOV AH,30 ;dle DX do DI MOV AL,DL ;OFS=Y*30+X MUL AH ;AX=AL*AH ADD AL,DH ADD DI,AX POP AX RET MOVEP: PUSHA ;posun PLAYERA ADD AH,2 ;do AH dej c. MOV CX,[CURMAP] ;playera MOV DI,CX ;(1/2) do AL CMP AH,3 ;smer posunu JNE MOVEP1 ;0D,1U,2R,3L MOV BL,50h ;P1 SID BASE MOV SI,OFFSET P1 MOV DX,[SI] ;loadpos P1 MOVEP1: CMP AH,4 JNE MOVEP2 MOV BL,60h ;P2 SID BASE MOV SI,OFFSET P2 MOV DX,[SI] ;loadpos P2 MOVEP2: ADD BL,AL CMP AL,0 ;down JNE MOVEP3 INC DL ;step down CALL _COMPOFS MOV BH,[DI] ;read MAP CMP BH,0 JNE MOVEP_END CALL _MOVEP_UPDP DEC DL ;step back CALL _MOVEP_DELP JMP MOVEP_END MOVEP3: CMP AL,1 ;up JNE MOVEP4 DEC DL ;step up CALL _COMPOFS MOV BH,[DI] ;read MAP CMP BH,0 JNE MOVEP_END CALL _MOVEP_UPDP INC DL ;step back CALL _MOVEP_DELP JMP MOVEP_END MOVEP4: CMP AL,2 ;right JNE MOVEP5 INC DH ;step right CALL _COMPOFS MOV BH,[DI] ;read MAP CMP BH,0 JNE MOVEP_END CALL _MOVEP_UPDP DEC DH ;step back CALL _MOVEP_DELP JMP MOVEP_END MOVEP5: CMP AL,3 ;left JNE MOVEP_END DEC DH ;step left CALL _COMPOFS MOV BH,[DI] ;read MAP CMP BH,0 JNE MOVEP_END CALL _MOVEP_UPDP INC DH ;step back CALL _MOVEP_DELP MOVEP_END: POPA RET _MOVEP_DELP: CALL _COMPOFS MOV AH,[DI] ;read MAP CMP AH,5 ;bomba P1 nenuluj JE _MOVEP_DELP1 CMP AH,6 ;bomba P2 nenuluj JE _MOVEP_DELP1 XOR AH,AH ;jinak vynuluj MOV [DI],AH ;del old MAPPOS _MOVEP_DELP1: MOV SI,OFFSET SEMPTY CALL DRAWS RET _MOVEP_UPDP: MOV [SI],DX ;update POS MOV [SI+2],BL ;update SID MOV [DI],AH ;update MAP MOV DI,CX RET INITP: PUSH AX ;set PLAYER pos PUSH SI PUSH DI MOV SI,[CURMAP] MOV AX,[SI+240] MOV [P1],AX MOV DX,AX MOV DI,SI CALL _COMPOFS MOV AL,3 MOV [DI],AL ;SID P1 MOV AX,[SI+242] MOV [P2],AX MOV DX,AX MOV DI,SI CALL _COMPOFS MOV AL,4 MOV [DI],AL ;SID P2 POP DI POP SI POP AX RET DRAWP: PUSH AX ;kresli PLAYERS PUSH DX PUSH SI MOV DX,[P1] MOV AL,[P1SID] CMP AL,50h JNE DRAWP1 MOV SI,OFFSET SP1D JMP DRAWP_END1 DRAWP1: CMP AL,51h JNE DRAWP2 MOV SI,OFFSET SP1U JMP DRAWP_END1 DRAWP2: CMP AL,52h JNE DRAWP3 MOV SI,OFFSET SP1R JMP DRAWP_END1 DRAWP3: CMP AL,53h JNE DRAWP4 MOV SI,OFFSET SP1L JMP DRAWP_END1 DRAWP4: CMP AL,54h JNE DRAWP5 MOV SI,OFFSET SP1DB JMP DRAWP_END1 DRAWP5: CMP AL,55h JNE DRAWP6 MOV SI,OFFSET SP1UB JMP DRAWP_END1 DRAWP6: CMP AL,56h JNE DRAWP7 MOV SI,OFFSET SP1RB JMP DRAWP_END1 DRAWP7: CMP AL,57h JNE DRAWP8 MOV SI,OFFSET SP1LB JMP DRAWP_END1 DRAWP8: CMP AL,58h JNE DRAWP_END1 MOV SI,OFFSET SP1K DRAWP_END1: CALL DRAWS MOV DX,[P2] MOV AL,[P2SID] CMP AL,60h JNE DRAWP9 MOV SI,OFFSET SP2D JMP DRAWP_END2 DRAWP9: CMP AL,61h JNE DRAWP10 MOV SI,OFFSET SP2U JMP DRAWP_END2 DRAWP10:CMP AL,62h JNE DRAWP11 MOV SI,OFFSET SP2R JMP DRAWP_END2 DRAWP11:CMP AL,63h JNE DRAWP12 MOV SI,OFFSET SP2L JMP DRAWP_END2 DRAWP12:CMP AL,64h JNE DRAWP13 MOV SI,OFFSET SP2DB JMP DRAWP_END2 DRAWP13:CMP AL,65h JNE DRAWP14 MOV SI,OFFSET SP2UB JMP DRAWP_END2 DRAWP14:CMP AL,66h JNE DRAWP15 MOV SI,OFFSET SP2RB JMP DRAWP_END2 DRAWP15:CMP AL,67h JNE DRAWP16 MOV SI,OFFSET SP2LB JMP DRAWP_END2 DRAWP16:CMP AL,68h JNE DRAWP_END2 MOV SI,OFFSET SP2K DRAWP_END2: CALL DRAWS POP SI POP DX POP AX RET ;------ SPRITES 8x8 ----------------- ;SID 0 SEMPTY: DB 0,0,0,0,0,0,0,0 ;SID 1 SBWALL: DB 55h,0,0AAh,0 DB 55h,0,0AAh,0 ;SID 5 nevybuchla bomba P1 ;SID 6 nevybuchla bomba P2 ;SID 7 SWALL: DB 0FFh,11h,0FFh,44h DB 0FFh,11h,0FFh,44h ;SID 9 SEXIT: DB 7Eh,81h,0A5h,99h DB 99h,0A5h,81h,7Eh ;SID 8 SSTART: DB 7Eh,0C3h,81h,81h DB 81h,81h,0C3h,7Eh ;nevybuchla bomba SBOMB1: DB 0Dh,12h,38h,7Ch DB 0FEh,0FEh,7Ch,38h ;centrum vybuchu SBOMB2: DB 0D3h,7Ch,0FFh,0FAh DB 0FFh,7Ah,0DDh,52h ;vodorovny segment vybuchu SBOMB21:DB 81h,52h,0EFh,66h DB 0FBh,2Ah,0EFh,91h ;svisly segment vybuchu SBOMB22:DB 0D7h,5Ah,72h,94h DB 72h,66h,5Ah,0D3h ;pravy konec vybuchu SBOMB2R:DB 0,40h,0F4h,48h DB 0EFh,08h,0F4,40h ;levy konec vybuchu SBOMB2L:DB 0,2,2Fh,12h DB 0F7h,10h,2Fh,04h ;dolni konec vybuchu SBOMB2D:DB 62h,6Ah,0F6h,4Ah DB 34h,58h,10h,10h ;horni konec vybuchu SBOMB2U:DB 10h,10h,5Ah,34h DB 4Ah,0F6h,6Ah,62h ;SID 50h player 1 dolu SP1D: DB 10h,38h,28h,10h DB 0FEh,38h,28h,6Ch ;SID 51h player 1 nahoru SP1U: DB 10h,38h,38h,10h DB 0FEh,38h,28h,6Ch ;SID 52h player 1 doprava SP1R: DB 10h,38h,2Ch,10h DB 3Ch,50h,18h,24h ;SID 53h player 1 doleva SP1L: DB 10h,38h,68h,10h DB 78h,14h,30h,48h ;SID 54h player 1 dolu with bomb SP1DB: DB 1Dh,3Ah,6Ch,0FEh DB 0FEh,7Ch,28h,6Ch ;SID 55h player 1 nahoru with bomb SP1UB: DB 1Dh,3Ah,7Ch,0FEh DB 0FEh,7Ch,28h,6Ch ;SID 56h player 1 doprava with bomb SP1RB: DB 1Dh,3Eh,76h,0FEh DB 0FEh,7Ch,18h,24h ;SID 57h player 1 doleva with bomb SP1LB DB 1Dh,3Ah,6Ch,0FEh DB 0FEh,7Ch,30h,48h ;SID 58h player 1 killed SP1K: DB 10h,38h,10h,10h DB 38h,38h,38h,7Ch ;SID 60h player 2 dolu SP2D: DB 38h,54h,28h,10h DB 0FEh,38h,28h,6Ch ;SID 61h player 2 nahoru SP2U: DB 38h,7Ch,38h,10h DB 0FEh,38h,28h,6Ch ;SID 62H player 2 doprava SP2R: DB 38h,68h,3Ch,10h DB 3Ch,50h,18h,24h ;SID 63h player 2 doleva SP2L: DB 38h,2Ch,78h,10h DB 78h,14h,30h,48h ;SID 64h player 2 dolu with bomb SP2DB: DB 3Dh,56h,6Ch,0FEh DB 0FEh,7Ch,28h,6Ch ;SID 65h player 2 nahoru with bomb SP2UB: DB 3Dh,7Eh,7Ch,0FEh DB 0FEh,7Ch,28h,6Ch ;SID 66h player 2 doprava with bomb SP2RB: DB 1Dh,36h,7Eh,0FEh DB 0FEh,7Ch,18h,24h ;SID 67h player 2 doleva with bomb SP2LB: DB 3Dh,2Eh,7Ch,0FEh DB 0FEh,7Ch,30h,48h ;SID 68h player 2 killed SP2K: DB 10h,10h,7Ch,10h DB 10h,38h,7Ch,7Ch ;------ RAW MAPS (30x8) SID --------- MAP1: DB 7,7,7,7,7,7,7,7,7,7 DB 7,7,7,7,7,7,7,7,7,7 DB 7,7,7,7,7,7,7,7,7,7 DB 8,0,0,1,7,1,1,1,1,1 DB 1,1,1,7,1,1,1,1,1,1 DB 1,1,1,1,1,7,1,1,1,7 DB 7,0,0,1,7,1,1,7,7,7 DB 7,7,1,7,0,0,7,7,7,7 DB 1,1,1,7,7,7,1,1,1,7 DB 7,0,0,1,1,0,0,0,0,1 DB 1,1,1,7,0,0,7,1,1,1 DB 1,1,1,0,0,1,1,1,1,7 DB 7,1,1,1,7,1,1,7,7,7 DB 7,1,1,7,0,0,7,1,1,1 DB 1,7,7,7,1,7,1,0,0,7 DB 7,1,1,1,7,1,1,1,1,1 DB 7,1,1,7,0,0,7,7,7,7 DB 0,0,7,0,0,7,1,0,0,7 DB 7,1,1,1,7,0,0,0,0,0 DB 7,1,1,1,1,1,1,1,1,1 DB 1,1,7,0,0,7,1,0,0,8 DB 7,7,7,7,7,7,7,7,7,7 DB 7,7,7,7,7,9,7,7,7,7 DB 7,7,7,7,7,7,7,7,7,7 MAP1P1: DW 0101h ;player 1 entry MAP1P2: DW 1C06h ;player 2 entry END