version 0.98: minor fixes, redone levels
authorMischa Poslawsky <nemesis@shiar.org>
Fri, 7 Jul 2000 12:38:00 +0000 (14:38 +0200)
committerMischa Poslawsky <nemesis@shiar.org>
Wed, 18 Mar 2009 03:35:12 +0000 (04:35 +0100)
# enemies can _never_ move above or below visible screen
* "randomY"-enemies are placed entirely on screen (height calced)
# the major TI-OS crash bug WAS afterall caused by sprites drawn
   (partially) outside screen memory. temporarily fixed by setting
   virtual screen buffer to $8200 (enough mem there)
+ upto 29 cool enemy sprites and redone first five levels
* improved enemy-move routine; smooth luring, five speeds+backwards
# after pause weapon will not be fired
# teacher key fixed (waits for GRAPH to be release before&after)

nemesis.txt
nemesis.z80

index b2ec9556fad1d5aea6df6bf5342f4ba296e9271c..10ac92a3350e272272c507f3543a6fdb5ac12411 100644 (file)
@@ -1,8 +1,8 @@
 ------------------------------------------------------------------------------
  Title                         : Nemesis
 ------------------------------------------------------------------------------
  Title                         : Nemesis
- Version                       : 0.97.629 Beta
- Release Date                  : 29.VI.00
- Filename                      : nemesis.86p (size 6kb)
+ Version                       : 0.98.77 Beta
+ Release Date                  : 7.VII.00
+ Filename                      : nemesis.86p (size 6707B)
  Author(s)                     : Shiar
  Email Address                 : shiar0@hotmail.com
  ICQ                           : #43840958
  Author(s)                     : Shiar
  Email Address                 : shiar0@hotmail.com
  ICQ                           : #43840958
  Other games by author         : Worm
 
 
  Other games by author         : Worm
 
 
->>>>>>> NOTE ON V.97 ---------------------------------------------------------
+>>>>>>> NOTE ON V.98 ---------------------------------------------------------
 
 
-  Still under construction. Don't distribute.
+  It's been nearly a year since the first version of Nemesis, and over one
+half year since my last version. So I figured it's about time to complete
+this game. I won't bother you with the endless list of improvements I made;
+just go ahead and play the game!
 
 
 >>>>>>> INTRO TO NEMESIS -----------------------------------------------------
 
   Nemesis is an old arcade-game for many platforms, originally for arcades.
 I first played Nemesis III for the MSX (1988), but Konami made at least
 
 
 >>>>>>> INTRO TO NEMESIS -----------------------------------------------------
 
   Nemesis is an old arcade-game for many platforms, originally for arcades.
 I first played Nemesis III for the MSX (1988), but Konami made at least
-* 41 * Nemesis-games (mostly named Nemesis, Gradius, Salamander, Parodius)
+41 Nemesis-games (named Nemesis=Gradius, Salamander=LifeForce, Parodius)
 for systems including the Game Boy, (S)NES and Play Station.
 
 
 for systems including the Game Boy, (S)NES and Play Station.
 
 
->>>>>>> CONTROLS -------------------------------------------------------------
+>>>>>>> THA GAME -------------------------------------------------------------
 
 
-  The universal TI-86 keys:
-
-Arrow keys : move
-2nd        : fire
-ALPHA      : select powerup
-MORE       : pause
-EXIT       : exit
-GRAPH      : teacher/boss! (press graph again to resume)
-
-  In main menu you can press F1 to toggle b<>w.
-  A game can be saved by pressing F1 at the level-screen.
-
-
->>>>>>> PICKUPS AND SO -------------------------------------------------------
+  Arrow keys : move
+  2nd        : fire
+  ALPHA      : select powerup
+  MORE       : pause
+  GRAPH      : teacher/boss! (press graph again to resume)
+  EXIT       : exit
+  F1         : toggle B<>W in main menu, save game at level-screen
 
   Collect the pickups enemies leave after they're destroyed to upgrade your
 ship. The highlighted icon in the score bar (bottom) can be activated by
 pressing ALPHA.
 
 
   Collect the pickups enemies leave after they're destroyed to upgrade your
 ship. The highlighted icon in the score bar (bottom) can be activated by
 pressing ALPHA.
 
-  Upgrades: ARMOR | TORPEDO | WEAPON-UPG | LASER | MULTIPLES
+  Upgrades: ARMOR | TAIL-BEAM | WEAPON-UPG | LASER | MULTIPLES
 
   The upper bar on the left shows your hitpoints left (armor). The bar below
 that shows the current power of your weapon.
 
   The upper bar on the left shows your hitpoints left (armor). The bar below
 that shows the current power of your weapon.
@@ -54,47 +50,45 @@ that shows the current power of your weapon.
 
 >>>>>>> BETA STUFF -----------------------------------------------------------
 
 
 >>>>>>> BETA STUFF -----------------------------------------------------------
 
-  There are just seven levels for now, don't try to get to level eight.
-Things to come:
-
-* save options (like b<>w)
-* more LEVELS!! more enemies more upgrades more story
-* maybe obstacles?
-* source code release
-? grayscale, sounds, multiplayer-option: probably not
+  There are just five levels for now, don't play beyond there. In future
+versions I'll add more levels and enemies, maybe obstacles, and I'll release
+the source code. I don't think I will add greyscale, sound or a multiplayer
+option.
 
   Continue to send me any IDEAS and BUGS found!! Or send me you like this
 program, or even send me something if you don't. Again: shiar@mailroom.com,
 or ICQ #43840958! PLEASE!
 
 
   Continue to send me any IDEAS and BUGS found!! Or send me you like this
 program, or even send me something if you don't. Again: shiar@mailroom.com,
 or ICQ #43840958! PLEASE!
 
-  Tested on TI86es (and emulators) with ROM 1.2, 1.4 and 1.6 using YAS,
+  Tested on TI86es and emulators with ROM 1.2, 1.4 and 1.6 using YAS,
 Rascall and Asm(. Nemesis will NOT run correctly under RASCALL with the
 Rascall and Asm(. Nemesis will NOT run correctly under RASCALL with the
-memory LOCKED!
+memory LOCKED! Besides that there shouldn't be any bugs.
 
 
 >>>>>>> CREDITS --------------------------------------------------------------
 
 
 
 >>>>>>> CREDITS --------------------------------------------------------------
 
-  SHIAR             programming and everything else. SHIAR@MAILROOM.COM
-  DAVE              betatester (if you need a bug, ask Dave :)
-  BLACKBELT         betatester (the one and only..)
-  JONAH COHEN       for teaching me z80 and stuff, also kinda betatester
-  FREE BIRD         working on the storyline
-  MATTHEW DALE      betatester
-  KONAMI            for writing the original Nemesises and more great games
-  PATRICK DAVIDSON  wrote Galaxian; Nemesis uses his gfx-engine
+  SHIAR        (me) programming and everything else. SHIAR@MAILROOM.COM
+  DAVE              official betatester (if you need a bug, ask Dave :)
+  BLACKBELT         official betatester
+  MATTHEW DALE      official betatester
+  JONAH COHEN       for teaching me z80, giving advise, testing...
+  SCABBY            gave me Wworm, Derek, and probably some other stuff
+  CULLEN SAULS      exchanging beta MegaMan for beta Nemesis ;)
   BRIAN KOROPOFF    for solving the left+down bug!
   BRIAN KOROPOFF    for solving the left+down bug!
+  PATRICK DAVIDSON  Nemesis was originally based on his Galaxian
+  KONAMI            for writing the original Nemesises and more great games
 
 
-  and EVERYBODY WHO SENT ME SOMETHING!! (too much to list here)
+and EVERYBODY WHO SENT ME SOMETHING!! (too much to list here)
+and everybody I forgot.
 
 
 >>>>>>> RULEZ AND REGULATIONS ------------------------------------------------
 
 * Damage to you, your calc, or anything else was not caused by Nemesis
 
 
 >>>>>>> RULEZ AND REGULATIONS ------------------------------------------------
 
 * Damage to you, your calc, or anything else was not caused by Nemesis
-  and I am certainly not responsible
-* Thou shallt NOT release an altered version of Nemesis
-* Thou shallt include this documentation with distribution (except calc2calc)
-* Thou shallt not ask money for this program
-* Thou shallt eat plenty of vegetables every day
+   and I am certainly not responsible
+* Thou shalt NOT release an altered version of Nemesis
+* Thou shalt include this documentation with distribution (except calc2calc)
+* Thou shalt not ask money for this program
+* Thou shalt eat plenty of vegetables every day
 
 
 ---------------------------------------------------------------------- <<<<<<<
\ No newline at end of file
 
 
 ---------------------------------------------------------------------- <<<<<<<
\ No newline at end of file
index 3b076b94a9ae0d39ecb99b37aecea8fbe5165d93..d57f1c11759fe607c230e8a0bcce170332e5f429 100644 (file)
@@ -23,7 +23,7 @@
 #define                  psh   push    ; ^:D
 #define                  dnz   djnz    ;Dec&Jump while NonZero becomes Do w.Non-Zero
 
 #define                  psh   push    ; ^:D
 #define                  dnz   djnz    ;Dec&Jump while NonZero becomes Do w.Non-Zero
 
-;GRAPH_MEM     = $C9FA         ;display buffer (virtual screen)
+dispbuffer     = $81FA ;= $C9FA                ;virtual screen
 ;VIDEO_MEM     = $FC00         ;tha big scareen
 TEXT_MEM       = _textShadow   ;text buffer; C0F9-C1A0 (167/$A7 bytes)
 
 ;VIDEO_MEM     = $FC00         ;tha big scareen
 TEXT_MEM       = _textShadow   ;text buffer; C0F9-C1A0 (167/$A7 bytes)
 
@@ -99,7 +99,7 @@ lvlenemies    = ebullets+(nrebuls*3)
        .dw Title               ;pointer to description (all shells)
        .dw Icon                ;pointer to YAS icon
 
        .dw Title               ;pointer to description (all shells)
        .dw Icon                ;pointer to YAS icon
 
-Title: .db "Nemesis v0.97 by SHIAR",0
+Title: .db "Nemesis v0.98 by SHIAR",0
 
 Icon:  .db 8,1                 ;icon for YAS: width = 1byte; height = 9bytes
        .db %11100000           ; ███
 
 Icon:  .db 8,1                 ;icon for YAS: width = 1byte; height = 9bytes
        .db %11100000           ; ███
@@ -113,14 +113,14 @@ Icon:     .db 8,1                 ;icon for YAS: width = 1byte; height = 9bytes
 
 ;---------------------- init ------------------------------------------------
 
 
 ;---------------------- init ------------------------------------------------
 
-int_handler:
-       ex  af,af'
-       in  a,($03)
-       bit 3,a
-       jp  z,$0039
-       res 0,a
-       out ($03),a
-       jp  $0039
+int_handler:                   ;new interrupt proc
+       ex  af,af'              ;just af only (no need for exx)
+       in  a,($03)             ;read bit 3 port 3
+       bit 3,a                 ;is ON key pressed?
+       jp  z,$0039             ;no: np, return
+       res 0,a                 ;yes: then we have a problem (freeze), so...
+       out ($03),a             ;...mask the ON key interrupts!
+       jp  $0039               ;all done, return
 int_end:
 
 init:  cal BUSY_OFF            ;turns the run-indicator off, obviously
 int_end:
 
 init:  cal BUSY_OFF            ;turns the run-indicator off, obviously
@@ -140,7 +140,7 @@ FixKeys:                    ;fixes some key problems like left+down bug
        dec a                   ;ld a,$D3
        ld  (hl),a
        ldir
        dec a                   ;ld a,$D3
        ld  (hl),a
        ldir
-       ld  hl,int_handler
+       ld  hl,int_handler      ;new interrupt handler
        ld  d,a
        ld  e,a                 ;ld de,$D3D3
        ld  bc,int_end-int_handler
        ld  d,a
        ld  e,a                 ;ld de,$D3D3
        ld  bc,int_end-int_handler
@@ -272,9 +272,9 @@ game_main_loop:                     ;REPEATS FROM HERE EVERY FRAME
        cal z,scoreInc          ;do it
 
 Clear_screen:
        cal z,scoreInc          ;do it
 
 Clear_screen:
-       ld  hl,GRAPH_MEM        ;move from (hl) = top left
+       ld  hl,dispbuffer       ;move from (hl) = top left
        ld  (hl),$00            ;first pixel will be copied all over the screen
        ld  (hl),$00            ;first pixel will be copied all over the screen
-       ld  de,GRAPH_MEM+1      ;(de) = next pixel, thus clearing whole screen
+       ld  de,dispbuffer+1     ;(de) = next pixel, thus clearing whole screen
        ld  bc,896              ;loop 896 times = (128/8) * (64-8 for scorebar)
        ldir                    ;all clear!
 
        ld  bc,896              ;loop 896 times = (128/8) * (64-8 for scorebar)
        ldir                    ;all clear!
 
@@ -311,7 +311,7 @@ check_keys:
        ld  a,%10111111         ;function keys (MORE,EXIT,2ND,F1,F2,F3,F4,F5)
        out (1),a               ;ask for them
        nop \ nop               ;delay 8 clocks
        ld  a,%10111111         ;function keys (MORE,EXIT,2ND,F1,F2,F3,F4,F5)
        out (1),a               ;ask for them
        nop \ nop               ;delay 8 clocks
-       in  a,(1)               ;get zem!
+       in  a,(1)               ;gettem!
 
 check_exitkey:
        bit 6,a                 ;test bit 6 = exit-key = EXIT
 
 check_exitkey:
        bit 6,a                 ;test bit 6 = exit-key = EXIT
@@ -433,7 +433,7 @@ Display_ground:
        ld  b,16                ;screen width
        ld  de,groundpos-1      ;height of current byte (previous actually)
        psh de                  ;use later
        ld  b,16                ;screen width
        ld  de,groundpos-1      ;height of current byte (previous actually)
        psh de                  ;use later
-       ld  hl,GRAPH_MEM+(56*16)-1 ;screen position
+       ld  hl,dispbuffer+(56*16)-1 ;screen position
        psh hl
 
 groundloopright:
        psh hl
 
 groundloopright:
@@ -522,7 +522,7 @@ Display_ceiling:
        ld  b,16                ;screen width
        ld  de,ceilingpos-1     ;height of current byte
        psh de                  ;use later
        ld  b,16                ;screen width
        ld  de,ceilingpos-1     ;height of current byte
        psh de                  ;use later
-       ld  hl,GRAPH_MEM-17     ;screen position
+       ld  hl,dispbuffer-17    ;screen position
        psh hl
 
 ceilingloopright:
        psh hl
 
 ceilingloopright:
@@ -615,6 +615,7 @@ newstarok:
 ;--------------------------- pause ------------------------------------------
 
 Pause:
 ;--------------------------- pause ------------------------------------------
 
 Pause:
+       psh af
        ld  hl,$0200            ;top left
        ld  (_curRow),hl
        ld  hl,txt_pressenter   ;"Enter to continue"
        ld  hl,$0200            ;top left
        ld  (_curRow),hl
        ld  hl,txt_pressenter   ;"Enter to continue"
@@ -623,16 +624,17 @@ pause:
        cal _getkey             ;enter low-power mode and wait for key
        cp  kEnter              ;keypressed = enter?
        jr  nz,pause            ;no, wait some more
        cal _getkey             ;enter low-power mode and wait for key
        cp  kEnter              ;keypressed = enter?
        jr  nz,pause            ;no, wait some more
+       pop af
        ret                     ;continue
 
 ;--------------------------- teacher ----------------------------------------
 
 Teacher:
        ld  (iy+12),5           ;enable flashing cursor
        ret                     ;continue
 
 ;--------------------------- teacher ----------------------------------------
 
 Teacher:
        ld  (iy+12),5           ;enable flashing cursor
-       cal _clrScrn
-       cal _homeup             ;top left
+       cal _clrWindow          ;top left
        ld  hl,txt_teacher
        cal _puts               ;display message
        ld  hl,txt_teacher
        cal _puts               ;display message
+       cal releasekeys
 
 teacherloop:
        cal _getkey             ;enter low-power mode and wait for key
 
 teacherloop:
        cal _getkey             ;enter low-power mode and wait for key
@@ -642,6 +644,7 @@ teacherloop:
        jr  nz,teacherloop      ;no, wait some more
 
        ld  (iy+12),0           ;disable cursor
        jr  nz,teacherloop      ;no, wait some more
 
        ld  (iy+12),0           ;disable cursor
+       cal releasekeys
        jp  disp_icons          ;+ret
 
 teacherans:
        jp  disp_icons          ;+ret
 
 teacherans:
@@ -661,8 +664,8 @@ quit:       im  1                   ;release keyfix procedure
        set 2,(iy+13)           ;set back screen scrolling
        xor a
        ld (_asapvar+1),a       ;next Asm( run will reload the program
        set 2,(iy+13)           ;set back screen scrolling
        xor a
        ld (_asapvar+1),a       ;next Asm( run will reload the program
-       ld  hl,GRAPH_MEM        ;graph-screen location
-       ld  de,GRAPH_MEM+1
+       ld  hl,dispbuffer       ;graph-screen location
+       ld  de,dispbuffer+1
        ld  (hl),a
        ld  bc,1024-1           ;do it 1024 times = entire screen
        ldir
        ld  (hl),a
        ld  bc,1024-1           ;do it 1024 times = entire screen
        ldir
@@ -672,7 +675,7 @@ quit:       im  1                   ;release keyfix procedure
 ;--------------------------- display ----------------------------------------
 
 Display_Screen:
 ;--------------------------- display ----------------------------------------
 
 Display_Screen:
-       ld  hl,GRAPH_MEM        ;from buffer (top left)
+       ld  hl,dispbuffer       ;from buffer (top left)
        ld  de,VIDEO_MEM        ;to real screen (top left)
        ld  c,56                ;display height = 64 bytes (minus 8 for bar)
 displayloop:
        ld  de,VIDEO_MEM        ;to real screen (top left)
        ld  c,56                ;display height = 64 bytes (minus 8 for bar)
 displayloop:
@@ -921,6 +924,7 @@ inc_armor:
 doincarmor:
        add a,6                 ;add 6 to armor
        ld  (your_armor),a      ;change armor
 doincarmor:
        add a,6                 ;add 6 to armor
        ld  (your_armor),a      ;change armor
+       ret
 
 select:
        ld  hl,your_pickup      ;select pickups
 
 select:
        ld  hl,your_pickup      ;select pickups
@@ -1065,7 +1069,7 @@ fire_laser:
        jr  nc,_nolc            ;jump if no carry = no overflow = a<=255
        inc b                   ;a>255 so increase bc by 256
 _nolc: ld  c,a                 ;c = (Y*16+X/8) mod 256
        jr  nc,_nolc            ;jump if no carry = no overflow = a<=255
        inc b                   ;a>255 so increase bc by 256
 _nolc: ld  c,a                 ;c = (Y*16+X/8) mod 256
-       ld  hl,GRAPH_MEM        ;save-location
+       ld  hl,dispbuffer       ;save-location
        add hl,bc               ;bc = Y*16+X/8: hl=screen address
        ld  a,15                ;128/8=16=screen width ** minus one (inc a ^^)
        sub d                   ;minus x-start (d=X/8)
        add hl,bc               ;bc = Y*16+X/8: hl=screen address
        ld  a,15                ;128/8=16=screen width ** minus one (inc a ^^)
        sub d                   ;minus x-start (d=X/8)
@@ -1417,7 +1421,7 @@ chk_noenemy:
        ex  de,hl               ;de=hl=usable enemy
 
 place_enemy:                   ;de = enemy+1
        ex  de,hl               ;de=hl=usable enemy
 
 place_enemy:                   ;de = enemy+1
-       ld  bc,0                ;0..0
+       ld  bc,0                ;0..nrlvlenemies
 nrlvlenemies =$-1              ;=nr of enemies minus 1
        cal Random              ;random enemy b..b+c = 0..nrenemies-1
        ld  b,0
 nrlvlenemies =$-1              ;=nr of enemies minus 1
        cal Random              ;random enemy b..b+c = 0..nrenemies-1
        ld  b,0
@@ -1430,9 +1434,11 @@ nrlvlenemies =$-1                ;=nr of enemies minus 1
        dec de                  ;goto hp64 (before occ)
        ldi                     ;set hp64
        ldi                     ;set hitpoints+occ of enemy class
        dec de                  ;goto hp64 (before occ)
        ldi                     ;set hp64
        ldi                     ;set hitpoints+occ of enemy class
-       ldi                     ;set enemy class (nr)
+       ld  a,(hl)              ;save sprite-offset/2 (ldi decs bc so in a)
+       ldi                     ;set sprite
        ldi                     ;set x-position
 
        ldi                     ;set x-position
 
+       ld  c,a                 ;c=sprite
        ld  a,(hl)              ;load placeInfo
        inc hl
        dec a                   ;is it 1?
        ld  a,(hl)              ;load placeInfo
        inc hl
        dec a                   ;is it 1?
@@ -1448,8 +1454,15 @@ lure_enemy:                      ;2nd possibility: luring enemy
        ld  a,(y)               ;place at same y-pos as YOUR ship
        jr  ypos_OK
 random_enemy:
        ld  a,(y)               ;place at same y-pos as YOUR ship
        jr  ypos_OK
 random_enemy:
-       ld  bc,256*51           ;range=0..51
-       cal Random
+       ld  b,0                 ;bc = enemy sprite offset / 2
+       ld  ix,spr_enemy00      ;first enemy sprite
+       add ix,bc               ;add offset for current enemy
+       add ix,bc               ;twice (offset stored as offset/2)
+       ld  a,64-8              ;=57=screen height (8 is scorebar)
+       sub (ix+1)              ;minus sprite height=bottom
+       ld  c,b                 ;range=0 to...
+       ld  b,a                 ;...57-y
+       cal Random              ;random value on screen
 ypos_OK:                       ;random value successfully created
        ld  (de),a              ;save y-position
        inc de                  ;@movecounter
 ypos_OK:                       ;random value successfully created
        ld  (de),a              ;save y-position
        inc de                  ;@movecounter
@@ -1641,15 +1654,23 @@ normal_enemy:
        cal moving_enemy
        dec hl
 
        cal moving_enemy
        dec hl
 
+       ld  a,e                 ;new y value
+       cp  57
+       jr  c,enemyonscreenY    ;=on screen
+       cp  -20                 ;moved off at top
+       ld  e,0                 ;reset to top
+       jr  nc,enemyonscreenY
+       ld  e,57                ;otherwise reset to bottom
+enemyonscreenY:
+       ld  (hl),e              ;store new y
+       dec hl                  ;@x
+
        ld  a,d                 ;new x value
        cp  128                 ;x<128
        ld  a,d                 ;new x value
        cp  128                 ;x<128
-       jr  c,enemyonscreen     ;=on screen
+       jr  c,enemyonscreenX    ;=on screen
        cp  -7                  ;x<=-8
        jr  c,remove_enemy      ;=off screen
        cp  -7                  ;x<=-8
        jr  c,remove_enemy      ;=off screen
-enemyonscreen:
-
-       ld  (hl),e              ;store new y
-       dec hl                  ;@x
+enemyonscreenX:
        ld  (hl),d              ;store new x
        ld  a,c                 ;a = enemy type
        or  a                   ;type 0? (pickup)
        ld  (hl),d              ;store new x
        ld  a,c                 ;a = enemy type
        or  a                   ;type 0? (pickup)
@@ -1718,29 +1739,29 @@ moveleft:
 moveright:
        inc d
 moveXdone:
 moveright:
        inc d
 moveXdone:
-       res 7,a
+       res 7,a                 ;01111111=movetype:
        and a
        and a
-       ret z                   ;type 0 = don't move
+       ret z                   ;0 = don't move
        dec a
        dec a
-       jr  z,movetype_updown   ;1 = up / down
+       jr  z,movetype_updown   ;1 = 0 >< up / down
        dec a
        dec a
-       jr  z,movetype_vslow    ;2 = 1/4 speed
+       jr  z,movetype_vslow    ;2 = .75 >>
        dec a
        dec a
-       jr  z,movetype_slow     ;3 = 1/2 speed
+       jr  z,movetype_slow     ;3 = .5 >>
        dec a
        dec a
-       jr  z,movetype_fast     ;3 = 1.5x speed
+       jr  z,movetype_fast     ;4 = .5 <<
        dec a
        dec a
-       jr  z,movetype_vfast    ;4 = 2x speed
+       jr  z,movetype_vfast    ;5 = 1 <<
        dec a
        dec a
-       jr  z,movetype_smart    ;5
+       jr  z,movetype_smart    ;6
        dec a
        dec a
-       jr  z,movetype_lure     ;6 = move y towards you
+       jr  z,movetype_lure     ;7 = 1 >> move y towards you
        dec a
        dec a
-       jr  z,movetype_slowlure ;7 = lure 1/2 speed
+       jr  z,movetype_slowlure ;8 = 1 >> lure 1/2 speed
        dec a
        dec a
-       jr  z,movetype_stoplure ;8 = slowlure; stop at x=99
+;      jr  z,movetype_stoplure ;9 = 1 >> slowlure; stop at x=99
 ;      dec a
 ;      dec a
-;      jr  z,movetype_fulllure ;9 = x+y towards you 1/2 speed
+;      jr  z,movetype_fulllure ;10 = x+y towards you 1/2 speed
 
 movetype_fulllure:
        ld  a,(timer)
 
 movetype_fulllure:
        ld  a,(timer)
@@ -1749,28 +1770,28 @@ movetype_fulllure:
        cal movetype_lure
        ld  a,(x)
        cp  d
        cal movetype_lure
        ld  a,(x)
        cp  d
-       jr  c,lure_left
+       ret c                   ;move left (already did)
 lure_right:
 lure_right:
-       inc d
-       ret
-lure_left:
-       dec d
+       inc d                   ;already moved left, so move right
+moverightonce:
+       inc d                   ;twice (=+1)
        ret
 
        ret
 
-movetype_stoplure:
-       ld  a,100
-       cp  d
-       jr  c,movetype_slowlure
-       inc d                   ;x<100: full stop
 movetype_slowlure:
        ld  a,(timer)
 movetype_slowlure:
        ld  a,(timer)
-       and 1
-       ret z
+       and 1                   ;half the time
+       jr  z,moverightonce     ;dont move at all (compensate move left +ret)
 movetype_lure:
 movetype_lure:
+       ld  a,104
+       cp  d
+       jr  c,dothelurethingy
+       inc d                   ;x<106: full stop
+dothelurethingy:
        ld  a,(y)
        cp  e
        ld  a,(y)
        cp  e
-       jr  c,lure_up
-lure_down:
+       ret z                   ;don't move if equal
+       jr  c,lure_up           ;below you then move up
+lure_down:                     ;above then move down
        inc e
        ret
 lure_up:
        inc e
        ret
 lure_up:
@@ -1953,7 +1974,7 @@ storyLine:
 
        psh hl
        ld  hl,VIDEO_MEM        ;copy text
 
        psh hl
        ld  hl,VIDEO_MEM        ;copy text
-       ld  de,GRAPH_MEM        ;to GRAPH_MEM
+       ld  de,dispbuffer       ;to GRAPH_MEM
        ld  bc,1024             ;entire screen
        ldir
        cal _clrLCD
        ld  bc,1024             ;entire screen
        ldir
        cal _clrLCD
@@ -2008,7 +2029,7 @@ curline =$-1
        add hl,de               ;go to ymin
        ex  de,hl               ;put into de again
 
        add hl,de               ;go to ymin
        ex  de,hl               ;put into de again
 
-       ld  hl,GRAPH_MEM
+       ld  hl,dispbuffer
        add hl,bc               ;hl->logo
 
        sub 64                  ;a=a-64
        add hl,bc               ;hl->logo
 
        sub 64                  ;a=a-64
@@ -2148,7 +2169,7 @@ no_multiples:
        ld  ix,spr_icon
        cal putwidesprite
 iconsdone:
        ld  ix,spr_icon
        cal putwidesprite
 iconsdone:
-       ld  hl,GRAPH_MEM        ;normal game-screen
+       ld  hl,dispbuffer       ;normal game-screen
        ld  (PutWhere),hl       ;set sprite-position to normal screen
 
  pop ix \ pop hl \ pop de \ pop bc
        ld  (PutWhere),hl       ;set sprite-position to normal screen
 
  pop ix \ pop hl \ pop de \ pop bc
@@ -2264,7 +2285,7 @@ RandomY:                  ;HL = random Y 0..50 right side ((1..51)*16-1)
        add hl,hl
        add hl,hl               ;hl = 1..51 * 16 (left side at random y)
        dec hl                  ;hl = 0..50 * 16 (" at right side of screen)
        add hl,hl
        add hl,hl               ;hl = 1..51 * 16 (left side at random y)
        dec hl                  ;hl = 0..50 * 16 (" at right side of screen)
-       ld  de,GRAPH_MEM
+       ld  de,dispbuffer
        add hl,de               ;position on screen
        pop bc
        ret
        add hl,de               ;position on screen
        pop bc
        ret
@@ -2331,7 +2352,6 @@ save_hi:
        ld  hl,_asapvar         ;find own variable
        rst 20h                 ;cal _ABS_MOV10TOOP1
        rst 10h                 ;cal _FINDSYM
        ld  hl,_asapvar         ;find own variable
        rst 20h                 ;cal _ABS_MOV10TOOP1
        rst 10h                 ;cal _FINDSYM
-       ret c                   ;not found? who cares...
 
        xor a
         ld  hl,4+storehi_start-_asm_exec_ram
 
        xor a
         ld  hl,4+storehi_start-_asm_exec_ram
@@ -2350,7 +2370,6 @@ save_lvl:
        ld  hl,_asapvar         ;find own variable
        rst 20h                 ;cal _ABS_MOV10TOOP1
        rst 10h                 ;cal _FINDSYM
        ld  hl,_asapvar         ;find own variable
        rst 20h                 ;cal _ABS_MOV10TOOP1
        rst 10h                 ;cal _FINDSYM
-       ret c                   ;not found? who cares...
 
        xor a
        ld  hl,4+storesave_start-_asm_exec_ram
 
        xor a
        ld  hl,4+storesave_start-_asm_exec_ram
@@ -2894,7 +2913,7 @@ findpixel:
        xor a
 FPbit =$+1
        set 0,a
        xor a
 FPbit =$+1
        set 0,a
-       ld  de,GRAPH_MEM        ;screen base position (where x+y=0)
+       ld  de,dispbuffer       ;screen base position (where x+y=0)
 PutWhere =$-2
        add hl,de
        ret
 PutWhere =$-2
        add hl,de
        ret
@@ -2925,20 +2944,20 @@ spr_ship01i:
 spr_ship02:
        .db 7,7         ;ship beta class
        .db %11100000   ;███
 spr_ship02:
        .db 7,7         ;ship beta class
        .db %11100000   ;███
-       .db %11110000   ;████
+       .db %11111000   ;█████
        .db %01111100   ; █████
        .db %01110010   ; ███  █
        .db %01111100   ; █████
        .db %01111100   ; █████
        .db %01110010   ; ███  █
        .db %01111100   ; █████
-       .db %11110000   ;████
+       .db %11111000   ;█████
        .db %11100000   ;███
 spr_ship02i:
        .db 8,7
        .db %11100010   ;███   █
        .db %11100000   ;███
 spr_ship02i:
        .db 8,7
        .db %11100010   ;███   █
-       .db %11110001   ;████   █
+       .db %11111001   ;█████  █
        .db %01111101   ; █████ █
        .db %01110011   ; ███  ██
        .db %01111101   ; █████ █
        .db %01111101   ; █████ █
        .db %01110011   ; ███  ██
        .db %01111101   ; █████ █
-       .db %11110001   ;████   █
+       .db %11111001   ;█████  █
        .db %11100010   ;███   █
 
 spr_ship03:
        .db %11100010   ;███   █
 
 spr_ship03:
@@ -2987,7 +3006,7 @@ spr_multiple:
        .db %11001100   ; ██  ██
        .db %01111000   ;  ████
 
        .db %11001100   ; ██  ██
        .db %01111000   ;  ████
 
-;-------------------------------- explosion ---------------------------------
+;-------------------------------- explosion--------------------------------
 
 spr_explosion:
        .db 8,6         ;1
 
 spr_explosion:
        .db 8,6         ;1
@@ -3197,7 +3216,7 @@ bullettable:
 maxnrweapons = 8+1
 weapondata:
        .db 1,1,%00000000,0,%00000000,0,%00010010,3     ;1 single fire
 maxnrweapons = 8+1
 weapondata:
        .db 1,1,%00000000,0,%00000000,0,%00010010,3     ;1 single fire
-       .db 6,1,%00000000,0,%00000000,0,%00010011,3     ;2 fast single
+       .db 4,1,%00000000,0,%00000000,0,%00010011,3     ;2 fast single
        .db 1,1,%00000000,0,%00010010,0,%00010010,6     ;3 double
        .db 1,1,%01110010,2,%10010010,2,%00110010,2     ;4 triple
        .db 3,2,%01110011,2,%10010011,2,%00110011,2     ;5
        .db 1,1,%00000000,0,%00010010,0,%00010010,6     ;3 double
        .db 1,1,%01110010,2,%10010010,2,%00110010,2     ;4 triple
        .db 3,2,%01110011,2,%10010011,2,%00110011,2     ;5
@@ -3215,21 +3234,21 @@ collidedamage = 4
 ;------------------------------------ bar -----------------------------------
 
 spr_lship:
 ;------------------------------------ bar -----------------------------------
 
 spr_lship:
-       .db 5,3
-       .db %11100000
-       .db %01111000
-       .db %11100000
-lshipsize = 5
+       .db 5,3                 ;li'l ship indicating lives left
+       .db %11100000           ;███
+       .db %01111000           ; ████
+       .db %11100000           ;███
+lshipsize = 5                  ;space between two ship icons
 
 spr_icon:
 
 spr_icon:
-       .db 16,7        ;selected .......:.......:
-       .db %11111111           ; ████████████████
-       .db %11000000           ; ██             █
-       .db %11000000           ; ██             █
-       .db %11000000           ; ██             █
-       .db %11000000           ; ██             █
-       .db %11000000           ; ██             █
-       .db %11111111           ; ████████████████
+       .db 16,7        ;selected.......:.......:
+       .db %11111111           ;████████████████
+       .db %11000000           ;██             █
+       .db %11000000           ;██             █
+       .db %11000000           ;██             █
+       .db %11000000           ;██             █
+       .db %11000000           ;██             █
+       .db %11111111           ;████████████████
        .db 7
        .db %11111111
        .db %00000001
        .db 7
        .db %11111111
        .db %00000001
@@ -3239,14 +3258,14 @@ spr_icon:
        .db %00000001
        .db %11111111
 spr_icon00:
        .db %00000001
        .db %11111111
 spr_icon00:
-       .db 16,7        ;unused   .......:.......:
-       .db %10101010           ; █ █ █ █ █ █ █ █
-       .db %11010101           ; ██ █ █ █ █ █ █ █
-       .db %10101010           ; █ █ █ █ █ █ █ █
-       .db %11010101           ; ██ █ █ █ █ █ █ █
-       .db %10101010           ; █ █ █ █ █ █ █ █
-       .db %11010101           ; ██ █ █ █ █ █ █ █
-       .db %10101010           ; █ █ █ █ █ █ █ █
+       .db 16,7        ;unused  .......:.......:
+       .db %10101010           ;█ █ █ █ █ █ █ █
+       .db %11010101           ;██ █ █ █ █ █ █ █
+       .db %10101010           ;█ █ █ █ █ █ █ █
+       .db %11010101           ;██ █ █ █ █ █ █ █
+       .db %10101010           ;█ █ █ █ █ █ █ █
+       .db %11010101           ;██ █ █ █ █ █ █ █
+       .db %10101010           ;█ █ █ █ █ █ █ █
        .db 7
        .db %10101010
        .db %01010101
        .db 7
        .db %10101010
        .db %01010101
@@ -3256,14 +3275,14 @@ spr_icon00:
        .db %01010101
        .db %10101010
 spr_icon01:
        .db %01010101
        .db %10101010
 spr_icon01:
-       .db 16,7        ;armor  ; .......:.......:
-       .db %10000111           ; █    ███████
-       .db %10011000           ; █  ██       ██
-       .db %10110011           ; █ ██  ████   ██
-       .db %10110000           ; █ ██    ████ ██
-       .db %10110011           ; █ ██  ████   ██
-       .db %10011000           ; █  ██       ██
-       .db %10000111           ; █    ███████
+       .db 16,7        ;armor  ;.......:.......:
+       .db %10000111           ;█    ███████    ▒
+       .db %10011000           ;█  ██       ██  ▒
+       .db %10110011           ;█ ██  ████   ██ ▒
+       .db %10110000           ;█ ██    ████ ██ ▒
+       .db %10110011           ;█ ██  ████   ██ ▒
+       .db %10011000           ;█  ██       ██  ▒
+       .db %10000111           ;█    ███████    ▒
        .db 7
        .db %11110000
        .db %00001100
        .db 7
        .db %11110000
        .db %00001100
@@ -3273,14 +3292,14 @@ spr_icon01:
        .db %00001100
        .db %11110000
 spr_icon02:
        .db %00001100
        .db %11110000
 spr_icon02:
-       .db 16,7        ;tailbeam .......:.......:
-       .db %10000000           ; █
-       .db %10000011           ; █     ██
-       .db %10000001           ; █      ███
-       .db %10111011           ; █ ███ ██████  ██
-       .db %10000001           ; █      ███
-       .db %10000011           ; █     ██
-       .db %10000000           ; █
+       .db 16,7        ;tailbeam.......:.......:
+       .db %10000000           ;█               ▒
+       .db %10000011           ;█     ██        ▒
+       .db %10000001           ;█      ███      ▒
+       .db %10111011           ;█ ███ ██████  ██▒
+       .db %10000001           ;█      ███      ▒
+       .db %10000011           ;█     ██        ▒
+       .db %10000000           ;█               ▒
        .db 7
        .db %00000000
        .db %00000000
        .db 7
        .db %00000000
        .db %00000000
@@ -3290,14 +3309,14 @@ spr_icon02:
        .db %00000000
        .db %00000000
 spr_icon02b:
        .db %00000000
        .db %00000000
 spr_icon02b:
-       .db 16,7        ;torpedo  .......:.......:
-       .db %10111000           ; █ ███      █ █ █
-       .db %10011100           ; █  ███     █ █ █
-       .db %10111000           ; █ ███    █  █ █
-       .db %10000000           ; █       ███ █ █
-       .db %11100001           ; ███    ████  █ █
-       .db %10011000           ; █  ██   ████ █ █
-       .db %11100110           ; ███  ██   ██  █
+       .db 16,7        ;torpedo .......:.......:
+       .db %10111000           ;█ ███      █ █ █▒
+       .db %10011100           ;█  ███     █ █ █▒
+       .db %10111000           ;█ ███    █  █ █ ▒
+       .db %10000000           ;█       ███ █ █ ▒
+       .db %11100001           ;███    ████  █ █▒
+       .db %10011000           ;█  ██   ████ █ █▒
+       .db %11100110           ;███  ██   ██  █ ▒
        .db 7
        .db %00010101
        .db %00010101
        .db 7
        .db %00010101
        .db %00010101
@@ -3307,14 +3326,14 @@ spr_icon02b:
        .db %11110101
        .db %00110010
 spr_icon03:
        .db %11110101
        .db %00110010
 spr_icon03:
-       .db 16,7        ;bullets  .......:.......:
-       .db %10000000           ; █       ██
-       .db %10000011           ; █     █████ ▒▒
-       .db %10011000           ; █  ██   ██  ▒▒
-       .db %11111100           ; ██████      ▒▒
-       .db %10011000           ; █  ██   ██  ▒▒
-       .db %10000011           ; █     █████ ▒▒
-       .db %10000000           ; █       ██
+       .db 16,7        ;bullets .......:.......:
+       .db %10000000           ;█       ██      ▒
+       .db %10000011           ;█     █████ ▒▒▒ 
+       .db %10011000           ;█  ██   ██  ▒▒▒ 
+       .db %11111100           ;██████      ▒▒▒ 
+       .db %10011000           ;█  ██   ██  ▒▒▒ 
+       .db %10000011           ;█     █████ ▒▒▒ 
+       .db %10000000           ;█       ██      ▒
        .db 7
        .db %11000000
        .db %11100000
        .db 7
        .db %11000000
        .db %11100000
@@ -3324,14 +3343,14 @@ spr_icon03:
        .db %11100000
        .db %11000000
 spr_icon04:
        .db %11100000
        .db %11000000
 spr_icon04:
-       .db 16,7        ;laser    .......:.......:
-       .db %10000000           ; █
-       .db %10001010           ; █   █ █     ▒▒
-       .db %11101100           ; ███ ██      ▒▒
-       .db %11110111           ; ████ ███████▒▒▒█
-       .db %11101100           ; ███ ██      ▒▒
-       .db %10001010           ; █   █ █     ▒▒
-       .db %10000000           ; █
+       .db 16,7        ;laser   .......:.......:
+       .db %10000000           ;█               ▒
+       .db %10001010           ;█   █ █     ▒▒▒ 
+       .db %11101100           ;███ ██      ▒▒▒ 
+       .db %11110111           ;████ ███████▒▒▒█▒
+       .db %11101100           ;███ ██      ▒▒▒ 
+       .db %10001010           ;█   █ █     ▒▒▒ 
+       .db %10000000           ;█               ▒
        .db 7
        .db %00000000
        .db %00000000
        .db 7
        .db %00000000
        .db %00000000
@@ -3341,14 +3360,14 @@ spr_icon04:
        .db %00000000
        .db %00000000
 spr_icon05:
        .db %00000000
        .db %00000000
 spr_icon05:
-       .db 16,7        ;multiple .......:.......:
-       .db %10000011           ; █     ███
-       .db %10000001           ; █      ████  ██
-       .db %10000001           ; █      ████
-       .db %10000011           ; █     ███
-       .db %10011000           ; █  ██
-       .db %10111100           ; █ ████  ██    ██
-       .db %10011000           ; █  ██
+       .db 16,7        ;multiple.......:.......:
+       .db %10000011           ;█     ███       ▒
+       .db %10000001           ;█      ████  ██ ▒
+       .db %10000001           ;█      ████     ▒
+       .db %10000011           ;█     ███       ▒
+       .db %10011000           ;█  ██           ▒
+       .db %10111100           ;█ ████  ██    ██▒
+       .db %10011000           ;█  ██           ▒
        .db 7
        .db %10000000
        .db %11100110
        .db 7
        .db %10000000
        .db %11100110
@@ -3366,7 +3385,7 @@ spr_dividerline:
 txt_email:     .db "www.shiar.org ",127 ;title screen
                .db " shiar0@hotmail.com",0
 _txt_email = $3A01 ;$3A1E=just email
 txt_email:     .db "www.shiar.org ",127 ;title screen
                .db " shiar0@hotmail.com",0
 _txt_email = $3A01 ;$3A1E=just email
-txt_about:     .db "v0.97.73 ",127," by Shiar",0 ;right behind txt_email
+txt_about:     .db "v0.98.77 ",127," by Shiar",0 ;right behind txt_email
 _txt_about = $3321
 txt_menu1:     .db "NEW GAME",0
 txt_menu2:     .db "CONTINUE",0
 _txt_about = $3321
 txt_menu1:     .db "NEW GAME",0
 txt_menu2:     .db "CONTINUE",0
@@ -3380,37 +3399,35 @@ txt_score:      .db "Score",0
 txt_hiscore:   .db "Hiscore",0
 
 txt_pressenter:        .db "Enter to continue",0 ;pause
 txt_hiscore:   .db "Hiscore",0
 
 txt_pressenter:        .db "Enter to continue",0 ;pause
-txt_teacher:   .db "(2",Lpi,"*.97)/sin 13",0 ;boss
-txt_teacherans:        .db Lneg,"14.5053971725",0
+txt_teacher:   .db "(2",Lpi,"*.98)/sin 13",0 ;teacher
+txt_teacherans:        .db Lneg,"14.6549373495",0
 
 ;---------------------------- save data -------------------------------------
 
 storehi_start:
 
 ;---------------------------- save data -------------------------------------
 
 storehi_start:
-hiscore                .dw 0
-hiname         .db "shiar.97",0
+hiscore                .dw 0                   ;default hiscore
+hiname         .db "shiar.98",0        ;   "       "    name
 storehi_end:
 
 storehi_end:
 
-storesave_start:
-level          .db $01                 ;level number
-levelp         .dw level01             ;pointer to level data
-pickuptimer    .db $04                 ;counts when to place a pickup
-your_ship      .dw spr_ship01          ;your sprite
-your_score     .dw $0000               ;current score
-
-your_pickup    .db $04
-your_occ       .db $00                 ;0=normal 1..16=exploding
-your_inv       .db $00                 ;invincibility left
-your_armor     .db $0a                 ;HP left
-your_lives     .db $03                 ;
-
-your_weapon    .db $00                 ;current weapon upgrade
-your_multiples .db $00                 ;multiples present
-your_tail      .db $01                 ;tail beam present
+storesave_start:                       ;--SAVED GAME--                 defs:
+level          .db  1                  ;level number                   1
+levelp         .dw level01             ;pointer to level data          l01
+pickuptimer    .db  4                  ;counts when to place a pickup  4
+your_ship      .dw spr_ship01          ;your sprite                    sprs1
+your_score     .dw  0                  ;current score                  0
+your_pickup    .db  0                  ;pickups already picked up      0
+your_occ       .db  0                  ;0=normal 1..16=exploding       0
+your_inv       .db  0                  ;invincibility left             0
+your_armor     .db 12                  ;HP left                        12
+your_lives     .db  3                  ;lives left                     3
+your_weapon    .db  0                  ;current weapon upgrade         0
+your_multiples .db  0                  ;multiples present              0
+your_tail      .db  0                  ;tail beam present              0
 storesave_end:
 
 time2invert:   .db 0                   ;time until b<>w switch (0 at startup)
 
 storesave_end:
 
 time2invert:   .db 0                   ;time until b<>w switch (0 at startup)
 
-;XLlevelsdata:---------------------------------------------------------------
+;------------------------------ levels data ---------------------------------
 
 ;format:boss: [moveType] [enemyType]
 ;      @level: [nr.dif.enemies]x [enemy nr]
 
 ;format:boss: [moveType] [enemyType]
 ;      @level: [nr.dif.enemies]x [enemy nr]
@@ -3429,25 +3446,31 @@ level00:
        .db $52,$36,"by Shiar"                  ,0,0,$19,$23
        .db $ff                         ;story end
 
        .db $52,$36,"by Shiar"                  ,0,0,$19,$23
        .db $ff                         ;story end
 
+       .db 20 ;boss for level01
+level01:                       ;intro-like, just a few enemies to begin with
+       .db 2,6,8
+       .db 26,70,20,%00010000,0,0,0
+       .db 1,2,3,4,5,6,6,5,4,3,4,5,4,5,6,5
+       .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
+       .db 1,1
+
        .db 21
        .db 21
-level01:               ;first wave of enemies; easeey
-       .db 2,6,7
-       .db 20,60,60,%00010000,0,0,0
+level02:                       ;first wave of enemies; easeey
+       .db 3,6,7,8
+       .db 20,60,60,%00100000,0,0,0
        .db 1,2,3,4,5,6,6,5,4,3,4,5,4,5,6,5
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
        .db 1,1
 
        .db 22
        .db 1,2,3,4,5,6,6,5,4,3,4,5,4,5,6,5
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
        .db 1,1
 
        .db 22
-level02:               ;some more enemies
-       .db 4,6,7,7,8
-       .db 17,40,75,%00010000,0,0,0
+level03:                       ;some more enemies
+       .db 4,7,8,9,10
+       .db 17,40,75,%00110000,0,0,0
        .db 1,2,3,4,5,6,6,5,4,3,4,5,4,5,6,5
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
        .db 1,1
 
        .db 1,2,3,4,5,6,6,5,4,3,4,5,4,5,6,5
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
        .db 1,1
 
-       .db 0
-
-       .db 0
+       .db 0,0 ;storyline ID
        .db 1,1,"Long-Range scanners are ",
        .db     "showing",0,1
        .db 1,8,"lots of enemy vessels on ",
        .db 1,1,"Long-Range scanners are ",
        .db     "showing",0,1
        .db 1,8,"lots of enemy vessels on ",
@@ -3460,18 +3483,18 @@ level02:                ;some more enemies
        .db 1,38+5,$FF
 
        .db 23
        .db 1,38+5,$FF
 
        .db 23
-level04:               ;light asteroid belt
+level04:                       ;light asteroid belt
        .db 3,1,2,4
        .db 3,1,2,4
-       .db 12,24,80,%00011000
+       .db 12,24,80,%00111000
        .db 2,0,0
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1     ;16
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
        .db 1,1
 
        .db 24
        .db 2,0,0
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1     ;16
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
        .db 1,1
 
        .db 24
-level05:               ;inside asteroid belt
+level05:                       ;inside asteroid belt
        .db 5,1,2,3,4,5
        .db 5,1,2,3,4,5
-       .db 6,10,180,%00101000
+       .db 6,10,180,%01011000
        .db 2,0,0
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1     ;16
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
        .db 2,0,0
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1     ;16
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
@@ -3480,7 +3503,7 @@ level05:          ;inside asteroid belt
        .db 25
 level02a:
        .db 3,4,5,6
        .db 25
 level02a:
        .db 3,4,5,6
-       .db 30,1,40,%00010000
+       .db 30,1,40,%01000000
        .db 0,0,0
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1     ;16
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
        .db 0,0,0
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1     ;16
        .db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
@@ -3554,6 +3577,7 @@ level07:
 
 ;format: [HP64] [000000:HP 00:occ] [sprite] [xpos] [appearance(ypos)]
 ;       [movetype] [time2fire] [firefreq]
 
 ;format: [HP64] [000000:HP 00:occ] [sprite] [xpos] [appearance(ypos)]
 ;       [movetype] [time2fire] [firefreq]
+;appearances: 1=random; 2=lure; 3=halflure
 ;case movetype:
 ;  1=updown; 2=1/4x; 3=1/2x; 4=1.5x; 5=2x; 6=smart; 7=y-lure;
 ;  8=y-lure 1/2x; 9=8 stop at x=99; 10=x+y-lure 1/2x
 ;case movetype:
 ;  1=updown; 2=1/4x; 3=1/2x; 4=1.5x; 5=2x; 6=smart; 7=y-lure;
 ;  8=y-lure 1/2x; 9=8 stop at x=99; 10=x+y-lure 1/2x
@@ -3564,41 +3588,33 @@ enemyspecs:
        .db 0,%01011010,(spr_enemyA3-spr_enemy00)/2,128,1,4,0,0
        .db 1,%00001010,(spr_enemyA4-spr_enemy00)/2,128,1,3,0,0
        .db 0,%00111110,(spr_enemyA4-spr_enemy00)/2,128,1,5,0,0
        .db 0,%01011010,(spr_enemyA3-spr_enemy00)/2,128,1,4,0,0
        .db 1,%00001010,(spr_enemyA4-spr_enemy00)/2,128,1,3,0,0
        .db 0,%00111110,(spr_enemyA4-spr_enemy00)/2,128,1,5,0,0
-;6=basic enemy
-       .db 0,%00100110,(spr_enemy13-spr_enemy00)/2,128,1,0,1,0
-;7=normal enemy
-       .db 0,%00101110,(spr_enemy04-spr_enemy00)/2,128,3,0,19,39
-;8=jumping bug (up/down)
-       .db 0,%00001111,(spr_enemy12-spr_enemy00)/2,128,2,1,87,5
-
-       .db 0,%00000110,(spr_enemy04-spr_enemy00)/2,2,0,0,0,0   ;9=
-       .db 0,%00000111,(spr_enemy05-spr_enemy00)/2,3,0,0,0,0   ;10=
-       .db 0,%00001011,(spr_enemy06-spr_enemy00)/2,2,0,0,0,0   ;11=
-
-       .db 0,%00011011,(spr_enemy07-spr_enemy00)/2,3,0,0,0,0   ;12=
-       .db 0,%00000011,(spr_enemy07-spr_enemy00)/2,1,0,0,0,0   ;13=
-       .db 0,%00000011,(spr_enemy07-spr_enemy00)/2,1,0,0,0,0   ;14=
-       .db 0,%00000011,(spr_enemy07-spr_enemy00)/2,1,0,0,0,0   ;15=
-       .db 0,%00000011,(spr_enemy07-spr_enemy00)/2,1,0,0,0,0   ;16=
-       .db 0,%00000011,(spr_enemy07-spr_enemy00)/2,1,0,0,0,0   ;17=
-       .db 0,%00000011,(spr_enemy07-spr_enemy00)/2,1,0,0,0,0   ;18=
-       .db 0,%00000011,(spr_enemy07-spr_enemy00)/2,1,0,0,0,0   ;19=
-       .db 0,%00000011,(spr_enemy07-spr_enemy00)/2,1,0,0,0,0   ;20=
-
-       .db 1,%00110011,(spr_boss0_1-spr_enemy00)/2,128,1,7,15,10       ;21=sm_boss1
-       .db 1,%01001011,(spr_boss0_2-spr_enemy00)/2,128,3,9,10,9        ;22=sm_boss2
-       .db 2,%00001011,(spr_boss0_3-spr_enemy00)/2,128,1,0,36,14       ;23=asteroid
-       .db 2,%00110011,(spr_boss0_3-spr_enemy00)/2,128,2,0,28,12       ;24=asteroid
-       .db 2,%00000111,(spr_boss0_4-spr_enemy00)/2,128,3,0,18,7        ;25=bigboss1
-       .db 2,%01001011,(spr_boss0_5-spr_enemy00)/2,128,3,0,18,7        ;26=bigboss2
-
-       .db 0,%00000000,0,0,0,0,0,0
-       .db 0,%00000000,0,0,0,0,0,0
-       .db 0,%00000000,0,0,0,0,0,0
-       .db 0,%00000000,0,0,0,0,0,0
-       .db 0,%00000000,0,0,0,0,0,0
-       .db 0,%00000000,0,0,0,0,0,0
-       .db 0,%00000000,0,0,0,0,0,0
+;6-10=basic enemies
+       .db 0,%00010010,(spr_enemyE1-spr_enemy00)/2,128,1,0,10,0 ;weak
+       .db 0,%00110010,(spr_enemyE4-spr_enemy00)/2,128,1,3,6,50 ;slow
+       .db 0,%00100110,(spr_enemyE2-spr_enemy00)/2,128,1,0,1,0
+       .db 0,%00101110,(spr_enemyE3-spr_enemy00)/2,128,3,0,19,39
+       .db 0,%00101010,(spr_enemyE5-spr_enemy00)/2,128,3,4,1,0 ;fast
+;11=jumping bug (up/down)
+       .db 0,%00001111,(spr_enemyN3-spr_enemy00)/2,128,2,1,87,5
+
+       .db 0,%00000011,(spr_enemy00-spr_enemy00)/2,1,0,0,0,0   ;12
+       .db 0,%00000011,(spr_enemy00-spr_enemy00)/2,1,0,0,0,0   ;13
+       .db 0,%00000011,(spr_enemy00-spr_enemy00)/2,1,0,0,0,0   ;14
+       .db 0,%00000011,(spr_enemy00-spr_enemy00)/2,1,0,0,0,0   ;15
+       .db 0,%00000011,(spr_enemy00-spr_enemy00)/2,1,0,0,0,0   ;16
+       .db 0,%00000011,(spr_enemy00-spr_enemy00)/2,1,0,0,0,0   ;17
+       .db 0,%00000011,(spr_enemy00-spr_enemy00)/2,1,0,0,0,0   ;18
+       .db 0,%00000011,(spr_enemy00-spr_enemy00)/2,1,0,0,0,0   ;19
+;20-22=first bosses
+       .db 1,%00101011,(spr_boss0_1-spr_enemy00)/2,127,1,8,20,12       ;20
+       .db 1,%00110011,(spr_boss0_1-spr_enemy00)/2,127,1,8,15,10       ;21
+       .db 1,%01001011,(spr_boss0_2-spr_enemy00)/2,127,3,9,10,9        ;22
+;23-24=asteroid bosses
+       .db 2,%00001011,(spr_boss0_3-spr_enemy00)/2,127,1,10,36,14
+       .db 2,%00110011,(spr_boss0_3-spr_enemy00)/2,127,2,10,28,12
+;25-26=big bosses
+       .db 2,%00000111,(spr_boss0_4-spr_enemy00)/2,127,3,7,18,7        ;25=bigboss1
+       .db 2,%01001011,(spr_boss0_5-spr_enemy00)/2,127,3,7,18,7        ;26=bigboss2
 
 spr_enemy00:
        .db 16,8                        ;pickup
 
 spr_enemy00:
        .db 16,8                        ;pickup
@@ -3657,64 +3673,136 @@ spr_enemyA4:
        .db %01111011                   ; ████ ██
        .db %01001110                   ; █  ███
        .db %00110000                   ;  ██
        .db %01111011                   ; ████ ██
        .db %01001110                   ; █  ███
        .db %00110000                   ;  ██
-spr_enemy04:
-       .db 6,6                         ;enemy type one
-       .db %00111100                   ;   ████
-       .db %01110000                   ;  ███
-       .db %11110000                   ; ████
-       .db %11110000                   ; ████
-       .db %01110000                   ;  ███
-       .db %00111100                   ;   ████
-spr_enemy05:
-       .db 8,6                         ;enemy type two
-       .db %00111111                   ;    █████
-       .db %01111000                   ;  ████
-       .db %11111100                   ; ██████
-       .db %11111100                   ; ██████
-       .db %01111000                   ;  ████
-       .db %00111111                   ;    █████
-spr_enemy06:
-       .db 6,6                         ;enemy type three
-       .db %01111100                   ;  █████
-       .db %11110000                   ; ████
-       .db %11111000                   ; █████
-       .db %11111000                   ; █████
-       .db %11110000                   ; ████
-       .db %01111100                   ;  █████
-spr_enemy06A:
-       .db 6,6                         ;enemy type four
+
+spr_enemyE1:
+       .db 6,7                         ;weak
+       .db %00111100                   ;  ████
+       .db %01000100                   ; █   █
+       .db %10111000                   ;█ ███
+       .db %11100000                   ;███
+       .db %10111000                   ;█ ███
+       .db %01000100                   ; █   █
+       .db %00111100                   ;  ████
+       .db 0
+spr_enemyE2:
+       .db 6,6                         ;weak
+       .db %00111100                   ;  ████
+       .db %01010000                   ; █ █
+       .db %10100000                   ;█ █
+       .db %10100000                   ;█ █
+       .db %01010000                   ; █ █
+       .db %00111100                   ;  ████
+spr_enemyE3:
+       .db 6,6                         ;normal solid (Galaxian enemy)
+       .db %00111100                   ;  ████
+       .db %01110000                   ; ███
+       .db %11110000                   ;████
+       .db %11110000                   ;████
+       .db %01110000                   ; ███
+       .db %00111100                   ;  ████
+spr_enemyE4:
+       .db 6,7
+       .db %00011100                   ;   ███
+       .db %01101000                   ; ██ █
+       .db %10011000                   ;█  ██
+       .db %01110000                   ; ███
+       .db %10011000                   ;█  ██
+       .db %01101000                   ; ██ █
+       .db %00011100                   ;   ███
+       .db 0
+spr_enemyE5:
+       .db 6,6                         ;speedy
+       .db %00011100                   ;   ███
+       .db %01111000                   ; ████
+       .db %11100000                   ;███
+       .db %11100000                   ;███
+       .db %01111000                   ; ████
+       .db %00011100                   ;   ███
+
+spr_enemyG1:
+       .db 8,6                         ;G-Type
+       .db %00111111                   ;   █████
+       .db %01001000                   ; █  █
+       .db %10110100                   ;█ ██ █
+       .db %10110100                   ;█ ██ █
+       .db %01001000                   ; █  █
+       .db %00111111                   ;   █████
+spr_enemyG2:
+       .db 8,6                         ;smaller nacelles
+       .db %00000111                   ;     ███
+       .db %01101100                   ; ██ ██
+       .db %10110100                   ;█ ██ █
+       .db %10110100                   ;█ ██ █
+       .db %01101100                   ; ██ ██
+       .db %00000111                   ;     ███
+spr_enemyG3:
+       .db 8,6                         ;shuttle
+       .db %00001111                   ;    ████
+       .db %01111100                   ; █████
+       .db %10011100                   ;█  ███
+       .db %10011100                   ;█  ███
+       .db %01111100                   ; █████
+       .db %00001111                   ;    ████
+spr_enemyG4:
+       .db 8,6                         ;G-Type solid
+       .db %00111111                   ;   █████
+       .db %01111000                   ; ████
+       .db %11111100                   ;██████
+       .db %11111100                   ;██████
+       .db %01111000                   ; ████
+       .db %00111111                   ;   █████
+spr_enemyG5:
+       .db 6,6                         ;G lost his head; large window ;)
+       .db %01111100                   ; █████
+       .db %10110000                   ;█ ██
+       .db %10111000                   ;█ ███
+       .db %10111000                   ;█ ███
+       .db %10110000                   ;█ ██
+       .db %01111100                   ; █████
+spr_enemyG6:
+       .db 7,6                         ;small G-type
+       .db %00011110                   ;   ████
+       .db %01111000                   ; ████
+       .db %11110000                   ;████
+       .db %11110000                   ;████
+       .db %01111000                   ; ████
+       .db %00011110                   ;   ████
+
+spr_enemyS1:
+       .db 6,6                         ;solid
        .db %00111000                   ;   ███
        .db %01111100                   ;  █████
        .db %11111000                   ; █████
        .db %11111000                   ; █████
        .db %01111100                   ;  █████
        .db %00111000                   ;   ███
        .db %00111000                   ;   ███
        .db %01111100                   ;  █████
        .db %11111000                   ; █████
        .db %11111000                   ; █████
        .db %01111100                   ;  █████
        .db %00111000                   ;   ███
-spr_enemy07:
-       .db 7,6                         ;enemy type five
-       .db %00011110                   ;    ████
-       .db %01111110                   ;  ██████
-       .db %11111100                   ; ██████
-       .db %11111100                   ; ██████
-       .db %01111110                   ;  ██████
-       .db %00011110                   ;    ████
-spr_enemy08:
-       .db 7,6                         ;enemy type six
+spr_enemyS2:
+       .db 7,6                         ;some attack vessel
        .db %00011100                   ;    ███
        .db %01110010                   ;  ███  █
        .db %10101100                   ; █ █ ██
        .db %10101100                   ; █ █ ██
        .db %01110010                   ;  ███  █
        .db %00011100                   ;    ███
        .db %00011100                   ;    ███
        .db %01110010                   ;  ███  █
        .db %10101100                   ; █ █ ██
        .db %10101100                   ; █ █ ██
        .db %01110010                   ;  ███  █
        .db %00011100                   ;    ███
-spr_enemy09:
-       .db 8,6                         ;enemy type seven
+spr_enemyS3:
+       .db 7,6                         ;interceptor
+       .db %00011110                   ;    ████
+       .db %01111110                   ;  ██████
+       .db %11111100                   ; ██████
+       .db %11111100                   ; ██████
+       .db %01111110                   ;  ██████
+       .db %00011110                   ;    ████
+spr_enemyS4:
+       .db 8,6                         ;cheap intercept
        .db %00011011                   ;    ██ ██
        .db %01110110                   ;  ███ ██
        .db %10111100                   ; █ ████
        .db %10111100                   ; █ ████
        .db %01110110                   ;  ███ ██
        .db %00011011                   ;    ██ ██
        .db %00011011                   ;    ██ ██
        .db %01110110                   ;  ███ ██
        .db %10111100                   ; █ ████
        .db %10111100                   ; █ ████
        .db %01110110                   ;  ███ ██
        .db %00011011                   ;    ██ ██
-spr_enemy10:
-       .db 8,7                         ;enemy type eight
+
+spr_enemyN1:
+       .db 8,7                         ;some cool Nemesis-MSX enemy
        .db %00111110                   ;  █████
        .db %11110001                   ;████   █
        .db %00001110                   ;    ███
        .db %00111110                   ;  █████
        .db %11110001                   ;████   █
        .db %00001110                   ;    ███
@@ -3723,8 +3811,8 @@ spr_enemy10:
        .db %11110001                   ;████   █
        .db %00111110                   ;  █████
        .db 0
        .db %11110001                   ;████   █
        .db %00111110                   ;  █████
        .db 0
-spr_enemy11:
-       .db 8,7                         ;enemy type nine
+spr_enemyN2:
+       .db 8,7                         ;
        .db %00111110                   ;  █████
        .db %00011101                   ;   ███ █
        .db %11111111                   ;████ ███
        .db %00111110                   ;  █████
        .db %00011101                   ;   ███ █
        .db %11111111                   ;████ ███
@@ -3733,8 +3821,8 @@ spr_enemy11:
        .db %00011101                   ;   ███ █
        .db %00111110                   ;  █████
        .db 0
        .db %00011101                   ;   ███ █
        .db %00111110                   ;  █████
        .db 0
-spr_enemy12:
-       .db 8,7                         ;enemy type ten
+spr_enemyN3:
+       .db 8,7                         ;Nem3MSX jumper lvl#3
        .db %10111110                   ;█ █████
        .db %01011101                   ; █ ███ █
        .db %01111110                   ; ██████
        .db %10111110                   ;█ █████
        .db %01011101                   ; █ ███ █
        .db %01111110                   ; ██████
@@ -3743,60 +3831,52 @@ spr_enemy12:
        .db %01011101                   ; █ ███ █
        .db %10111110                   ;█ █████
        .db 0
        .db %01011101                   ; █ ███ █
        .db %10111110                   ;█ █████
        .db 0
-spr_enemy13:
-       .db 6,6                         ;enemy type eleven
-       .db %00111100                   ;   ████
-       .db %01010000                   ;  █ █
-       .db %10100000                   ; █ █
-       .db %10100000                   ; █ █
-       .db %01010000                   ;  █ █
-       .db %00111100                   ;   ████
 
 spr_boss0_1:
 
 spr_boss0_1:
-       .db 16,10                       ;boss type one   :
-       .db %00000001                   ;        █████████
-       .db %00001111                   ;     ███████████
-       .db %00111111                   ;   ██████████
-       .db %01011111                   ;  █ ██████
-       .db %10011111                   ; █  █████ █
-       .db %10011111                   ; █  █████ █
-       .db %01011111                   ;  █ ██████
-       .db %00111111                   ;   ██████████
-       .db %00001111                   ;     ███████████
-       .db %00000001                   ;        █████████
+       .db 16,10               ;boss type one..:.......:
+       .db %00000001                   ;       ██████ ██
+       .db %00001110                   ;    ███   █ ███
+       .db %00110010                   ;  ██  █ ████
+       .db %01001101                   ; █  ██ ██
+       .db %11101011                   ;███ █ ██ █
+       .db %11101011                   ;███ █ ██ █
+       .db %01001101                   ; █  ██ ██
+       .db %00110010                   ;  ██  █ ████
+       .db %00001110                   ;    ███   █ ███
+       .db %00000001                   ;       ██████ ██
        .db 10
        .db 10
-       .db %11111111
-       .db %11111110
+       .db %11111011
+       .db %00101110
        .db %11110000
        .db %10000000
        .db %01000000
        .db %01000000
        .db %10000000
        .db %11110000
        .db %11110000
        .db %10000000
        .db %01000000
        .db %01000000
        .db %10000000
        .db %11110000
-       .db %11111110
-       .db %11111111
+       .db %00101110
+       .db %11111011
        .db 0
 spr_boss0_2:
        .db 0
 spr_boss0_2:
-       .db 16,10                       ;boss type two   :
-       .db %11111110                   ; ███████
-       .db %00001111                   ;     █████   ████
-       .db %00111111                   ;   █████████   █
-       .db %01001111                   ;  █  ███████████
-       .db %10001101                   ; █   ██ █ █████
-       .db %10001101                   ; █   ██ █ █████
-       .db %01001111                   ;  █  ███████████
-       .db %00111111                   ;   █████████   █
-       .db %00001111                   ;     █████   ████
-       .db %11111110                   ; ███████
+       .db 16,10               ;boss type two..:.......:
+       .db %11111110                   ;███████
+       .db %00000011                   ;      ███   ████
+       .db %00110101                   ;  ██ █ ████    
+       .db %01111010                   ; ████ █ █  █ ██
+       .db %10001101                   ;█   ██ █ ██ ██
+       .db %10001101                   ;█   ██ █ ██ ██
+       .db %01111010                   ; ████ █ █  █ ██
+       .db %00110101                   ;  ██ █ ████    
+       .db %00000011                   ;      ███   ████
+       .db %11111110                   ;███████
        .db 9
        .db %00000000
        .db %10001111
        .db 9
        .db %00000000
        .db %10001111
-       .db %11100011
-       .db %11111110
-       .db %01111100
-       .db %01111100
-       .db %11111110
-       .db %11100011
+       .db %11100001
+       .db %10010110
+       .db %01101100
+       .db %01101100
+       .db %10010110
+       .db %11100001
        .db %10001111
 spr_boss0_3:
        .db 16,11                       ;bigasteroid one
        .db %10001111
 spr_boss0_3:
        .db 16,11                       ;bigasteroid one
@@ -3805,12 +3885,12 @@ spr_boss0_3:
        .db %01111111                   ; ███████ █
        .db %01111111                   ; █████████
        .db %11111110                   ;███████ ███
        .db %01111111                   ; ███████ █
        .db %01111111                   ; █████████
        .db %11111110                   ;███████ ███
-       .db %11111110                   ;███████████
+       .db %11111111                   ;███████████
        .db %11111111                   ;████████████
        .db %11111111                   ;████████████
-       .db %11111110                   ;███████ ████
-       .db %01111110                   ; █████████
-       .db %00111110                   ;  ██████
-       .db %00011100                   ;    ███
+       .db %10111110                   ;█ █████ ████
+       .db %01011111                   ; █ ███████
+       .db %00110111                   ;  ██ ███
+       .db %00001110                   ;    ███
        .db 9
        .db %00000000
        .db %10000000
        .db 9
        .db %00000000
        .db %10000000
@@ -3843,7 +3923,7 @@ spr_boss0_4:
        .db %00000011                   ;      ████ █
        .db %00000111                   ;     ███ ███
        .db 19                          ;         █ █
        .db %00000011                   ;      ████ █
        .db %00000111                   ;     ███ ███
        .db 19                          ;         █ █
-       .db %01010000
+       .db %01010000                   ;modelled after a Nemesis][MSX boss
        .db %01110000
        .db %11010000
        .db %10110000
        .db %01110000
        .db %11010000
        .db %10110000
@@ -3879,7 +3959,7 @@ spr_boss0_5:
        .db %01111101                   ; █████ █ ███████
        .db %00111110                   ;  █████ █████
        .db %00001111                   ;    █████
        .db %01111101                   ; █████ █ ███████
        .db %00111110                   ;  █████ █████
        .db %00001111                   ;    █████
-       .db 15
+       .db 15                          ;modelled after a Nemesis][MSX boss
        .db %10000000
        .db %11111000
        .db %01111111
        .db %10000000
        .db %11111000
        .db %01111111
@@ -3902,10 +3982,10 @@ spr_boss0_5:
 ;----------------------------------------------------------------------------
 
 logo_nemesis:
 ;----------------------------------------------------------------------------
 
 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 %11111111,%11111111,%11111111,%11111110,%11111111,%11110111,%11111111,%11111110,%11111111,%111101111,%11111111,%00001011,%11111111,%11111111,%11111111,%11111110
+.db %01111111,%11111111,%11111111,%11111110,%11111111,%11110111,%11111111,%11111110,%11111111,%111101111,%11111111,%00011011,%11111111,%11111111,%11111111,%11111100
+.db %00111111,%11111111,%11111111,%11111110,%11111111,%11110111,%11111111,%11111110,%11111111,%111101111,%11111111,%00111011,%11111111,%11111111,%11111111,%11111000
+.db %00011111,%11111111,%11111111,%11111110,%11111111,%11110111,%11111111,%11111110,%11111111,%111101111,%11111111,%01111011,%11111111,%11111111,%11111111,%11110000
 .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,%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
@@ -3932,7 +4012,7 @@ logo_nemesis:
 ;----------------------------------------------------------------------------
 ;----------------------------------------------------------------------------
 
 ;----------------------------------------------------------------------------
 ;----------------------------------------------------------------------------
 
-; 0.97.73 -- 3.VII.00 -- size 6612
+; 0.98.77 -- 7.VII.00 -- size 6707
 ;
 ;      # bullets do damage in all levels
 ;      * more armor at armor-upgrade and extra armor at end of a level
 ;
 ;      # bullets do damage in all levels
 ;      * more armor at armor-upgrade and extra armor at end of a level
@@ -3995,8 +4075,14 @@ logo_nemesis:
 ;      + enemies can appear at any x-position and move both left and right
 ;      + move patterns given per enemy, not per level
 ;      * new (faster) enemy-move system; 10 basic moves (x2 left+right)
 ;      + enemies can appear at any x-position and move both left and right
 ;      + move patterns given per enemy, not per level
 ;      * new (faster) enemy-move system; 10 basic moves (x2 left+right)
-;
-;      ! game sometimes crashes after running Nemesis:
-;         (in TI-OS: screen misformed + freeze)
+;      # enemies can _never_ move above or below visible screen
+;      * "randomY"-enemies are placed entirely on screen (height calced)
+;      # the major TI-OS crash bug WAS afterall caused by sprites drawn
+;         (partially) outside screen memory. temporarily fixed by setting
+;         virtual screen buffer to $8200 (enough mem there)
+;      + upto 29 cool enemy sprites and redone first five levels
+;      * improved enemy-move routine; smooth luring, five speeds+backwards
+;      # after pause weapon will not be fired
+;      # teacher key fixed (waits for GRAPH to be release before&after)
 ;
 ;       + added        - removed       * changed       # bug fixed
\ No newline at end of file
 ;
 ;       + added        - removed       * changed       # bug fixed
\ No newline at end of file