From 66507ab69bde535b43c39f0b2b0ea2118c0314b3 Mon Sep 17 00:00:00 2001 From: Mischa Poslawsky Date: Sat, 4 Sep 1999 16:34:08 +0200 Subject: [PATCH] version 0.9 (public beta): upgrade select (armor, torpedoes), readme # pickups no longer fire bullets like normal enemies + s added so the game runs slower and looks better + TORPEDOES!!! Bullets that fire downwards! Just like in Nemesis * pickup selects the next icon on bottom bar instead of increasing hp + an icon can be taken by pressing F2. second icon selects torpedoes + first icon increases armor, icon 3 and 4 are unused for now * selecting an unused icon (3+4) resets pickups like icon 1 and 2 * when you're destroyed, you loose one life instead of going game over you also loose all upgrades and pickups, but remain in t same level * random is more randomized, no more "tricks" to fool the randomizer # after gameover the game is terminated instead of continuing+crashing - no more armor to start with. you'll have to collect them on your own * of course optimizations and a few tiny bug fixes (not important) * increased the size of the enemy bullets so they're better to see --- nemesis.txt | 62 +++++++ nemesis.z80 | 478 +++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 400 insertions(+), 140 deletions(-) create mode 100644 nemesis.txt diff --git a/nemesis.txt b/nemesis.txt new file mode 100644 index 0000000..1dfba3c --- /dev/null +++ b/nemesis.txt @@ -0,0 +1,62 @@ + ╔═══════════════════╗ + ║ N E M E S I S ║██ Game: Nemesis version 0.9.94 BETA!! + ║───────────────────║██ By: SHIAR shiar0@hotmail.com + ║ 0.9 BETA by SHIAR ║██ ICQ #43840958 + ╚═══════════════════╝██ Size: 2693 on calc + █████████████████████ Calc: TI-86 only, for now.. + + +>>>>>>> INTRO TO NEMESIS ------------------------------------------------------ + + Nemesis is an old arcade-game for the MSX. It was a really good game, +that's why Konami made three Nemesis games, named Nemesis, Nemesis ][ and +Nemesis III. This game has got some things in common with each game: + +* Nemesis' bad graphics, and worse. But what do you expect of a simple TI86. +* Nemesis ][ variety of ship-upgrades and cheats (not yet finished: beta v) +* The BAD storyline of Nemesis 3 (not yet finished: beta version) + +>>>>>>> CONTROLS -------------------------------------------------------------- + + You control a hi-tech upgradable vessel (storyline coming soon) and you have +blast 'n evade your way through a lot of enemies. Some enemies leave pickups +which you can collect in order to power-up your ship. Keys are: + +Arrow keys: stupid question, but ok: self-destruct your ship (no, really) +F1: fire your weapon (bullets are blastalot-class and infinate) +F2: enable the currently selected upgrade +EXIT: resets your calc and clears your ROM memory + + No pause key yet. But the game does halt when you press the Down and Left- +keys simoultaniously. No it's not a bug, I did that on purpose. Just kidding, +can anybody help me? I also noticed the same problem in Galaxian for the 86. + +>>>>>>> SCORE-BAR ------------------------------------------------------------- + + The first icon shows your shield-points left (press F2 when you picked one +pickup to increase shield-points) and the second icon shows whether you have +torpedoes on your ship (needs two pickups to activate). + + I'll make more options later, but as you may or may not know: this is still a +beta version. + +>>>>>>> BETA STUFF ------------------------------------------------------------ + + There are just seven levels for now, don't try to get to level eight. +Things to come: + +* more levels more enemies more pickups +* maybe obstacles? +* storyline +* pause- and teacher-key + + Send me any IDEAS and BUGS found!! Or send me you like this program, or even +send me something if you don't. Again: shiar0@hotmail.com, or, even better: +ICQ #43840958! PLEASE! + +>>>>>>> DISCLAIMER AND END --------------------------------------------------- + + Take any program and read the disclaimer. The same thing applies here. Now go +and play Nemesis and SEND ME SOMETHING! + +----------------------------------------------------------------------- <<<<<<< \ No newline at end of file diff --git a/nemesis.z80 b/nemesis.z80 index 1eb93b9..cefd4d0 100644 --- a/nemesis.z80 +++ b/nemesis.z80 @@ -11,7 +11,7 @@ TEXT_MEM = _textShadow .dw Title ;pointer to description .dw spr_ship ;pointer to YAS icon -Title: .db "Nemesis v0.8.93 by Shiar",0 +Title: .db "Nemesis v0.9.94 by Shiar",0 just_fired = TEXT_MEM ;byte temp1 = TEXT_MEM+1 ;word @@ -58,7 +58,7 @@ menutext: call _puts call _getkey ;wait for keypress - call New_level ;prepare level + call New_game ;prepare level ;------------------------------------------------------------------------------ ;---------------------- game loop --------------------------------------------- @@ -66,7 +66,13 @@ menutext: game_main_loop: ld hl,timer ;update time - inc (hl) + inc (hl) ;increase by 1 + ld b,(hl) ;new time + + ld hl,RanPos ;random counter + ld a,(hl) ;random value + add a,b ;even more random by adding timer + ld (hl),a ;save even more random value back Clear_screen: xor a ;empty bitmask @@ -97,11 +103,12 @@ game_stuff: call Fire_bullet ;check for fire call Handle_enemies ;move enemies call Handle_bullets ;move your bullets + call Handle_torp ;move your torpedo call Enemy_bullets ;move enemy bullets call Enemies_hit ;check for collision with enemies call Display_Screen ;display all -; halt \ halt ;delay + halt ;\ halt ;delay jr game_main_loop ;loop ;--------------------------- exit --------------------------------------------- @@ -123,12 +130,6 @@ displayloop: dec a ;next line jr nz,displayloop ;loop 64x - ld hl,$3946 ;Display Armor left - ld (_penCol),hl ;place @ armorIcon - ld a,(your_armor) ;load armor left - add a,'0' ;make digit - call _vputmap ;display char - ld hl,$396b ;Display Score ld (_penCol),hl ;bottom right of screen ld hl,(timer) @@ -163,7 +164,7 @@ Handle_Ship: cp 34 ;last explosion frame? jr c,exploding_you ;not yet: display explosion cp 40 ;delay finished? - jp z,game_over ;yes = game over + jp z,You_die ;yes = game over ret ;don't display anything ok: @@ -258,6 +259,7 @@ damage_you: dec a ;is it 0? jp m,no_armor ;yes, 0hp left so explode ld (hl),a ;no, so save decreased hp + call disp_armor ;and display new value ret ;and return no_armor: ld a,%01 ;occ %xxxxxx01 = explode @@ -273,17 +275,42 @@ Fire_bullet: ld a,%00111111 ;function keys (F1-F5) out (1),a ;ask for them - ld hl,just_fired ;usefull delay 10 clocks (nop\nop is 8) + nop \ nop ;delay 8 clocks in a,(1) ;get zem! bit 4,a ;test bit 4 = F1-key jr z,fire ;fire pressed? + ld hl,just_fired ld (hl),0 ;no: reset just_fired - ret + bit 3,a ;test bit 3 = F2-key &&& + ret nz ;return if not -fire: ld a,(hl) ;just_fired - or a ;zero when first time +select: + ld hl,your_pickup ;select pickups + ld a,(hl) ;load pickups taken so far + dec a ;is it 1? + jr nz,select2 ;no, carry on + ld (hl),a ;reset pickups + ld hl,your_armor ;change armor + inc (hl) ;increase HPs by one + jp disp_icons ;display and return +select2: + dec a ;is it 2? + jr nz,select3 ;no, carry on + ld (hl),a ;reset pickups + inc a ;a=1 + ld (torp_occ),a ;ready torpedoes + jp disp_icons ;display 'n return +select3: + ld (hl),0 ;reset pickups + jp disp_icons ;display n return + +fire: ld hl,RanPos ;random + inc (hl) ;update random counter + ld hl,just_fired + ld a,(hl) ;just_fired + or a ;zero when key just pressed (not already in) ret nz ;return when already pressed - ld (hl),1 ;set just_fired + inc (hl) ;set just_fired to 1 ld hl,ybullets ld de,3 @@ -298,14 +325,26 @@ find_ybullet: found_ybullet: ld (hl),1 ;use bullet - inc hl - ld a,(x) - add a,5 + ld a,(x) ;your x-pos + add a,5 ;place bullet in front of you + inc hl ;go to bullet-x ld (hl),a ;set x - ld a,(y) - add a,2 - inc hl + ld e,a ;save torp-x in e + + ld a,(y) ;your y-pos + add a,2 ;place bullet at the middle of your ship + inc hl ;go to bullet-y ld (hl),a ;set y + add a,3 ;place torpedo at bottom of ship + ld d,a ;save torp-y in d + + ld hl,torp_occ ;torpedo... + ld a,(hl) ;load torpInfo + dec a ;do you have (unused) torpedoes? + ret nz ;nope (a must be 1) + ld (hl),2 ;yes; use torpedo + ld (torp_pos),de ;save torpedo position (in de) + ret ;------------------------ handle bullets -------------------------------------- @@ -335,20 +374,21 @@ scan_bullets: bullet_2left: ld a,(hl) ;d = X - inc a ;move right - cp 122 ;off screen? (x=127-5) &&& - jr z,remove_bullet - inc a ;move right - cp 122 ;off screen? - jr z,remove_bullet + cp 122 ;off screen? (x>128-5) + jr nc,remove_bullet + add a,2 ;move 2 2 the right ld (hl),a ;save new pos. ld d,a + inc hl ;to y-pos ld e,(hl) ;e = Y + ld ix,spr_bullet01 push de call putsprite ;display bullet pop de + +check_bullethits: ;INPUT: de=X,Y ld b,nrenemies ld hl,enemies @@ -380,10 +420,9 @@ hit_enemies: ;Hits with normal enemies cp 10 jr nc,nohit - xor a push hl ld hl,(temp1) - ld (hl),a ;remove bullet + ld (hl),$00 ;remove bullet pop hl dec hl @@ -423,6 +462,40 @@ nohit: djnz hit_enemies ;check next enemy ret +;--------------------------- handle torpedo ----------------------------------- + +Handle_torp: + ld a,(torp_occ) + sub 2 + ret m ;return if occ=0/1 + + ld hl,torp_pos ;x-position + ld a,(hl) ;load in a + inc a ;move right + cp 125 ;right edge reached + jr nc,remove_torp ;remove if x>125 + ld (hl),a ;save new x + ld d,a + + inc hl ;y-position + ld a,(hl) + inc a ;move down + cp 56 ;bottom reached + jr nc,remove_torp ;remove if y>40 + ld (hl),a ;save new y + ld e,a + + ld ix,spr_bullett1 + push de + call putsprite ;display torpedo + pop de + jr check_bullethits ;check for hits with enemies + +remove_torp: + ld a,1 + ld (torp_occ),a + ret + ;--------------------------- level events ------------------------------------- Level_event: @@ -523,6 +596,7 @@ Random: ;--------------------------- enemy fires -------------------------------------- Enemy_fires: ;de = x,y + push de dec d dec d ;d = x-2 inc e ;e = y+1 @@ -543,6 +617,7 @@ found_ebullet: ld (hl),d ;set x-pos inc hl ld (hl),e ;set y-pos + pop de ret ;----------------------------- enemy bullets ---------------------------------- @@ -586,7 +661,7 @@ ebullet_down: ebullet_common: ld e,(hl) ;e=y - ld ix,spr_bullet11 ;display enemy bullet + ld ix,spr_bullete1 ;display enemy bullet call putsprite ebullet_hits: @@ -640,6 +715,7 @@ normal_enemy: ;occ "normal" 2 or "moving" 3 push hl ld e,(hl) ;e = enemy type + ld c,e ;c = e ld d,0 ;de = e ld hl,sprites ;hl = @sprites offset-table add hl,de ;points to offset of current enemy offset @@ -662,28 +738,30 @@ normal_enemy: ;occ "normal" 2 or "moving" 3 dec a ;is it 1? call nz,moving_enemy ;2 = moving enemy -ymove_done: dec hl ;@x ld (hl),d ;store new x - push hl - push de ;save registers for firing-use - call putsprite ;display sprite @ix - pop de ;restore (destroyed by putsprite) - pop hl - check_enemyfire: + ld a,c ;a = enemy type + or a ;type 0? (pickup) + jr z,firing_done ;pickups don't fire + ld bc,add2enemy+1-2 ;offset of add hl,bc ;go there (@hl) dec (hl) ;decrease counter till next blast ld a,(hl) ;load new counter or a ;has it reached zero? - jr nz,next_enemy ;finished if not + jr nz,firing_done ;finished if not add a,64 ;re-set counter for next blast ld (hl),a ;save call Enemy_fires ;fires bullet +firing_done: + push de ;save registers for firing-use + call putsprite ;display sprite @ix + pop de ;restore (destroyed by putsprite) + next_enemy: pop hl ld bc,$0004 @@ -715,7 +793,7 @@ exploding_enemy: ;--------------------------- moving enemies ----------------------------------- moving_enemy: -movetype_updown: ;&&& +movetype_updown: ld bc,add2enemy add hl,bc @@ -799,9 +877,17 @@ take_pickup: or a jr nz,collide ;enemy when <>0 - ld a,(your_armor) - inc a - ld (your_armor),a + push hl + ld hl,your_pickup ;your pickups + ld a,(hl) ;current + inc a ;go to next + cp 3 ;pickups >3 + jr c,not_maxpickup + ld a,1 ;yes: reset to pickup 1 +not_maxpickup: + ld (hl),a ;save new + call disp_icons ;display altered pickupicons + pop hl dec hl ;to enemy occ xor a ;set to 0 = gone @@ -825,7 +911,85 @@ check_next: djnz check_collision ret -;--------------------------- game over ---------------------------------------- +;--------------------------- show icon ---------------------------------------- + +disp_icons: + ld hl,VIDEO_MEM+(16*57);57 rows down = seven rows from bottom + ld b,16*7 ;draw 16x (screen width) 7x (height) +cleanline: + ld a,%00000000 ;blank line mask + ld (hl),a ;draw one piece of the divider-line + inc hl ;move right (8 pixels = 1 byte) + djnz cleanline ;repeat (16bytes * 7rows * 8pixels) + + ld hl,VIDEO_MEM+(56*16) + ld (PutWhere),hl + + call disp_lives + + ld ix,spr_icon01 ;armorIcon + ld de,$1a01 ;icon #1 + call putwidesprite ;display icon + call disp_armor ;display value + + ld ix,spr_icon00 + ld a,(torp_occ) + or a + jr z,no_torp + ld ix,spr_icon02 ;torpedoIcon +no_torp: + ld de,$2a01 ;icon #2 + call putwidesprite ;display + + ld ix,spr_icon00 ; + ld de,$3a01 ;icon #3 + call putwidesprite + ld ix,spr_icon00 ;emptyIcon + ld de,$4a01 ;icon #4 + call putwidesprite + ld ix,spr_icon00 ;emptyIcon + ld de,$5a01 ;icon #5 + call putwidesprite + + ld a,(your_pickup) ;pickups taken + add a,a ;picks*2 + ret z ;return if no pickups + add a,a ;picks*4 + add a,a ;picks*8 + add a,a ;picks*$10 + add a,$0a ;add 0ah + ld d,a ;y-pos = picks * $10 + $0a (1a,2a,3a,4a,5a) + ld e,$01 ;x-pos = bottom (1a01,2a01,3a01,4a01,5a01) + + ld ix,spr_icon + call putwidesprite + ret + +disp_armor: + ld hl,$3926 ;Display Armor left + ld (_penCol),hl ;place @ armorIcon + ld a,(your_armor) ;load armor left + add a,'0' ;make digit + call _vputmap ;display char + ret + +disp_lives: + ld hl,$3900 ;display Lives + ld (_penCol),hl ;bottom left + ld hl,savestr+2 + ld (hl),'L' + inc hl + ld (hl),'x' + inc hl + + 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 + ret + +;--------------------------- game over / new game / death --------------------- game_over: call _clrLCD ;clear screen @@ -834,44 +998,53 @@ game_over: ld hl,txt_gameover call _puts ;display "GAME OVER" - ld hl,lives - dec (hl) ;decrease lives - ld b,$20 wait2: halt \ halt djnz wait2 ;delay call _getkey ;wait for keypress -;--------------------------- new game ----------------------------------------- + pop hl ;=ret (game_over was called from a procedure) + ret ;quit to TI-OS or shell -New_level: - xor a ;a=0 - ld a,3 - ld (your_armor),a ;no armor - xor a - ld hl,x ;begin position x=... - ld (hl),a ;...=a=0=left - inc hl ;y=... - ld (hl),24 ;...=24=middle - ld (level),a ;reset level nr +New_game: + xor a ;score 0 ld (score),a ;reset score - ld hl,level01-3 ;set level pointer to level#1 + inc a ;level #1 + ld (level),a ;reset level nr + ld hl,level01 ;set level pointer to level#1 ld (levelp),hl ;reset level pointer + ld hl,lives ;starting lives + ld (hl),4 ;3 lives (will be decreased @ You_die) + +You_die: + ld hl,lives + dec (hl) ;decrease lives + ld a,(hl) ;load lives left + inc a ;if lives=0ffh then a=0 + jr z,game_over ;if so, game's over + + xor a ;a=0 + ld (your_armor),a ;no armor + ld (torp_occ),a ;no torpedoes + ld (your_pickup),a ;reset pickups + jr nonext_level ;--------------------------- next level --------------------------------------- Next_level: - ld hl,level - inc (hl) ;increase level nr. - ld a,80 - ld (nextevent),a ;time to first enemy appearance - + ld hl,level ;level number + inc (hl) ;increase it ld hl,(levelp) ;level pointer inc hl inc hl inc hl ;update to point to next level ld (levelp),hl ;save +nonext_level: + ld a,80 + ld (nextevent),a ;time to first enemy appearance + + ld hl,(levelp) ;level pointer ld a,(hl) ;load new level-enemy type ld (eventenemy),a ;set level-enemy inc hl @@ -887,6 +1060,10 @@ Next_level: ld (hl),a ;reset your ship (not exploding) inc hl ;hl = your_inv ld (hl),50 ;set 50 frames invulnerable + ld hl,x ;begin position x=... + ld (hl),a ;...=a=0=left + inc hl ;y=... + ld (hl),24 ;...=24=middle ;--------------------------- setup game --------------------------------------- @@ -940,48 +1117,8 @@ wait: halt \ halt djnz wait ;delay call _getkey ;wait for keypress - ld ix,spr_icon00 ;empty icon - ld de,$1a01 ;icon #1 - call putwidesprite ;display - ld ix,spr_icon00 ;emptyIcon - ld de,$2a01 ;icon #2 - call putwidesprite -; ld ix,spr_icon02 ;emptyIcon -; ld de,$3a01 ;icon #3 -; call putwidesprite - ld ix,spr_icon00 ;emptyIcon - ld de,$4a01 ;icon #4 - call putwidesprite - ld ix,spr_icon00 ;emptyIcon - ld de,$5a01 ;icon #5 - call putwidesprite - - ld ix,spr_icon02 ;armorIcon - ld de,$3a01 ;bottom mid - call putwidesprite ;display - - ld hl,GRAPH_MEM ;from storage (top left) - ld de,VIDEO_MEM+(56*16);to screen (top left) - ld a,8 ;display height = 64 bytes (minus 8 for bar) -displayloop3: - ld bc,16 ;display width = 16 bytes (16*8bits=256pixels) - ldir ;16x de >> hl - dec a ;next line - jr nz,displayloop3 ;loop 8x - - ld hl,$3900 ;display Lives - ld (_penCol),hl ;bottom left - ld hl,savestr+2 - ld (hl),'L' - inc hl - ld (hl),'x' - inc hl - - 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 + call _clrLCD ;clear screen + call disp_icons ;display bottom icons ld hl,VIDEO_MEM+(16*56);56 rows down = eight rows from bottom ld b,16 ;draw 16x (screen width) @@ -1062,8 +1199,7 @@ putwidesprite: ld a,(hl) ld (wsmc1+1),a ld (wsmc2+1),a - - ld hl,GRAPH_MEM + ld hl,(PutWhere) ld a,e add a,a @@ -1160,13 +1296,22 @@ spr_ship01i: spr_ship02: .db 7,7 ;ship beta class - .db %11000000 ; ██ + .db %11100000 ; ███ .db %11110000 ; ████ .db %01111100 ; █████ .db %01110010 ; ███ █ .db %01111100 ; █████ .db %11110000 ; ████ - .db %11000000 ; ██ + .db %11100000 ; ███ +spr_ship02i: + .db 7,7 ;ship beta class + .db %01000000 ; █ + .db %10100000 ; █ █ + .db %01010100 ; █ █ █ + .db %00100010 ; █ █ + .db %01010100 ; █ █ █ + .db %10100000 ; █ █ + .db %01000000 ; █ spr_bullet01: .db 5,3 ;your bullets @@ -1178,12 +1323,17 @@ spr_bullet02: .db %11110000 ; ░▒▓███▒ .db %11111000 ; ░▒▓████▒ .db %11110000 ; ░▒▓███▒ +spr_bullett1: + .db 4,3 ;▒▒▒ + .db %11100000 ;▒███ + .db %11110000 ; ████ + .db %01110000 ; ███ -spr_bullet11: - .db 3,3 ;enemy bullets - .db %01000000 ; ▒▓▒░ - .db %11100000 ; ▒██▓▒░ - .db %01000000 ; ▒▓▒░ +spr_bullete1: + .db 4,3 ;enemy bullets + .db %01100000 ; ▒█▓▒░ + .db %11110000 ; ▒███▓▒░ + .db %01100000 ; ▒█▓▒░ ;---------------------------------------- explosion ------------------------------------------- @@ -1254,6 +1404,15 @@ spr_explosion: ;--------------------------------------- bar ----------------------------------- +spr_icon: + .db 16,7 ;unused .......:.......: + .db %11111111,%11111111 ; ████████████████ + .db %11000000,%00000001 ; ██ █ + .db %11000000,%00000001 ; ██ █ + .db %11000000,%00000001 ; ██ █ + .db %11000000,%00000001 ; ██ █ + .db %11000000,%00000001 ; ██ █ + .db %11111111,%11111111 ; ████████████████ spr_icon00: .db 16,7 ;unused .......:.......: .db %10101010,%10101010 ; █ █ █ █ █ █ █ █ @@ -1264,6 +1423,33 @@ spr_icon00: .db %11010101,%01010101 ; ██ █ █ █ █ █ █ █ .db %10101010,%10101010 ; █ █ █ █ █ █ █ █ spr_icon01: + .db 16,7 ;armor ; .......:.......: + .db %10001111,%10000000 ; █ █████ + .db %10010000,%01000000 ; █ █ █ ▒▒▒ + .db %10101110,%00100000 ; █ █ ███ █ ▒▒▒ + .db %10100111,%10100000 ; █ █ ████ █ ▒▒▒ + .db %10101110,%00100000 ; █ █ ███ █ ▒▒▒ + .db %10010000,%01000000 ; █ █ █ ▒▒▒ + .db %10001111,%10000000 ; █ █████ +spr_icon02: + .db 16,7 ;torpedo .......:.......: + .db %10111000,%00010101 ; █ ███ █ █ █ + .db %10011100,%00010101 ; █ ███ █ █ █ + .db %10111000,%01001010 ; █ ███ █ █ █ + .db %10000000,%11101010 ; █ ███ █ █ + .db %11100001,%11100101 ; ███ ████ █ █ + .db %10011000,%11110101 ; █ ██ ████ █ █ + .db %11100110,%00110010 ; ███ ██ ██ █ +spr_icon03: + .db 16,7 ;laser ........:.......: + .db %10000000,%00000000 ; █ + .db %10110001,%01000000 ; █ ██ █ █ + .db %10111011,%10000000 ; █ ███ ███ + .db %10011101,%11111111 ; █ ███ ██████████ + .db %10111011,%10000000 ; █ ███ ███ + .db %10110001,%01000000 ; █ ██ █ █ + .db %10000000,%00000000 ; █ +spr_icon04: .db 16,7 ;invulnerable....:.......: .db %10000000,%01010100 ; █ O O O .db %10011110,%00101010 ; █ OOOO O O O @@ -1272,19 +1458,10 @@ spr_icon01: .db %10111111,%00010101 ; █ OOOOOOO O O O .db %10111000,%00101010 ; █ OOO O O O .db %10011110,%01010100 ; █ OOOO O O O -spr_icon02: - .db 16,7 ;armor ; .......:.......: - .db %10001111,%10000000 ; █ █████ - .db %10010000,%01000100 ; █ █ █ XXX - .db %10101110,%00101010 ; █ █ ███ █ XXX - .db %10100111,%10101010 ; █ █ ████ █ XXX - .db %10101110,%00101010 ; █ █ ███ █ XXX - .db %10010000,%01000100 ; █ █ █ XXX - .db %10001111,%10000000 ; █ █████ ;---------------------------- texts ------------------------------------------- -txt_about: .db "v0.8.93 ","by Shiar " +txt_about: .db "v0.9.94 ","by Shiar " .db "(ICQ#43840958)",0 txt_1player: .db "1 PLAYER",0 txt_2players: .db "2 PLAYERS",0 @@ -1296,6 +1473,8 @@ txt_lives: .db "Lx0?",0 stored_data_start: +PutWhere .dw GRAPH_MEM ;where to put the wide sprites + timer .db $00 ;frame counter level .db $00 ;level number levelp .dw level01 ;pointer to level data @@ -1307,14 +1486,18 @@ nextevent .db $50 ;time to next event score .dw $0000 +your_pickup .db $00 your_occ .db $00 ;0=normal 1..16=exploding your_inv .db $50 ;invincibility left your_armor .db $13 ;HP left -lives .db $03 ; +lives .db $04 ; x .db $16 ;x-pos y .db $46 ;think about it.. hp .db $00 ;hitpoints left +torp_occ .db $00 ;torp.state: 0=unavail 1=avail 2=presnt +torp_pos .dw $0000 ;torpedo position (x,y) + 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) @@ -1346,12 +1529,12 @@ sprites: .db spr_enemy07-spr_enemy00 spr_enemy00: - .db 6,5 ;pickup - .db %11111100 ; ██████ - .db %10010100 ; █ █ █ - .db %11111100 ; ██████ - .db %10010100 ; █ █ █ - .db %11111100 ; ██████ + .db 7,5 ;pickup + .db %11111110 ; ███████ + .db %10011010 ; █ ██ █ + .db %11111110 ; ███████ + .db %10011010 ; █ ██ █ + .db %11111110 ; ███████ spr_enemy01: .db 6,6 ;enemy type one .db %00111100 ; ████ @@ -1436,11 +1619,11 @@ level03: level04: .db $04,$0d,$4f level05: - .db $05,$2d,$3d + .db $05,$25,$3d level06: - .db $06,$2b,$39 + .db $06,$23,$39 level07: - .db $07,$25,$f9 + .db $07,$1f,$f9 ;----------------------------- logo ------------------------------------------- @@ -1473,10 +1656,10 @@ logo_nemesis: ;----------------------------- NEMESIS'86 by Shiar ---------------------------- ;Game · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · NEMESIS -;Version · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 0.8.93 -;Latest modification · · · · · · · · · · · · · · · · · · · · · · · · · 3.IX.99 +;Version · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 0.9.94 +;Latest modification · · · · · · · · · · · · · · · · · · · · · · · · · 4.IX.99 ;Calc · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · TI-86 only -;Size · · · · · · · · · · · · · · · · · · · · · · · · · · · 2417 bytes on calc +;Size · · · · · · · · · · · · · · · · · · · · · · · · · · · 2694 bytes on calc ;Author · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · SHIAR ;ICQ · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · #43840958 @@ -1584,8 +1767,23 @@ logo_nemesis: ; + seven playable levels going easy to hard (including moving enemies) ; # xtraInfo data wasn't reset when a moving enemy entered the game ; * longer delay when level is completed (NextLevel screen came too soon) - -;To FIX: pickups fire bullets!?! +; +; 0.9.94 -- 04.IX .99 -- size 2693 +; +; # pickups no longer fire bullets like normal enemies +; + s added so the game runs slower and looks better +; + TORPEDOES!!! Bullets that fire downwards! Just like in Nemesis +; * a pickup selects the next icon on bottom bar instead of increasing hp +; + an icon can be taken by pressing F2. second icon selects torpedoes +; + first icon increases armor, icon 3 and 4 are unused for now +; * selecting an unused icon (3+4) resets pickups like icon 1 and 2 +; * when you're destroyed, you loose one life instead of going game over +; you also loose all upgrades and pickups, but remain in the same level +; * random is more randomized, no more "tricks" to fool the randomizer +; # after game over the game is terminated instead of continuing+crashing +; - no more armor to start with. you'll have to collect them on your own +; * of course optimizations and a few tiny bug fixes (not important) +; * increased the size of the enemy bullets so they're better to see ; + added - removed * changed # bug fixed -- 2.30.0