#include "USGARD.H" #include "SPRITLIB.H" .org 0 .db "Adventure Game W.S.", 0 ;<-----Name that appears on shell menu .db SPRITLIB,0 ; ___________________________________________________ ; / \ ;| Set Variables and discribe what they are used for | ; \___________________________________________________/ temp1 = TEXT_MEM ;\_________ Additional temp. space for storage. temp2 = TEXT_MEM+2 ;/ LOTS OF SPACE HERE temp3 = TEXT_MEM+3 temp4 = TEXT_MEM+7 temp5 = TEXT_MEM+8 XRow = TEXT_MEM+9 ; \__________________________ Used to place YCol = TEXT_MEM+10 ; / you on the map XRow2 = TEXT_MEM+11 ; \__________________________ Used to place YCol2 = TEXT_MEM+12 ; / you on the map man_x_1 = TEXT_MEM+13 ;\__location of guy in map man_y_1 = TEXT_MEM+14 ;/ man_x_2 = TEXT_MEM+15 ;\__finite position of man in two specific blocks man_y_2 = TEXT_MEM+16 ;/ ; (secondary coordinates) ; __________________________________________ ; / \ ;| SET FIRST VALUES OF VARIABLES AS NEEDED | ; \__________________________________________/ ; ___________________________________________________________________ ; / \ ;| FIRST EXECUTION OF CODE........BEGIN GAME...THEN QUIT TO ZSHELL | ; \___________________________________________________________________/ ld a, 4 out (5), a ld hl, $8C40 set 0, (hl) call &Draw_Beg ld hl, GRAPH_MEM ld de, VIDEO_MEM ld bc, 1023 ldir ;############################################################ ;Okay, now the first screen has been drawn, begin the game loop ;############################################################ call OTH_PAUSE ret ;############################################################## ;# # ;# Routine used to draw the level at the beginning :) # ;# # ;############################################################## Draw_Beg: ld hl, GRAPH_MEM call &clr_hl ; <- Nice routine I made that clears memory at hl ld hl, GRAPH_MEM LIB_CALL_(SPRITLIB,SET_DEST) ld a, 1 ld (XRow), a ld a, 1 ld (YCol), a ld a, 14 ld (YCol2), a ld a, 0 ld (XRow2), a D_R2: call &get_m_info cp 0 jr z, blank call &ld_spr ; ld a, 5 ; ld (temp4), a ; call &trimmer ; call &get_m_info ; call &ld_spr call &Dra blank: ld a, (YCol) inc a cp 8 jr z, next_x ld (YCol), a ld a, (YCol2) add a, 8 ld (YCol2), a jr D_R2 next_x ld a, 1 ld (YCol), a ld a, 14 ld (YCol2), a ld a, (XRow) inc a cp 17 ret z ld (XRow), a ld a, (XRow2) add a, 8 ld (XRow2), a jr D_R2 Dra: ld de, (PROGRAM_ADDR) add hl, de ld a, (XRow2) ld b, a ld a, (YCol2) ld c, a LIB_CALL_(SPRITLIB,NASR WARP) ret trimmer: inc hl ld (temp3), hl ld hl, temp4 ld de, (temp3) ld bc, 1 ldir ret ld_spr: ld hl, s01 cp 1 ret z ld hl, s02 cp 2 ret z ld hl, s03 cp 3 ret z ld hl, s04 cp 4 ret z ld hl, s05 cp 5 ret z ld hl, s06 cp 6 ret z ld hl, s07 cp 7 ret z ld hl, s08 ret clr_hl: ld (hl), 0 ld d, h ld e, l ld bc, 1023 inc de ldir ret get_m_info: ld a, (XRow) cp 1 jr nz, skp ld a, (YCol) cp 1 jr nz, skp ld a, 1 ret skp: ld hl, &level_1 ld a, (XRow) dec a and a jr z, FirstLine ld b, a ld de, 7 ; <--- 7 is the width of the matrix Looper: add hl, de djnz Looper FirstLine: ld a, (YCol) dec a ld e, a add hl, de ld a, (hl) ret ;####################################################### ;## ## ;## Sprite Catalog!!! =) Choose One and use it toady! ## ;## ## ;####################################################### s01: .db 1,1,8 .db %00000000 .db %00011000 .db %01111000 .db %00011000 .db %00011000 .db %00011000 .db %01111110 .db %00000000 s02: .db 1,1,8 .db %00000000 .db %00111100 .db %01000010 .db %00011100 .db %00110000 .db %01100000 .db %01111110 .db %00000000 s03: .db 1,1,8 .db %00000000 .db %01111100 .db %00000010 .db %00011100 .db %00000010 .db %00000010 .db %01111100 .db %00000000 s04: .db 1,1,8 .db %00000000 .db %01000010 .db %01000010 .db %01111110 .db %00000010 .db %00000010 .db %00000010 .db %00000000 s05: .db 1,1,8 .db %00000000 .db %01111110 .db %01000000 .db %01111100 .db %00000010 .db %01111100 .db %00000000 .db %00000000 s06: .db 1,1,8 .db %00000000 .db %00111100 .db %01000000 .db %01000000 .db %01111100 .db %01000010 .db %00111100 .db %00000000 s07: .db 1,1,8 .db %00000000 .db %01111110 .db %00000100 .db %00001000 .db %00010000 .db %00100000 .db %01000000 .db %00000000 s08: .db 1,1,8 .db %00000000 .db %00111100 .db %01000010 .db %00111100 .db %01000010 .db %01000010 .db %00111100 .db %00000000 level_1: .db 1,2,3,4,5,6,7 .db 1,2,3,4,5,6,7 .db 1,2,3,4,5,6,7 .db 1,2,3,8,5,6,7 .db 1,2,3,8,5,6,7 .db 1,0,3,8,5,6,7 .db 1,0,3,4,5,6,7 .db 1,0,3,4,5,6,7 .db 1,2,3,4,5,6,7 .db 1,2,3,4,5,6,7 .db 1,2,3,4,5,6,7 .db 1,2,3,4,5,6,7 .db 1,2,3,4,5,6,7 .db 1,2,3,4,5,6,7 .db 1,2,3,4,5,6,7 .db 1,2,3,4,5,6,7 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .db 0,0,0,0,0,0,0 .end