From: Mischa Poslawsky Date: Mon, 23 Aug 1999 10:21:32 +0000 (+0200) Subject: version 0.6: logo, bottom stats bar, 5 random levels X-Git-Url: http://git.shiar.net/nemesis.git/commitdiff_plain/6182b2a8db0e125b903be3ca44c3a8227fdf4f9f version 0.6: logo, bottom stats bar, 5 random levels * play field increased to full screen instead of 3/4 + bottom eight lines used for score (etc) display - no more solid levels, enemies are placed at random + enemies appear every x turns (depends on level) # fixed bullets so they don't disappear at 3/4 of the screen * A LOT of optimizations both in speed and size!! + enemy type, frequency, and number specified per level + bottom score bar displays score, lives and icons (to be used later) * smarter enemy handling (so enemies have different sizes) + bottom bar divided from playing field by a horizontal line + five levels (and five enemies) made # game vars reset at start and game over + NEMESIS LOGO displayed at startup!! (also, program grew 350bytes ): + version/credit-string displayed below logo: v0.6.820 by shiar (ICQ#) --- diff --git a/nemesis.z80 b/nemesis.z80 index cb0f3eb..35f36c9 100644 --- a/nemesis.z80 +++ b/nemesis.z80 @@ -1,6 +1,5 @@ .include "asm86.h" .include "ti86asm.inc" - .include "ti86abs.inc" .org _asm_exec_ram @@ -9,9 +8,8 @@ .dw $0001 .dw Title .dw spr_ship -Title: .db "Nemesis v0.5.725 by Shiar",0 -Start: - jr init +Title: .db "Nemesis v0.6.820 by Shiar",0 +Start: jr init just_fired = $c0f9 ;byte temp1 = $c100 ;word @@ -23,10 +21,33 @@ init: ;---------------------- main menu --------------------------------------------- -;---------------------- game setup -------------------------------------------- +LogoPut: + ld hl,logo_nemesis ;from... + ld de,$FC00+16 ;...to one line from top + ld a,19 ;19 rows +LogoLoop: + ld bc,16 ;set screen width + ldir ;display one line + dec a ;decrease line-counter + jr nz,LogoLoop ;repeat when counter is not yet zero + +menutext: + ld hl,$1608 ;just below logo + ld (_penCol),hl + ld hl,txt_about ;display "by Shiar (ICQ#43840958)" + call _vputs + + ld hl,$0705 ;located one row above bottom + ld (_curRow),hl ;go there + ld hl,txt_1player ;display "ONE PLAYER" + call _puts + ld hl,$0706 ;below oneplayer text + ld (_curRow),hl + ld hl,txt_2players ;display "TWO PLAYERS" + call _puts -play_game: - call Next_level + call _getkey ;wait for keypress + call New_level ;prepare level ;------------------------------------------------------------------------------ ;---------------------- game loop --------------------------------------------- @@ -37,23 +58,24 @@ game_main_loop: inc (hl) Clear_screen: - xor a - ld hl,GRAPH_MEM+(16*12) - ld b,a + xor a ;empty bitmask + ld hl,GRAPH_MEM ;screen location (top left) + ld b,$E0 ;loop 0E0h = 224 times = 256-32 for score-bar) clearloop: + ld (hl),a ;clear four times (total = 224*4 = 896 bytes) + inc hl ld (hl),a inc hl ld (hl),a inc hl ld (hl),a inc hl - djnz clearloop + djnz clearloop ;repeat 224x check_exitkey: ld a,%00111111 ; pressed? out (1),a - nop - nop + nop \ nop in a,(1) bit 6,a jr z,quit ;yes: quit game @@ -68,7 +90,7 @@ game_stuff: call Enemies_hit ;check for collision with enemies call Display_Screen ;display all - halt \ halt \ halt ;delay + halt \ halt ;delay jr game_main_loop ;loop quit: ret @@ -76,21 +98,17 @@ quit: ret ;---------------------- display ----------------------------------------------- Display_Screen: - ld a,64 ;Display Image - ld hl,GRAPH_MEM+(16*12) - ld de,$fc00 + ld hl,GRAPH_MEM ;from storage (top left) + ld de,$fc00 ;to screen (top left) + ld a,56 ;display height = 64 bytes (minus 8 for bar) displayloop: - ld bc,12 - ldir - inc de - inc de - inc de - inc de - dec a - jr nz,displayloop + ld bc,16 ;display width = 16 bytes (16*8bits=256pixels) + ldir ;16x de >> hl + dec a ;next line + jr nz,displayloop ;loop 64x - ld hl,$1006 ;Display Score - ld (_curRow),hl + ld hl,$3a6b ;Display Score + ld (_penCol),hl ld hl,(timer) ld h,0 jp _D_HL_DECI @@ -108,22 +126,23 @@ Handle_Ship: cp 34 ;last explosion frame? jr c,exploding_you ;not yet: display explosion - cp 54 ;delay finished? + cp 40 ;delay finished? jp z,game_over ;yes = game over ret ;don't display anything ok: ld a,%01111110 out (1),a - ld hl,y + nop \ nop in a,(1) + ld hl,y rra ld b,a jr c,no_down ld a,(hl) inc a - cp 73 ;y < 73 + cp 50 ;56-6 = bottom of screen jr z,no_down ld (hl),a no_down: @@ -131,15 +150,15 @@ no_down: rr b jr c,no_left ld a,(hl) - dec a - jr z,no_left ;x > 0 + sub 1 ; doesn't affect c-flag + jr c,no_left ;-1 = left side ld (hl),a no_left: rr b jr c,no_right ld a,(hl) inc a - cp 89 ;x < 89 + cp 122 ;128-6 = right side jr z,no_right ld (hl),a no_right: @@ -148,9 +167,8 @@ no_right: rr b jr c,no_up ld a,(hl) - dec a - cp 15 ;y > 15 - jr z,no_up + sub 1 ; doesn't affect carry-flag + jr c,no_up ;-1 = top of screen ld (hl),a no_up: ld ix,spr_ship01 @@ -253,10 +271,10 @@ scan_bullets: bullet_type1: ld a,(hl) ;d = X inc a ;move right - cp $5a ;off screen? + cp 121 ;off screen? (x=127-5-1) jr z,remove_bullet inc a ;move right - cp $5a ;off screen? + cp 121 ;off screen? jr z,remove_bullet ld (hl),a ;save new pos. ld d,a @@ -304,12 +322,13 @@ hit_enemies: ;Hits with normal enemies dec hl ld a,(hl) ;occ ld b,a ;push occ - srl a - srl a ;occ/4 = HP left - jr nz,hpleft - ld (hl),$01 ;set to explode + and %11111100 ;occ/4 = HP left ; jump + ld (hl),%01 ;set to explode inc hl + ld b,(hl) ;save enemy type ld (hl),a ;explosionFrame 0 + pop hl ret @@ -331,14 +350,27 @@ nohit: pop hl ;--------------------------- level events ------------------------------------- Level_event: - ld a,(nextevent) - dec a - ld (nextevent),a - or a - ret nz + ld hl,nextevent ;time to next event > hl + dec a ;next line + jr nz,displayloop3 ;loop 8x + + ld hl,$3a00 ;display Lives + ld (_penCol),hl ;bottom left + ld hl,savestr+2 + ld (hl),'L' + inc hl + ld (hl),'x' + inc hl -;---------------------- setup game -------------------------------------------- + ld a,(lives) ;nr of lives in a + add a,'0' ;make digit + ld (hl),a + dec hl \ dec hl + call _vputs ;display on screen -game_setup: - call _clrLCD - ld hl,$1005 - ld (_curRow),hl - ld hl,txt_score ;display "SCORE" - call _puts ;display texts + ld hl,$fc00+(16*57) ;56 rows down = eight rows from bottom + ld b,15 ;draw 16x (screen width) +drawline: + ld a,%11111111 ;horizontal line mask + ld (hl),a ;draw one piece of the divider-line + inc hl ;move right (8 pixels = 1 byte) + djnz drawline ;repeat (16bytes * 8pixels =128= screen width) - xor a - ld (timer),a ;reset time - ld (level),a ;level 1 - ld hl,Leveldata+1 - ld (curevent),hl ;reset level - ld hl,(Leveldata) - ld (nextevent),hl ;ret -;---------------------- exit -------------------------------------------------- +;--------------------------- exit --------------------------------------------- exit_game: ret ;--------------------------- putsprite ---------------------------------------- +;--------------------------- de =(X,Y) ---------------------------------------- offsets_table: - .db 128,64,32,16,8,4,2,1 + .db 128,64,32,16,%1000,%0100,%0010,%0001 drw_spr: - ld a,d - and 7 - ld hl,offsets_table - ld c,a - ld b,0 - add hl,bc - ld a,(hl) + ld a,d ;a = X + and %00000111 ;a = X mod 8 = bit nr. to mask + ld hl,offsets_table ;pixel mask table + ld c,a ;bit nr. + ld b,0 ;word + add hl,bc ;add to table + ld a,(hl) ;a = pixel mask + ld (_smc1+1),a ;alter pixel mask ld (_smc1+1),a - ld (_smc1+1),a - ld hl,GRAPH_MEM - ld a,e - add a,a - add a,e - add a,a + ld hl,GRAPH_MEM ;save-location + ld a,e ;y-coord + add a,a ;y*2 + add a,a ;y*4 + add a,a ;y*8 + ;b=0 rl b - add a,a + add a,a ;y*16 (width of screen) rl b - srl d - srl d - srl d - add a,d - jr nc,_n1 - inc b -_n1: ld c,a - add hl,bc + srl d ;d/2 + srl d ;d/4 + srl d ;d/8 (8 bits in byte) ** c is set when overflow + add a,d ;a = (Y*16+X/8) mod 256 + jr nc,_n1 ;jump if no carry = no overflow = a<=255 + inc b ;a>255 so increase bc by 256 +_n1: ld c,a ;c = (Y*16+X/8) mod 256 + add hl,bc ;bc = Y*16+X/8 + ;optimize tip: reverse hl <-> bc (??) ld d,(ix) ld b,(ix+1) @@ -773,12 +862,13 @@ _iloop: sla c ;Test leftmost pixel or (hl) ld (hl),a ld a,e -_noplot: rrca +_noplot:rrca jr nc,_notedge ;Test if edge of byte reached inc hl ;Go to next byte -_notedge:djnz _iloop +_notedge: + djnz _iloop pop hl ;Restore address - ld bc,12 ;Go to next line + ld bc,16 ;Go to next line add hl,bc pop bc ;Restore data djnz _oloop @@ -787,53 +877,47 @@ _notedge:djnz _iloop ;---------------------- random ------------------------------------------------ Random: ; Creates a random number 0 <= x < A - push bc - push de - push hl - ld b,a - ld a,r - add a,a - ld hl,0 - ld d,0 - ld e,a + push bc + push de + push hl + ld b,a + ld a,r + add a,a + ld hl,0 + ld d,0 + ld e,a RMul: - add hl,de - djnz RMul - ld a,h - pop hl - pop de - pop bc - ret + add hl,de + djnz RMul + ld a,h + pop hl + pop de + pop bc + ret -;------------------------ +;---------------------- display 5digit number --------------------------------- _D_HL_DECI: - push bc - ld de,up_data+4 - ld b,5 -ldhld: call UNPACK_HL - add a,'0' - ld (de),a - dec de - djnz ldhld - ld hl,up_data - ld b,4 -lis: ld a,(hl) - cp '0' - jr nz,dis - ld (hl),' ' - inc hl - djnz lis -dis: ld hl,up_data - call _puts - pop bc - ret - -up_data: .db "PAD98",0 + push bc ;save bc + ld de,savestr+4 ;savenr saves number string + ld b,5 ;five digits +ldhld: call UNPACK_HL ;one digit of hl + add a,'0' ;make number + ld (de),a ;save into savenr + dec de ;point to next digit + djnz ldhld ;repeat for all digits +dis: ld hl,savestr + call _vputs + pop bc + ret +savestr: + .db "PAD98",0 +;------------------------------------------------------------------------------ ;------------------------------- sprites -------------------------------------- +;------------------------------------------------------------------------------ spr_ship: .db 9,1 ;ship icon @@ -841,7 +925,7 @@ spr_ship: .db %11111000 ; █████ .db %00111110 ; █████ .db %11111001 ; █████ █ - .db %11111101 ; ██████ █ + .db %11111001 ; █████ █ .db %11111001 ; █████ █ .db %00111110 ; █████ .db %11111000 ; █████ @@ -849,13 +933,13 @@ spr_ship: spr_ship01: .db 7,7 ;ship alpha class - .db %01110000 ; ███ + .db %01111000 ; ████ .db %11100000 ; ███ .db %11111100 ; ██████ .db %11110010 ; ████ █ .db %11111100 ; ██████ .db %11100000 ; ███ - .db %01110000 ; ███ + .db %01111000 ; ████ spr_ship02: .db 7,7 ;ship beta class .db %11000000 ; ██ @@ -868,20 +952,22 @@ spr_ship02: spr_bullet01: .db 5,3 ;your bullets - .db %00110000 ; ░▒▓██ - .db %11111000 ; ░▒▓█████ - .db %00110000 ; ░▒▓██ + .db %00110000 ; ░▒▓█▒ + .db %11111000 ; ░▒▓████▒ + .db %00110000 ; ░▒▓█▒ spr_bullet02: .db 5,3 ;your bullets - .db %11110000 ; ░▒▓████ - .db %11111000 ; ░▒▓█████ - .db %11110000 ; ░▒▓████ + .db %11110000 ; ░▒▓███▒ + .db %11111000 ; ░▒▓████▒ + .db %11110000 ; ░▒▓███▒ spr_bullet11: .db 3,3 ;enemy bullets - .db %01000000 ; █▓▒░ - .db %11100000 ; ███▓▒░ - .db %01000000 ; █▓▒░ + .db %01000000 ; ▒▓▒░ + .db %11100000 ; ▒██▓▒░ + .db %01000000 ; ▒▓▒░ + +;---------------------------------------- explosion ------------------------------------------- spr_explosion: .db 8,6 ;1 @@ -948,39 +1034,63 @@ spr_explosion: .db %00000010 ; █▒ .db %00100100 ; █▒ █ +;--------------------------------------- bar ----------------------------------- + +spr_icon00: + .db 8,7 + .db %10101010 ; █ █ █ █ + .db %11010101 ; ██ █ █ █ + .db %10101010 ; █ █ █ █ + .db %11010101 ; ██ █ █ █ + .db %10101010 ; █ █ █ █ + .db %11010101 ; ██ █ █ █ + .db %10101010 ; █ █ █ █ spr_icon01: - .db 5,4 - .db %00100000 ; █ - .db %10101000 ; █ █ █ - .db %11111000 ; █████ - .db %01110000 ; ███ + .db 8,7 + .db %10000000 ; █....... + .db %10000000 ; █ + .db %10000000 ; █ + .db %10000000 ; █ + .db %10000000 ; █ + .db %10000000 ; █ + .db %10000000 ; █ spr_icon02: - .db 5,4 - .db %00000000 ; ███ - .db %00000000 ; ██ ██ - .db %00000000 ; █ █ - .db %00000000 ; + .db 8,7 + .db %10000000 ; █ + .db %10000000 ; █ + .db %10000000 ; █ + .db %10000000 ; █ + .db %10000000 ; █ + .db %10000000 ; █ + .db %10000000 ; █ ;---------------------------- texts ------------------------------------------- -txt_title: .db "* * NEMESIS * *",0 +txt_about: .db "v0.6.820 ","by Shiar " + .db "(ICQ#43840958)",0 +txt_1player: .db "1 PLAYER",0 +txt_2players: .db "2 PLAYERS",0 txt_level: .db "LEVEL ",0 txt_gameover: .db "GAME OVER!",0 -txt_score: .db "SCORE",0 +txt_lives: .db "Lx0?",0 ;---------------------------- save data --------------------------------------- stored_data_start: -level .db $00 ;level number timer .db $00 ;frame counter -curevent .dw Leveldata+1 ;next event -nextevent .db (Leveldata) ;time to next event +level .db $00 ;level number +levelp .dw level01 ;pointer to level data + +eventenemy .db $02 ;enemy type +eventtime .db $15 ;enemy frequency +eventleft .db $00 ;nr. of enemies still to come +nextevent .db $50 ;time to next event score .dw $0000 your_occ .db $00 ;0=normal 1..16=exploding -;lives .dw $0003 ;unused +lives .dw $0003 ;unused x .db $16 ;x-pos y .db $46 ;think about it.. hp .db $00 ;hitpoints left @@ -988,7 +1098,7 @@ hp .db $00 ;hitpoints left ybullets .dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;10 x (state,x,y) ebullets .dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;10 x (state,x,y) -nrenemies = 32 +nrenemies = 20 enemies .dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 .dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 .dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 @@ -1000,11 +1110,16 @@ enemies .dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 .dw $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 ; %111111 (HP left) 11 (00=no enemy 01=exploding 10=normal 11=moving) -; %111 (move ptrn) 11111 (ship or explosion frame) %11111111 (x) %11111111 (y) - +; %11111111 (ship type or explosion frame) %11111111 (x) %11111111 (y) ;---------------------------- enemy data -------------------------------------- +sprites: + .db $00 + .db spr_enemy02-spr_enemy01 + .db spr_enemy03-spr_enemy01 + .db spr_enemy04-spr_enemy01 + spr_enemy01: .db 6,6 ;enemy type one .db %00111100 ; ████ @@ -1014,13 +1129,14 @@ spr_enemy01: .db %01110000 ; ███ .db %00111100 ; ████ spr_enemy02: - .db 6,6 ;enemy type two - .db %00111000 ; ███ - .db %01100000 ; ██ + .db 8,7 ;enemy type two + .db %00111111 ; █████ + .db %01111000 ; ████ .db %11111100 ; ██████ + .db %11111110 ; ███████ .db %11111100 ; ██████ - .db %01100000 ; ██ - .db %00111000 ; ███ + .db %01111000 ; ████ + .db %00111111 ; █████ spr_enemy03: .db 6,6 ;enemy type three .db %01111100 ; █████ @@ -1037,106 +1153,85 @@ spr_enemy04: .db %11111000 ; █████ .db %01111100 ; █████ .db %00111000 ; ███ +spr_enemy05: + .db 7,6 ;enemy type four + .db %00011110 ; ████ + .db %01111110 ; ██████ + .db %11111100 ; ██████ + .db %11111100 ; ██████ + .db %01111110 ; ██████ + .db %00011110 ; ████ enemy01: ;HP:1 move:- fire:- - .db %00000010,%00000000,%00000000 ;first two enemy bytes + .db %00000010,%00000000 ;first two enemy bytes enemy02: ;HP:1 move:1 fire:1.5% - .db %00000011,%00100001,%01111111 + .db %00000010,%00000001 enemy03: ;HP:2 move:- fire:3% - .db %00000110,%00000010,%00001111 + .db %00000110,%00000010 enemy04: ;HP:5 move:- fire:6% - .db %00010010,%00000011,%00000011 + .db %00010010,%00000011 enemy05: ;HP:10 move:- fire:25% - .db %00100111,%00000100,%00000011 - -;---------------------------- level data -------------------------------------- - -Leveldata: ;time,enemyclass,ypos - .db $0d,$00,$38 ;first wave (bottom) - .db $00,$00,$40 - .db $00,$00,$48 - .db $1e,$00,$10 ;second wave (top) - .db $00,$00,$18 - .db $00,$00,$20 - .db $1e,$00,$24 ;third wave (middle) - .db $00,$02,$2c - .db $00,$00,$34 - - .db $0d,$00,$10 ;top & bottom - .db $00,$00,$4a - .db $2a,$01,$2d ;middle: moving - .db $0c,$02,$2d ; 3HP - .db $0b,$02,$2d ; 3HP - .db $09,$00,$27 ;two 1HP behind him - .db $00,$00,$33 - .db $09,$02,$21 ;two 3HP behind them - .db $00,$02,$39 - .db $09,$02,$1b ;and two 3HP behind them - .db $00,$02,$3f - - .db $15,$03,$11 ;one vertical line of 8HPs - .db $00,$03,$19 - .db $00,$03,$21 - .db $00,$03,$29 - .db $00,$03,$31 - .db $00,$03,$39 - .db $00,$03,$41 - .db $00,$03,$49 - - .db $0c,$02,$11 ;one vertical line of 3HPs - .db $00,$02,$19 - .db $00,$02,$21 - .db $00,$02,$29 - .db $00,$02,$31 - .db $00,$02,$39 - .db $00,$02,$41 - .db $00,$02,$49 - - .db $0c,$00,$11 ;one vertical line of 1HPs - .db $00,$00,$19 - .db $00,$00,$21 - .db $00,$00,$29 - .db $00,$00,$31 - .db $00,$00,$39 - .db $00,$00,$41 - .db $00,$00,$49 - - - - - - - - .db $f1,$01,$40 - .db $10,$00,$30 - .db $10,$02,$20 - .db $40,$01,$10 - .db $01,$00,$44 - .db $15,$01,$31 - .db $04,$02,$38 - .db $05,$00,$40 - .db $03,$00,$2f - .db $04,$00,$3a - .db $12,$02,$10 - .db $10,$03,$18 - .db $0e,$03,$20 - .db $0c,$03,$28 - .db $0a,$02,$30 - .db $08,$02,$38 - .db $06,$01,$40 - .db $04,$00,$48 - .db $2a,$00,$20 - .db $ff,$ff,$ff + .db %00100111,%00000100 + +;----------------------------- level info ------------------------------------- + +level01: + .db $00,$15,$30 ;enemy nr ; enemy frequency ; next lvl +level02: + .db $01,$11,$4c +level03: + .db $02,$19,$40 +level04: + .db $03,$0f,$50 +level05: + .db $04,$2e,$3e + +;----------------------------- logo ------------------------------------------- + +logo_nemesis: +.db %11111111,%11111111,%11111111,%11111110,%11111111,%11110111,%11111111,%11111110,%11111111,%111101111,%11111111,%00001011,%11111111,%11111111,%11111111,%11111000 +.db %01111111,%11111111,%11111111,%11111110,%11111111,%11110111,%11111111,%11111110,%11111111,%111101111,%11111111,%00011011,%11111111,%11111111,%11111111,%11110000 +.db %00111111,%11111111,%11111111,%11111110,%11111111,%11110111,%11111111,%11111110,%11111111,%111101111,%11111111,%00111011,%11111111,%11111111,%11111111,%11100000 +.db %00011111,%11111111,%11111111,%11111110,%11111111,%11110111,%11111111,%11111110,%11111111,%111101111,%11111111,%01111011,%11111111,%11111111,%11111111,%11000000 +.db %00000000,%00000000,%00000001,%00011110,%00010000,%00000000,%10000001,%00011110,%00010000,%000000001,%00000000,%00001000,%01000000,%00000000,%00000000,%00000000 +.db %00000000,%00000000,%00000011,%00011110,%00110000,%00000001,%10000011,%00011110,%00110000,%000000011,%00000000,%00011000,%11000000,%00000000,%00000000,%00000000 +.db %00000000,%00000000,%00000111,%00011110,%01110000,%00000011,%10000111,%00011110,%01110000,%000000111,%00000000,%00111001,%11000000,%00000000,%00000000,%00000000 +.db %00000000,%00000000,%00001111,%00011110,%11111111,%00000111,%10001111,%00011110,%11111111,%000001111,%11111111,%01111011,%11111111,%11000000,%00000000,%00000000 +.db %00000000,%00000000,%00001111,%00011110,%11111111,%00000111,%10001111,%00011110,%11111111,%000001111,%11111111,%01111011,%11111111,%11000000,%00000000,%00000000 +.db %00000000,%00000000,%00001111,%00011110,%11111111,%00000111,%10001111,%00011110,%11111111,%000001111,%11111111,%01111011,%11111111,%11000000,%00000000,%00000000 +.db %00000000,%00000000,%00001111,%00011110,%11111111,%00000111,%10001111,%00011110,%11111111,%000001111,%11111111,%01111011,%11111111,%11000000,%00000000,%00000000 +.db %00000000,%00000000,%00001111,%00011110,%11110000,%00000111,%10001111,%00011110,%11110000,%000000000,%00001111,%01111000,%00000011,%11000000,%00000000,%00000000 +.db %00000000,%00000000,%00001111,%00011110,%11110000,%00000111,%10001111,%00011110,%11110000,%000000000,%00001111,%01111000,%00000011,%11000000,%00000000,%00000000 +.db %00000000,%00000000,%00001111,%00011110,%11110000,%00000111,%10001111,%00011110,%11110000,%000000000,%00001111,%01111000,%00000011,%11000000,%00000000,%00000000 +.db %00000000,%00000000,%00001111,%00011110,%11110000,%00000111,%10001111,%00011110,%11110000,%000000000,%00001111,%01111000,%00000011,%11000000,%00000000,%00000000 +.db %00000000,%00000000,%00001111,%00011110,%11111111,%11110111,%10001111,%00011110,%11111111,%111101111,%11111111,%01111011,%11111111,%11000000,%00000111,%11010001 +.db %00000000,%00000000,%00001111,%00011110,%11111111,%11110111,%10001111,%00011110,%11111111,%111101111,%11111111,%01111011,%11111111,%11000000,%00000001,%00011011 +.db %00000000,%00000000,%00001111,%00011110,%11111111,%11110111,%10001111,%00011110,%11111111,%111101111,%11111111,%01111011,%11111111,%11000000,%00000001,%00010101 +.db %00000000,%00000000,%00001111,%00011110,%11111111,%11110111,%10001111,%00011110,%11111111,%111101111,%11111111,%01111011,%11111111,%11000000,%00000001,%00010001 ;----------------------------- end -------------------------------------------- .end .end +;----------------------------- NEMESIS'86 by Shiar ---------------------------- +;Game · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · NEMESIS +;Version · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 0.6.820 +;Latest modification · · · · · · · · · · · · · · · · · · · · · · · · 20.IIX.99 +;Calc · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · TI-86 only +;Size · · · · · · · · · · · · · · · · · · · · · · · · · · · 2077 bytes on calc +;Author · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · SHIAR +;ICQ · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · #43840958 +;E-mail · · · · · · · · · · · · · · · · · · · · · · · · · · shiar@wishmail.net +;Homepage · · · · · · · · · · · · · · · · · · coming soon (www.wish.net/~shiar) -;----------------------------- NEMESIS'86 by Shiar ---------------------------- +;Beta: yes · · still to come: lives, armor, powerups, more levels, enemies... +;Sound: no · · · · · · · · · · · · don't know if i'll make sounds... we'll see +;Fun: yes · · · · · although not yet finished, the game is playable: 5 levels +;Bugs: yes crashes after death; press at GameOver-screen. Send me more +;Source: no · · · · · · · · not yet, will be released when Nemesis is finished ;----------------------------- version history -------------------------------- @@ -1171,7 +1266,7 @@ Leveldata: ;time,enemyclass,ypos ; + shell-icon added (YAS type) ; * code optimizations, some data "compression" ; * explosion looks better, and some vars removed/smaller -; # enemies are removed if at left side (instead of becoming invisible) +; # enemies are removed when at left side (instead of becoming invisible) ; + displays level number before each level begins ; ; 0.5.725 -- 25.VII.99 -- size 1778 @@ -1185,5 +1280,21 @@ Leveldata: ;time,enemyclass,ypos ; * game over screen will be displayed just *after* your ship's gone ; + frame counter onscreen ; +; 0.6.820 -- 20.IIX.99 -- size 2152 (2077 on calc) +; +; * play field increased to full screen instead of 3/4 +; + bottom eight lines used for score (etc) display +; - no more solid levels, enemies are placed at random +; + enemies appear every x turns (depends on level) +; # fixed bullets so they don't disappear at 3/4 of the screen +; * A LOT of optimizations both in speed and size!! +; + enemy type, frequency, and number specified per level +; + bottom score bar displays score, lives and icons (to be used later) +; * smarter enemy handling (so enemies have different sizes) +; + bottom bar divided from playing field by a horizontal line +; + five levels (and five enemies) made +; # game vars reset at start and game over +; + NEMESIS LOGO displayed at startup!! (also, program grew 350bytes ): +; + version/credits string displayed below logo: v0.6.820 by shiar (ICQ#) ; + added - removed * changed # bug fixed