From 1218a8d1bb844245aeb5e78fca6832272e905ba4 Mon Sep 17 00:00:00 2001 From: Mischa Poslawsky Date: Fri, 7 Jul 2000 14:38:00 +0200 Subject: [PATCH] version 0.98: minor fixes, redone levels # 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 | 86 +++---- nemesis.z80 | 704 +++++++++++++++++++++++++++++----------------------- 2 files changed, 435 insertions(+), 355 deletions(-) diff --git a/nemesis.txt b/nemesis.txt index b2ec955..10ac92a 100644 --- a/nemesis.txt +++ b/nemesis.txt @@ -1,8 +1,8 @@ ------------------------------------------------------------------------------ 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 @@ -12,41 +12,37 @@ 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 -* 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. ->>>>>>> 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. - 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. @@ -54,47 +50,45 @@ that shows the current power of your weapon. >>>>>>> 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! - 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 -memory LOCKED! +memory LOCKED! Besides that there shouldn't be any bugs. >>>>>>> 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! + 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 - 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 diff --git a/nemesis.z80 b/nemesis.z80 index 3b076b9..d57f1c1 100644 --- a/nemesis.z80 +++ b/nemesis.z80 @@ -23,7 +23,7 @@ #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) @@ -99,7 +99,7 @@ lvlenemies = ebullets+(nrebuls*3) .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 ; ███ @@ -113,14 +113,14 @@ Icon: .db 8,1 ;icon for YAS: width = 1byte; height = 9bytes ;---------------------- 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 @@ -140,7 +140,7 @@ FixKeys: ;fixes some key problems like left+down bug 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 @@ -272,9 +272,9 @@ game_main_loop: ;REPEATS FROM HERE EVERY FRAME 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 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! @@ -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 - in a,(1) ;get zem! + in a,(1) ;gettem! 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 hl,GRAPH_MEM+(56*16)-1 ;screen position + ld hl,dispbuffer+(56*16)-1 ;screen position 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 hl,GRAPH_MEM-17 ;screen position + ld hl,dispbuffer-17 ;screen position psh hl ceilingloopright: @@ -615,6 +615,7 @@ newstarok: ;--------------------------- pause ------------------------------------------ Pause: + psh af 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 + pop af 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 + cal releasekeys 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 + cal releasekeys 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 - 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 @@ -672,7 +675,7 @@ quit: im 1 ;release keyfix procedure ;--------------------------- 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: @@ -921,6 +924,7 @@ inc_armor: doincarmor: add a,6 ;add 6 to armor ld (your_armor),a ;change armor + ret 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 - 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) @@ -1417,7 +1421,7 @@ chk_noenemy: 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 @@ -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 - 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 + ld c,a ;c=sprite 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 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 @@ -1641,15 +1654,23 @@ normal_enemy: 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 - jr c,enemyonscreen ;=on screen + jr c,enemyonscreenX ;=on 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) @@ -1718,29 +1739,29 @@ moveleft: moveright: inc d moveXdone: - res 7,a + res 7,a ;01111111=movetype: and a - ret z ;type 0 = don't move + ret z ;0 = don't move dec a - jr z,movetype_updown ;1 = up / down + jr z,movetype_updown ;1 = 0 >< up / down dec a - jr z,movetype_vslow ;2 = 1/4 speed + jr z,movetype_vslow ;2 = .75 >> dec a - jr z,movetype_slow ;3 = 1/2 speed + jr z,movetype_slow ;3 = .5 >> dec a - jr z,movetype_fast ;3 = 1.5x speed + jr z,movetype_fast ;4 = .5 << dec a - jr z,movetype_vfast ;4 = 2x speed + jr z,movetype_vfast ;5 = 1 << dec a - jr z,movetype_smart ;5 + jr z,movetype_smart ;6 dec a - jr z,movetype_lure ;6 = move y towards you + jr z,movetype_lure ;7 = 1 >> move y towards you dec a - jr z,movetype_slowlure ;7 = lure 1/2 speed + jr z,movetype_slowlure ;8 = 1 >> lure 1/2 speed 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 -; 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) @@ -1749,28 +1770,28 @@ movetype_fulllure: cal movetype_lure ld a,(x) cp d - jr c,lure_left + ret c ;move left (already did) lure_right: - inc d - ret -lure_left: - dec d + inc d ;already moved left, so move right +moverightonce: + inc d ;twice (=+1) ret -movetype_stoplure: - ld a,100 - cp d - jr c,movetype_slowlure - inc d ;x<100: full stop 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: + ld a,104 + cp d + jr c,dothelurethingy + inc d ;x<106: full stop +dothelurethingy: 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: @@ -1953,7 +1974,7 @@ storyLine: 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 @@ -2008,7 +2029,7 @@ curline =$-1 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 @@ -2148,7 +2169,7 @@ no_multiples: 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 @@ -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) - ld de,GRAPH_MEM + ld de,dispbuffer 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 - ret c ;not found? who cares... 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 - ret c ;not found? who cares... xor a ld hl,4+storesave_start-_asm_exec_ram @@ -2894,7 +2913,7 @@ findpixel: 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 @@ -2925,20 +2944,20 @@ spr_ship01i: spr_ship02: .db 7,7 ;ship beta class .db %11100000 ;███ - .db %11110000 ;████ + .db %11111000 ;█████ .db %01111100 ; █████ .db %01110010 ; ███ █ .db %01111100 ; █████ - .db %11110000 ;████ + .db %11111000 ;█████ .db %11100000 ;███ spr_ship02i: .db 8,7 .db %11100010 ;███ █ - .db %11110001 ;████ █ + .db %11111001 ;█████ █ .db %01111101 ; █████ █ .db %01110011 ; ███ ██ .db %01111101 ; █████ █ - .db %11110001 ;████ █ + .db %11111001 ;█████ █ .db %11100010 ;███ █ spr_ship03: @@ -2987,7 +3006,7 @@ spr_multiple: .db %11001100 ; ██ ██ .db %01111000 ; ████ -;-------------------------------- explosion --------------------------------- +;-------------------------------- explosions -------------------------------- 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 - .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 @@ -3215,21 +3234,21 @@ collidedamage = 4 ;------------------------------------ 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: - .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 @@ -3239,14 +3258,14 @@ spr_icon: .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 @@ -3256,14 +3275,14 @@ spr_icon00: .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 @@ -3273,14 +3292,14 @@ spr_icon01: .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 @@ -3290,14 +3309,14 @@ spr_icon02: .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 @@ -3307,14 +3326,14 @@ spr_icon02b: .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 @@ -3324,14 +3343,14 @@ spr_icon03: .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 @@ -3341,14 +3360,14 @@ spr_icon04: .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 @@ -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_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 @@ -3380,37 +3399,35 @@ txt_score: .db "Score",0 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: -hiscore .dw 0 -hiname .db "shiar.97",0 +hiscore .dw 0 ;default hiscore +hiname .db "shiar.98",0 ; " " name 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) -;XLlevelsdata:--------------------------------------------------------------- +;------------------------------ levels data --------------------------------- ;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 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 -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 -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 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 ", @@ -3460,18 +3483,18 @@ level02: ;some more enemies .db 1,38+5,$FF .db 23 -level04: ;light asteroid belt +level04: ;light asteroid belt .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 -level05: ;inside asteroid belt +level05: ;inside asteroid belt .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 @@ -3480,7 +3503,7 @@ level05: ;inside asteroid belt .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 @@ -3554,6 +3577,7 @@ level07: ;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 @@ -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 -;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 @@ -3657,64 +3673,136 @@ spr_enemyA4: .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 ; ███ -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 ; ███ -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 ; ██ ██ -spr_enemy10: - .db 8,7 ;enemy type eight + +spr_enemyN1: + .db 8,7 ;some cool Nemesis-MSX enemy .db %00111110 ; █████ .db %11110001 ;████ █ .db %00001110 ; ███ @@ -3723,8 +3811,8 @@ spr_enemy10: .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 ;████ ███ @@ -3733,8 +3821,8 @@ spr_enemy11: .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 ; ██████ @@ -3743,60 +3831,52 @@ spr_enemy12: .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: - .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 %11111111 - .db %11111110 + .db %11111011 + .db %00101110 .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 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 %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 @@ -3805,12 +3885,12 @@ spr_boss0_3: .db %01111111 ; ███████ █ .db %01111111 ; █████████ .db %11111110 ;███████ ███ - .db %11111110 ;███████████ + .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 @@ -3843,7 +3923,7 @@ spr_boss0_4: .db %00000011 ; ████ █ .db %00000111 ; ███ ███ .db 19 ; █ █ - .db %01010000 + .db %01010000 ;modelled after a Nemesis][MSX boss .db %01110000 .db %11010000 .db %10110000 @@ -3879,7 +3959,7 @@ spr_boss0_5: .db %01111101 ; █████ █ ███████ .db %00111110 ; █████ █████ .db %00001111 ; █████ - .db 15 + .db 15 ;modelled after a Nemesis][MSX boss .db %10000000 .db %11111000 .db %01111111 @@ -3902,10 +3982,10 @@ spr_boss0_5: ;---------------------------------------------------------------------------- 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 @@ -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 @@ -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) -; -; ! 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 -- 2.30.0