- Level 75 pattern moved down - shop moved down - bug "range" moved down - moved HS and EXTRA down to the side - Moved saucer and mothership - shop is unscalable - desktop scale corrected - calibration scale corrected do extra behavious with y displacement, Test for "new" behaviour withing moveto - shots "always - fighter always - mother and saurcer and other biggies never - bugs never hardcore without shop!!! (no money drop?) timed minestorm runs? (more money? extra rewards?) overlay correct positions hardcore Highscore - place skull in the middle! Do a faulty insensible version: http://vide.malban.de/1st-of-june-faulty-via-vs-inc if screen is smaller - than desktop icons are not correvtly placed! - shop dito EXTRA letter to "short" letter collected while "in between" levels - does not "home" the letter - and it is not displayed! -> just correct each level start??? ; laser not "freed" when done first play thru? -> can only be baught if "normal" is mastered? - or never baught at all? new minestorm mode - how far can you go! Possible achievement : weapon drop upgrade! 1->2, 2->3 (two times possible) done: perhaps Biggies can be hit by scoopies AND main - default is only ONE shot hits... done: can a scoopy on the utter right side hit by a shot on the utter left side??? done: difficulty inscription in pause == im option! done: pause text a little bit further left (so high officer ranks are more fully displayed) done: Very high timer values - get not "translated" correctly to ascii? (> 640 $7fff...) done: demo not working? No Not working! (if statement was not working as intended) Seems to work! secret? rate sucker 3 9(still) not working??? Its BOTH!!! -> todo correct text - or only do one! Shouldn't that be buy superbomb in shop? secretDodger2 db "SECRET: Dodger 2x",$80 boss fight no scoopy, secret wheel got now and than a "tripple" shot from an "imaginary" scoopy!!! (level 50) - died once on 50, self have a double shot automate roll over done: lives - Bonus not working? 9 lives not possible? laser not great with shielded enemies - sometimes only the shield is hhit! Level announce one level to few crash done: level 33 normal - scoopies die out of thin air? !!!to test vecfever save?? done: not nice - difficulty is seperate Perhaps I should add hardcore/non hardcore as a seperate criteria, not within the difficulty selection - that will make it more clear. make hardcore more difficult on "Loop" on the highscore screen, the tie fight "leans" in the wrong direction! objectEnemy 2245 - MH if space is left a) different fighter ship - fixed scoopies with new grphic - like an "extension" of the fighter TODO - init IRQ to 1 on start!??? das 'beim 2. mal geht es' hier ist aber das problem, dass es im moment nur nach kaltstart in bank 3 startet, ansonsten mit der IRQ-line des letzten programms. Zumindest sieht es stark danach aus, dass es init. werden muss und ich bisher dachte das wird automatisch immer zurückgesetzt (kein reset hier beim wechsel tst192k zu vectorblade via menü..' ToTest: RollOver achievement -> code change! ToTest: Wheel spin adjusted for hardcore, added "TIME" / "SCORE" instead of "LOCK" / "LIVES" - 2x before asteroids wird "ausgeschaltet" wenn vorher? - can there be only ONE rank in the air??? - some times letters (EXTRA) are not displayed (STILL) - direct for einem Boss fight? eingesammelt? - sound effect stuck - something with immune? Or a pickup that gets "destracted?" !!!George In shop "bullet" counter (bar) can go negative Can not reproduce! - VecFever support beautifying ----------- if final memory allows it -> different failure enemies! -> malus lose rank marker Nico: Perhaps It�s possoble to add a line like �Welcome to grumpy Alien�s Supplies� when entering the store. sound with super diamond? intro animation: i think it would be a good idea here to do what you did with the boss fights:- have a eg. 3 second duration at the start of the intro animation where you cannot skip the animation via button press, so that it is not skipped by mistake as it starts, and also, after the 3 seconds if the player presses the button to skip the intro animation, it would look better (more professional) if the screen went black/music stops for eg. 0.5 or 1 second before displaying the title menu screen 8 3rd boss (the death star), i notice when i hit him with my weapon (i think i had triple shot), that he makes a 'jerking' movement now, at his top half (of the circle of his body) i assume this is something new you added? well to throw in my opinion, it felt to me like the jerk is a bit too Nico On the desktop screen you begin with greetings, which is kind, but it would be more informative to show the different bonus items first. I'd love to see a really short introduction text, like "Captain V. Tiberius Rex - you are the last hope to rescue the galaxy from the Alien invasion...." on this screen. - vtk beta: sound effects - fading? - bonus selection as jumptable 256*2 - triangles on desktopn top/bottom not equal? - in demo mode also do a high score table? - add beta tester credits - do level select -> and hide it again - scrolling smoother (y) in intro text? resolved -------- done: Level xx does not play by vec vox anymore? (for some VecVox there must be a PAUSE between sending new data! Done: Just a point to avoid any confusion; it is just my opinion of course: when you select a level to play there is a problem because of the presence of the "4 Bosses" which are inserted in the numbering. Until the "Level 24" all is ok: you choose a level and you play the chosen level. But when you select the 25, you do not play the "Level 25" but the first Boss. You have to choose then "Level 26" to play the "level 25" and so on until the "Level 100"; The problem is that the offset increases with the number of "Boss". It is very disturbing. My suggestion is to play the levels without the possibility to play the "Boss level" directly. So the displayed number in front of the level is the good one. Just my opinion but a Boss must remain a goal to be reached. Nevertheless, if you want to offer this possibility, the ideal is to separate the levels and the 4 "Boss" level (to play them specifically). -> BANK 0 line 890 done: full text in intro is TOO slow with new man draw as sync!!! done: I confirm the encountered problem with the high score: selecting the third letter of my initials the score is saved but they disappear and the former initials come back. done: Standing man in desktop looks shitty! done: Crashduring warp failure, only one enemie, after firs/second? challenge Perhaps during death of only enemie? Or during a shot... 4 quad shot DONE: SBR in Shop not reallyaligned in destroyed vectrex done: After laser from wheel, I can not move, the shots are NOT recognized by enemies, (FecVeer save setup) Continue in rount before boss 1 - boss ist wieder ok, es musst enicht abgeschossen werden... -> test laser mit VecFever!!! done: Dann nochmal gestartet, nix gemacht und nur gewartet - Absturz. Zweites mal ebenso, also einfach zu reproduzieren: jeweils an selber Stelle: nachdem bei Ende des Scrollers das Männchen weglief, wiederkam und dann auf den Schirm sieht. Der Schirm geht wieder 'an' - helles innere das sich vergrössert - dann stirbt es hier. perhaps: in title screen (Jacek) some Icons are off on some vectrex toTest: boss 3X5 gives crooked score! totest: when money sucker is active and enemies above money sucker exist - than shots go thru? (level 77 test with shields?) totest: level 82, something VERY slow (100Hz slow), scoop, 3 shot 2 scoopies, (testing ALL shots???) (yes, because shields dont count in "3" for collision detection)!!! totest: hardcore mode wheel, add 1 Million instead of 9 lives tried some changes -> to test i noticed at the title menu page, on my vectrex most of the time the left icon (and the top one?) seem to be off-centre inside the triangle, see the first picture below (http://vide.malban.de/forums/topic/vtk-testing-notes-findings-suggestions-etc/page/7) -> code is ok, seems to be vectrex specific.... done: to check: is "CBFC" a free byte`? -> CBFC is a FREE RAM location! done: shots hitting biggies are not "reseted" when under 3 -> biggies are allways "just" tested with shot 1 done: diamond shape "in game" done: only completed "easy"-> select of hard is enabled in options! done: level 65 got laser thru wheel (before level) Laser does not shoot enemies (>3) - but first enemies were shot? a) clone must increase realEnemyCount b) laser not allowed for "under 3" test super cranky: done: Level select > 100 are displaed at different location )options)! done: first enemy "UP" not "closed" done: second enemy "DOWN" not "closed" done: (there is NEVER a fade in!) leveö 42 fade in not "fading" done: level 77 facing up one of the aliens... klingon? and heading down left done: leve 77 the "queer" alien heading down right done: sinistar boss is crooked done: lvel 51 (start) enemies are crooked! done: x-wing left up - crooked done: four shot don't go up all theway on x negative done: - in high score one ship up / down is weird (seom start trek) Klingon done: - bonus letter A in bonus display done: - last boss left super gun is off done: - percent sign in achievements -> stall?? done: - level one enemies slightly off on the right side! (UP / wating anim) done: - first cloner sideways off done: - border of letter in one position off done: - mothership one vector "off" done: - rank 3+4 off done: - missile bug shot flickers "way" down (like old shot behaviour?) done: - shots after a "high" missile flicker when on bottom done: new sound shop done: no wait between items in scroll in shop done: hardcore mode + highscore done: - on highscoire entry copy both highscore to RAM done: - on hs table display change mode done: - reset hardcore score on reset (in options) done: 1 new shop sound effect when moving between items: in my opinion the sound is a bit too aggressive and "out of place" sounding, it would be better in my opinion if you have a simple short "beep" sound, dont make it a low pitch sound, eg. a suitable sound would be like a "blip" "blip" "blip" as you move between the items in the shop not changed -> random: 9 " falling bonus icons in game: i wanted to mention 2 of them, the "minestorm" icon and the "extra life" icon in the game i played this evening, they were both too common in my opinion. i must have got the extra life icon about 4-5 times in a single game (i played 79 levels). it seems it would be better if the chance of getting the ‘extra life’ icon was reduced .. so eg. maybe i might see it approx. twice in 79 levels seems better to me) – the minestorm icon seems to me to be too common also (it feels like it should be reduced in odds a little, eg. reduced by 35% because it seems to me currently it shows up way too often) not changed - sound pending... 10 "super diamond .. i know this is quite rare to see" however, i got this "bonus stage" when i played tonight, and to me it feels a little "unfinished", as in, there is not really any sounds here if i remember correctly? and also, you dont really do anything, just a big diamond comes to you. maybe you could reduce the big diamond size? not changed: -> I think that cant be helped, vectrex are different :-( shop: i noticed that a lot of times, on my vectrex the bottom (line) of the alien body does not properly line up (overlap) with the line he is resting on. i think it certainly looks better when it is lined up properly rather than overhanging (see picture 2 below where he is overhanging) -> code is ok, seems to be vectrex specific.... see point 1 done: 2 – at the first boss, i had the triple shot, i cant remember if i had autofire or not but anyway, when i killed the boss and he was exploding, i can still keep firing bullets, and some bullets are stuck around the middle of the screen. do you need a video recording of this issue? note i only ever play on real vectrex, never emulation (vide) -> fixed - again ? done: 3 – i think i mentioned before: after completing minestorm, could you instead display that you receive cash $1000 example: instead of the current display: “Success! 10000 bonus“, change to “Success! $1000 bonus�? (or: “Bonus! 1000 Cash“) (or if you have space/cycles, you could display both.. so display that you been awarded 10000 points and 1000 cash) -> done not changed: -> nope, extra changed anyway 4 – if you get a weapon in the game because you collected EXTRA icons, in my opinion that weapon should be unlocked in the current game and you can now buy that again if u lose a life (currently you have set it so you can only buy the weapon grade one step below). this seems a bit irregular and uncommon to me, and annoying! lol (ok it’s just my opinion of course but i wanted to voice this opinion) 🙂 -> not being done (unlocks laser to buy too soon) not changed: 6 – just an opinion of course but, for the large alien which appears down low on the screen from the left and then moves across to the right, but stops a few times to fire the solid laser beam downwards, if it’s possible, could u set it so that if the round is over (all enemies gone), can that large alien just move along off the right of the screen rather than keep stopping and firing his laser beam). it ends up kind of boring and takes too long -> not changed (it "original" :-) ) done: Helmut Naming of achievements Some of the namings of the achievments might be improved: COMPLETE: EASY �> COMPLETE EASY (Notes: No colon. Imperative, just like in the other �WHEN� sections, e.g. DISCOVER �. Applies for all levels (EASY, NORMAL, HARD, �) 90% ACCURACY �> ACCURACY > 90% or SH done: Helmut Position of top arrow Currently, the heading �ACHIEVEMENTS� and the top arrow are a bit close together. This looks a bit cramped. Suggestion: Position the top arrow a bit more down. done: Helmut: Selection doesn�t change when controlling diagonally When you move your controller to a different direction without centering first, the menu might not change. To reproduce simply do a �circle tour� with your joystick, i.e. move it to the top and then try out all directions without moving back to center position. unchanged: Helmut (still relevant?) Currently, there is line-wise vertical scrolling in the shop and paging (Achievements screen, Status screen) use joystick up/down. Suggestion: For paging use joystick left/right instead of up/down. Appropriate arrows indicate this. This will help the user to understand the concept of scrolling and paging better and usage gets more intuitive. not changed: -> a) I am getting a bit "restrictive" with my space/cycles b) Laser discussion changed with Wheel implementation Helmut perhaps: COLLECTING RANK MARKERS IN ASCENDING ORDER WILL GIVE YOU GREAT BENEFITS! and COLLECTING E-X-T-R-A IN CORRECT ORDER WILL MAX YOUR WEAPON! Splitting the secret message has two benefits: 1. Messages are easier to understand. 2. The EXTRA can be last secret that you can buy. This helps us in the laser discussion, I think, because the laser secret will be revealed last. not changed: Nico -> the "normal" place to go back from the game is the high score "edit"/view - when you acchieved a score When returning to the beginning after a game, you get directly to the desktop. As I really like the title screen It would be nice to get there first. not changedd: -> Unclear!: Crash: Star wars boss, player on the complete right, destroyed by laser, 4 shot Jacek done: boss 1 done: boss 2 done: boss 3 (stays the same) done: boss 4 done - Helmut Shop sound <> shot sound Currently, in the shop when selecting a different item, a short sound is played. The sound ressembles very much the sound when you shot (shop sound = shot sound). Suggestion: During the game you hear the shot sound very often. It would be good if in the shop one heard a different sound. done - Boss levels are not displayed as Level + number anymore Helmut Level 25 twice?! Currently, there are two level 25: There is level 25 Boss allowed by level 25 normal. This is a bit confusing. Suggestion: From my point of viewer boss levels should mark the end of a larger unit. The first unit is levels 1-24 and level 25 should be the boss level. After that the levels 26 with new enemies should follow. In beta 28 it says: �LEVEL 25 BOSS�. Changing this to just �BOSS� or �BOSS LEVEL� would be a simple and effective solution. done: messages spellings wrong done: to Test Helmut: Blaster: Achievement achieved but not displayed as achieved (Bug) In this game I�ve achieved the blaster and could buy the quadro shot. When looking in the list of achievements, the �Blaster� achievement isn�t hooked and the trophee graphic isn�t displayed. done: Helmut Year of copyright Currently, when starting Vectorblade it says (c) 2018. Suggestion: (c) 2019 not done: (no space left) Helmut Inner animation when attacking Currently, enemies have some inner animation when displayed at the top. When flying and attacking, the enemies have no inner animation. Suggestion: Add a minor inner animation to attacking enemies. This will make enemies and game look even more lifely. not changed - no time (in game time)! Helmut Number of highscores Currently, four highscores are displayed, only. Suggestion: Display five or even 10 highscores. Notes: - 1, 3, 5, or 10 highscore entries feel 'natural' to me. Four entries is somehow odd. - Displaying ten highscores would make the screen look too cramped and would require a complete redesign. So five highscores would be best, I think. half changed: awards are only given when shotcount >1000 Helmut No Sniper > 100% Currently, with double or triple shots you can get a hit rate > 100%. My impression is that once you die and you have a hit rate > 100 % you don't get any sniper rewards. Sugestions: Sniper rewards should be rewarded even with a percentage higher than 100%. Rank 3 - 90% Rank 2 - 100% Rank 1 - 120% not changed: Helmut Shop: Size of symbols In the shop, in the top left the symbol of the selected power-up is displayed. Currently, the symbol is displayed in normal size, i.e. the size that is used within the game. The top left area looks pretty empty. Suggestion: The symbol could be displayed a bit larger. This way, one can recognize the symbol more easily and the empty area is filled. -> no game time left. I could do this - but have to remove something else done: Helmut (single arrow) Single and double arrows Currently, there are single and double arrows used as indicators for the list: - Status info uses double arrows - Achievement list uses single arrows Both lists use paging for displaying the various items. In Status info the item at the very bottom is displayed again on the next page at the very top. This means that some items are displayed on two pages. Suggestions: - Use single arrows for both lists (the double arrow is not helpful for the user I think). - When paging in status info the item at the very bottom should not displayed on the next page at the top, again. Note: The list in the shop scrolls item by item and doesn't display items pagewise. So the list in the shop is different to the list of achievements and the status info. done: Helmut (Laser costs 5000) Some thoughts on the laser: With laser the game is really much simpler. But, if I understood right, once you die you loose everything (=greatest loss). And I do die during playing the first 50 levels -even with laser. A new laser could be bought for just 1000 bucks which is not much compared to the other stuff. So you can gather money (using the known technique) and when buying things in the store you always keep a bit of money for powering up the player ship and even buy a laser, again. This worked out for me several times. Suggestion: The laser could be more expensive (e.g. 2500 bucks or even 5000 bucks). This way its hard to get a laser and the laser remains something special from the bonus side and from the money side. done: VTK Scroll text not always centered done: - money - no speech (gets on ones nerves) done: jingle on minestorm success? done: level select done: to test fireworks in perfect - wobble done: high score hi lite selected done: hs blink an "underscore under the current seclected initial instead of letter done: high score - no moving while shooting done: Boss destroyed you... " text done: to test - end of game count down - multiply by officer - at least not displayed! done: shop exit shop with button 4 - but initialize with position -1 done: too get a better sense of "scrolling" in the achievement view - I added slight "offsets" after scrolling... done: get rid of highscore entry - initials "pulsating" done: scrolling, and paging in pause mode, "like" in achievements, paging is visualized by TWO arrows done: If a EXTRA bonus is travelling "home" and than a death occurs the EXTRA is in a Schrödinger state done: shop complete up, second from top not top displayed... done: boss 4 player can die when shot is absoult left (minus) and player absilut plus ... done: shop with 1000 money wobbles (N/A) done: Pauxe wobbles with x 5 (second scroll) done: lost EXTRA when dying when in air done: pause and scroll still decimates the intro pattern done: end of game countdown / score display it longer! - Each score is at least displayed 1 second final score waits for button done: A short pause after killing the last enemy and then displaying the shop might things clearer and smoother. #The shop might even appear at the end of the level as some kind of planet/asteroid/… but that would be probably a bit too much. - for now a 1 second pause (just an empty screen ... continuity) done: At the end of the “movie�? the text “KEEP THE VECTREX ALIVE�? scrolls in. Currently, this text disappears as soon as it reached the center of the “screen�?. - 5 additional empty lines done: Suggestion: When selecting one of the four menus while the menu is fading in both the triangle and the symbol should be highlighted. When deselecting the menu, again, brightness should be set back to current “fade in�? brightness. done: Yesterday I achieved “ADMIRAL 1 BRONZE STAR�? which filled out the full screen width. Adding “RANK:�? doesn’t make sense. Perhaps centering the rank might look good and might be worth a trial. - not changed: a) doesn't look better, b) takes time, since length of string is "unkown" and has to be computed done: Greetings: Four times “Chris�? I do know that there are many Chrisses around in the Vectrex scene. In the greetings “Chris�? is mentioned for times. This looks a bit like a bug. Suggestion: Add the first letter of the surname to differentiate the four Chrisses. E.g. Chris P., Chris M., … done: Boss 1 background noise done: READY player 1 scroll in with SOUND done: HighScore scrolling direction changed done: some sound was wrong in hard - collecting immune? -> crash aftwer "sound" finished - YES done: shop speed bullet etc - are they still positioned correctly? cranky vectrex looks bad! done: end of game level count down ping? done: add minestorm success sound - same as officer promotopn! done: inital position in Highscore were always DOWN done: 9000 shots fired / hit -> page two in pasue wobbles done: black hole sounds wrong! done: level nintety ten done: level 50-56 one to much done: level spoken after "LEVel "display done: level spoken doubled done: to test final score "x2"/"x5" must be deleted "beforehand" done: to test: EXTRA still not always corect?-> extra in air before shop is displayed after shop in EXTRA and benus is still going up! done: to test bug: E from extra taken two times? (was hard) done: to test scoopy can be fucked up (left) - not displayed -but "there" level 40 scoopy lock 2 scoopies gotton in THIS challenge stage shop after Warp after -> scoopies "fucked!" done: level boss = announced as level 24 failure announced as next level done: money rank 1 not given! done: money rank 1 displays rank 5 done: remember levels with difficulty - if 1 than max done: to Test money sucker explode - results more "centered"? done: mionestortom success sound also when aborted! done: super dimond displays wrong done: pause screen 2 million points x2 8000 shots. timer 175 done: to Test laser + EXTRA -> LARGE POINTS! ? done: again: to Test money sucker explode - results more "centered"? done: Peer: Text adjustments done: Peer: from reset go to "beginning", not options loop done: sounds in shop no correct (I think) done: achievement fireworks longer! done: todo play promotion jingle!, bank 1 line 76 done: player blackhole extro sound done: vox tryout done: helmut: scrollTextsDirect done: Nico: Merchant version in shop done: Nico consistent now- I know, that the shop is not finished yet. I noticed if you try to buy something that you have already/are maxed there is no sound, exept life and autofire. If clicking on these hou hear the "buy" sound even if the item is not bought. done: cant figure out a way to detect... todo - detcted whether voc is connected, if I keep it it will be a "setting" done: not reproduceable: Nico: sometime there is a permanent buzzing sound inside the options menu done: reordered Achievements - again! done: buy a lesser weapon than equipped, reduced money in shop, but did not buy weapon done: pause - still breaks the intro sequence of a wave done: Option: Reset done: SECRET MESSAGED done: Option: Display Secrets done: added option to "unconfigure" the Major Havoc part, und non debug versions it is now "out of the game! done: helmut: I've just realized that you can scroll the "Achievement" screen, too. Up/down arrows would be a really good idea, here. done: secret three scoopies -> wrong message "P..."? done: vtk:i noticed after i finished playing and went into game settings, now i can see in settings it is set to difficulty NORMAL. however i noticed now i cant change it back to EASY if i wanted to play in EASY mode again? vtk:some thoughts about the final level 100 boss: i had autofire+laser combined, and he is way too easy. he can be killed way too quickly (in a couple of seconds. it’s no challenge so unfortunately it feels like an anti-climax). laser on boss fight easy does 1/4 quarter of damage laser anywhere else does 1/2 damage armor: for test renders invulnerable fpr 1 second upon trigger -> please report! done: vtk: fade out title done: Jacek : boss done: vtk: and for the big passing fly-by ship of the intro animation, can his overall brightness be increased? done: helmut: Order of achievements - highest first to lowest done: (perhaps) helmut: Movie: More vertical spacing Currently, the Vector Blade “movie�? looks a bit cramped. Suggestion: There should be more empty lines /vertical spacing, e.g. after “Vector Blade�? there could be 2-3 empty lines. Also the credits (all the names of the people) are a bit cramped; increasing the vertical spacing a bit would make it look better. done: if you die during a boss fight – the boss pushes you an random (1-5) levels back in your progress? done: helmut: Currently, when shooting a letter to enter the initials, the initial is added and nothing else happens. Suggestion: The shot letter might explode. Or the shot letter might move to the appropriate position. Or… done: Helmut: What the original Warblade does... it prints little bars as to where between minimum and maximum speed you are. It does not tell you any value - but there you know at least approximately where you stand. (in Vectorblade the speed values range from 500 (minimum) to 1025 (maximum) in 25 unit steps... I'll keep thninking about it... done: (is it with above?) helmut: [Idea]: Shop: Player’s current level Currently, the player has little idea how many speed levels, bullet levels, rate levels, and so on are. The player might find out by having a look in the status but when the shop is displayed he/she cannot open the status. So buying items is more or less a matter of feeling. Suggestion: In the shop the current level of the player for the appropriate item could be shown (e.g. Speed+ 5 100). This way the player could decide better which items to buy and he/she would get a better feeling for the levels. done: Peer: buzz/no buzz selection: text “Button 4 to confirm�? is not horizontally centered done: Peer: the calibration sub menus all use a different brithness, if your console’s brightness (poti on the back) is set too low at the beginning, some of the entries cannot be seen, so maybe an initial hint like “you will probably need to adjust your console brightness�? would be good, or do some “console brightness setup�? like in the TestRev card, “turn up console brightness until you see all these lines�?, something like that. done: Peer: help text of the first boss calibration step, missing letter: “… align the(m) as good as possible�? done: Nico: crash in Pause+Help done: bonus waves on more difficult no restrictuiob on bonus random done: double Geo: When on ‘MineStorm’ stage, after pressing PAUSE and back, in game sound effects get severely distorted (sounds more like white noise / interference). done: lower super diamond from 100 to - say 50 done: helmut: pause status: Suggestion: Scrolling could be page wise done: helmut: The scroll indicators should be positioned one at the top and one at the bottom done: Highscore: “MAL�? done_ helmut: Desktop Intros Suggestion A: 1.) Octagonal screen is blank 2.) Transition effect (the same transition effect that is shown right before the descriptions of the power-ups are shown) is shown on the screen and then “Vector blade�? and the other stuff appears and scrolls down. 3.) After a while the astronout appears for a second time. 4.) Transition effect is shown on the screen and then the description of the power-ups is shown. done: sound money drop from mothership done: sm 16 on cranky - looks a bit off Calib 16 and text correctly calibrationValueString <-> calibrationValue16 16 = MH and Highscore Text = bonus round text perfect text etc done: SOUNDS money collect sound bonus collect sound malus soudn letter bonus sound? rank marker sound? downgrade sound done: is brightness setting to high of vectrex T1 Vectrex ->scrolltext with "/" (also on cranky but really weak) done: don't care stars -> without move in between star atoms? done: high score done: remove sfx sounds not needed from bank 0, since it includes the same sound as bank 1 done: Bug: sound when ship flies in on title screen - VTK on a real vectrex! done: button calibration done: least intensity from 1f to 2f... done: ok -> Test on real vectrex printStringSync2.asm in Pause done: a bit Also, when the ship comes in, the VectorBlade letters seem to jump forward a bit, and then jump back when the ship leaves. That happens on all consoles done: I have squeezed italic characters in the pause menu (this vectrex also has a problem displaying the text of the sk done: vtk: buy laser from blaster -> no laser, no sound, but money reduced done: vtk: failre i tiny bit easier -> shot restrictions done: add vectorlist for achievement! done: extra score for full extra -> 100000 done: Calibration upon leaving hs /achievement done: fine calibration -> button 2/3 done: boss hit brighter done: finish help in calibration! done: Stars in HS to the end of the screen... done: CALIBRATION + no buzz done: BUTTON 1 = HELP? done: oh and if u didnt notice the high score table itself should go up a little as it is not centered between the top row of ships and the bottom row done: move highscore from bank 2 -> 1 done: Sccopy secret -> jingle playes more than once! done: first two "frames" from intro screen are to bright! done: to test bomb is buyable after "normal" -Rate colect! done: achievements scroll down - must be with a stopper done: game over bonus + sound done: calibration finalizing done: sound collect bonus done: UFO Sound pleae continuous done: toTest 3 seconds no fire button on boss intro done: in intro Man disappears after first bonus! done: in intro sreen gets darker after first bonus done: VTK: Armor in shop can be bought more than once? done: in intro each second of the bonus has a different decresing brightness! done: quadrtisc sinistar ships "hoppiong" wehen waiting (cranky) done: Bug boss 2 fires bullets instead of RUN RUN RUN done: to test hit percent in game over count down > 200? done: (correct) -S X 3 = Scoop shield in display? done: (tehre is none) blaster achievement ? done: ship behind shield not using attack patterns? done: more bonus on normal! done: UFO sound done: Warp failure on easy, when killed does not respawn all enemies done: noises caused by buttons done: vtk beta: bugs more difficult done: vtk beta: stutter on button presses done: vtk beta: shots brighter done: vtk beta: EXTRA jingle done: foreworks sound done: destroy super enemy - MORE points done: to test sectret for ranks still not counting correctly? done: tripple -> triple done: move perhaps boss intro to bank 1/0 done: to further test money mothership drops TOOOO many money done: to test rank order achievment ->mfucked done: less life drop less wrp failure done: no: test: dying in minestorm > go to extra bonus anyway? done: High Score bug done: flying up in dodger -> quiet! done: cant get outof dodger! done: bullet 3 can be baught multiple times done: boss 1 explode -> takes about 40000 cycles! done: achievement lexikon done: text after black hole done: super impossible star wars boss -> darth vader broken? done: Shield level on super impossible -> shields placed WRONG (53 + 58) done: super impossible tribble -> CRASH! done: ok, is checked on end of game! admiral rank cheack??? Achievement -> not gotton done: rest achievement rewards see -> commonGround.i top -> todo last rank done: 5, possibly 3+2(WR) more RAM hunt! done: Bug test for greedy not working? done: rank, immun1 have no N/A done: collect!!! life bonus! done: bug Score corrupt after minestorm? (x times ???) after complete minestorm, the score display is "fucked" done: status should show current collected rank markers and armor and autofire shown in stats done: 2 shot right shot is longer (cranky / length) done: shield center done: bug, laser in first boss - sometimes "is off" little bugs sometimes off too? (shot 2) done: where is the scoopy lock? NOT there!!! ldb lockPurchased orb #%00110000 stb lockPurchased enables it not tested %10000000 collect 3 scoops in a row in correct order -> enable scoopy lock done: not tested immune 1 can be bouzght multiple times done: WHY appears a "biggest" loss acchievement always? done: C in Vectorblade title looks broken done: not tested aftwr game options does not work? done: bug spy rank 1 after game done: bug rank buy inh shop not promoted? done: bonus in super difficult none? done: Absturtz ca. level 80 laser just got + 2 scoopies - kamikaze "end"? done: echo music to title done: totest autofire is not set back on death??? done: totest secret of GAME must reset when new game starts done: set D is little endian! done: do a "common" string size, that has a calibration INFO: spawn sound -> channel 2 spawn shot -> channel 2 explosion sound enemy -> channel 3 shop sounds -> channel 3 Achievement/Secret -> all channels player death explosion -> all channels megafiends/saurcer -> channel 1 Extra collected -< channel 1 bug shots -> channel 2 bonus/malus/money/rank -> channel 1 Dodger diamonds = 5 diamonds! Bomb diamonds single! ACHIEVEMENT_FLAG_BYTE1_SNIPER_RANK3 = %00000001 ; checked at the end of each game ACHIEVEMENT_FLAG_BYTE1_SNIPER_RANK2 = %00000010 ACHIEVEMENT_FLAG_BYTE1_SNIPER_RANK1 = %00000100 ACHIEVEMENT_FLAG_BYTE1_SCORER_RANK5 = %00001000 ; checked at the end of each game ACHIEVEMENT_FLAG_BYTE1_SCORER_RANK4 = %00010000 ACHIEVEMENT_FLAG_BYTE1_SCORER_RANK3 = %00100000 ACHIEVEMENT_FLAG_BYTE1_SCORER_RANK2 = %01000000 ACHIEVEMENT_FLAG_BYTE1_SCORER_RANK1 = %10000000 ACHIEVEMENT_FLAG_BYTE2_COLLECTOR_RANK5 = %00000001 ; checked at the start of each shop ACHIEVEMENT_FLAG_BYTE2_COLLECTOR_RANK4 = %00000010 ACHIEVEMENT_FLAG_BYTE2_COLLECTOR_RANK3 = %00000100 ACHIEVEMENT_FLAG_BYTE2_COLLECTOR_RANK2 = %00001000 ACHIEVEMENT_FLAG_BYTE2_COLLECTOR_RANK1 = %00010000 ACHIEVEMENT_FLAG_BYTE2_GREEDY = %00100000 ; check when collected / bought ACHIEVEMENT_FLAG_BYTE2_9LIVES = %01000000 ; checked when a live is bought ACHIEVEMENT_FLAG_BYTE2_ALL = %10000000 ; checked at the end of each game ACHIEVEMENT_FLAG_BYTE3_BLADEMASTER_RANK5 = %00000001 ; checked each roll over ACHIEVEMENT_FLAG_BYTE3_BLADEMASTER_RANK4 = %00000010 ACHIEVEMENT_FLAG_BYTE3_BLADEMASTER_RANK3 = %00000100 ACHIEVEMENT_FLAG_BYTE3_BLADEMASTER_RANK2 = %00001000 ACHIEVEMENT_FLAG_BYTE3_BLADEMASTER_RANK1 = %00010000 ACHIEVEMENT_FLAG_BYTE3_TRIPPLE = %00100000 ; checked on EXTRA ACHIEVEMENT_FLAG_BYTE3_QUADRO = %01000000 ACHIEVEMENT_FLAG_BYTE3_LASER = %10000000 ACHIEVEMENT_FLAG_BYTE4_OFFICER_RANK4 = %00000001 ; checked on officer level up! (after shop) ACHIEVEMENT_FLAG_BYTE4_OFFICER_RANK3 = %00000010 ACHIEVEMENT_FLAG_BYTE4_OFFICER_RANK2 = %00000100 ACHIEVEMENT_FLAG_BYTE4_OFFICER_RANK1 = %00001000 ACHIEVEMENT_FLAG_BYTE4_SPY_RANK4 = %00010000 ; check when secret is discovered ACHIEVEMENT_FLAG_BYTE4_SPY_RANK3 = %00100000 ACHIEVEMENT_FLAG_BYTE4_SPY_RANK2 = %01000000 ACHIEVEMENT_FLAG_BYTE4_SPY_RANK1 = %10000000 ACHIEVEMENT_FLAG_BYTE5_NOT_DONE1 = %00000001 ; bit "number" 0-7 ACHIEVEMENT_FLAG_BYTE5_NOT_DONE2 = %00000010 ; up that "secret message" was read already! ACHIEVEMENT_FLAG_BYTE5_NOT_DONE3 = %00000100 ACHIEVEMENT_FLAG_BYTE5_CHALLENGER_RANK4 = %00001000 ; check after challenge ACHIEVEMENT_FLAG_BYTE5_CHALLENGER_RANK3 = %00010000 ACHIEVEMENT_FLAG_BYTE5_CHALLENGER_RANK2 = %00100000 ACHIEVEMENT_FLAG_BYTE5_CHALLENGER_RANK1 = %01000000 ACHIEVEMENT_FLAG_BYTE5_BIGGEST_LOSS = %10000000 ; check on shot on collect Achievement rewards are permanent a) achievements - hit percentage (min 1000 shots) above 70% - Sniper Ranke 3 - start with bullet +1 - hit percentage (min 1000 shots) above 80% - Sniper Ranke 2 - start with bullet +1 - hit percentage (min 1000 shots) above 90% - Sniper Ranke 1 - start with bullet +1 - score: 100000: Scorer Rank 5: player speed +1 - score: 500000: Scorer Rank 4: player speed +1 - score: 1000000: Scorer Rank 3: player speed +1 - score: 2500000: Scorer Rank 2: player speed +1 - score: 5000000: Scorer Rank 1: player speed +1 - achievements Money collector Rank 5-> 5000 reward: + 100 credits startup - achievements Money collector Rank 4-> 10000 reward: + 200 credits startup - achievements Money collector Rank 3-> 25000 reward: + 300 credits startup - achievements Money collector Rank 2-> 50000 reward: + 500 credits startup - bug money -> discover BUG money roll over!, Money collector Rank 1 reward: + 750 credits on startup - achievement when speed, rate, bullet are all full GREEDY -> start with 2 shot! - reach 9 lives: enable bonus drop "LIVE" - get them all (highest ranks on all): new RANK Officer GREAT DEFENDER! - player easy thru: Blademaster Rank 5 rewards -> chose to start at normal / buy laser in shop - player normal thru: Blademaster Rank 4 -> chose to start at hard - player hard thru: Blademaster Rank 3 -> chose to start at impossible - player impossible thru: Blademaster Rank 2 -> chose to start at super impossible - player super impossible thru: Blademaster Rank 1 -> congrats! - weapon get tripple shot: Weapon trippler -> unlock buy tripple weapon in shop - weapon get quad shot: Weapon Quadrupel -> unlock buy quad weapon in shop - weapon get blaster shot: Weapon Blaster -> unlock buy blaster weapon in shop - Rank: LIEUTENANT: Officer Rank 4: start game with armor - score: ADMIRAL: Officer Rank 3: enable shop buy RANK (1000) - score: ADMIRAL 1 SILVER STAR: Officer Rank 2: start with autofire - score: ADMIRAL 3 GOLD STAR: Officer Rank 1: start with timer +10s (found in one game!) - secrets: discover 2 secrets: SPY RANK 4: start with one super bomb - secrets: discover 4 secrets: SPY RANK 3: start dodger permanently with x2 - secrets: discover 6 secrets: SPY RANK 2: buy bomb permanently added to shop - secrets: discover all secrets: SUPER SPY: get a "pocket shop" (press button 1 at the end of level -> enter shop) - challenge: get 2000 bonus: Challenger Rank 4 -> start with rate - challenge: get 8000 bonus: Challenger Rank 3 -> start with rate - challenge: get 16000 bonus: Challenger Rank 2 -> start with rate - challenge: get 256000 bonus: Challenger Rank 1 -> start with rate - weapon drops from laser to 1 shot: Biggest loss! -> unlock buy weapon immunity 1 in shop for 100 37 Achievments! - bug a) money is sucked while money sucker is still active? b) money sucker should only be killed after 3 bombs (a 100) - buy secrets -> how to keep track what was bought? -> bits in achievement byte 5 - question -> should money sucker drop 200 when killed by super bomb? - not nice - pause status "does not advance on every move... - build something where player can read about he secrets & acchievments! - collect 100 diamonds -> drop super diamond after level -> 100000 points - collect EXTRA after LASER -> more score! - double armor? -> absorbs two hits? can be decreased? - todo ufos mehr hp in höheren level - bug: still there? Pause breaks intro waves? - effect? - boss destry let the parts drift appart? - super bombs damage boss - anti bonus negative rank marker? - bonus "reverse" steering - bonus from difficult level normal extra live as bonus drop - bonus ? (Question mark bonus) -> random bonus - bonus double armor possible? - sound Scrubbings e.g. in "Ready player one!" / config - sound attack wave - sound cloning - sound super bomb - sound repelling - sound bonus collect - sound fire missle - sound hurry! (saucer) - test in normal: shield armor not centered - ?EXTRA letters not "nice" - bug: Scroll text little (title screen) / on the side - Bug? highscore text on "no buzz" machine" - bug? Absturtz in langer Pause??? (2/1/2 Runden gespielt) - boss explode -> many branks / money / gem drop? - MH: smartlist "squares" do not look good on real vectrex - add zero ref for 16 - todo jsr calibration Zero for letters (on high score edit) highscoreEdit.asm - still needed?: If enemy count < XX than check all bullets! - in bank 1 calculate: gameOverFinalScoring - black hole on roll over -> time machine! game "loops" "in the year 2525" ... for each "loop" -> black hole - perhaps speechjet - perhaps in some "pause" mode an equalizer frequency * amplitude per channel= - Shop * ? buy rank marker * buy secrets hint - highscore edit - Opt if space enough, random bonus with table instead of "case" 255 dw statements and a simple random - scoopy with debris -> keep it as now? Debri collect -> geth whole ships - current Hit Percentage is displayed in the Shop screen -? New Store Item: Rocket Pack for 5000 credits (10 Rockets, Max 50) --- DONE Secrets Secret rewards are for current game only implemented tested %00000001 3 times in a row -S -> current scoopies are shielded (one "life") implemented tested %00000010 3 times -rate -> one superbomb -> unlock buy bomb in shop (800 credits) implemented tested %00000100 3 times in a row -B -> display extended stats diamond counter / super bomb count) implemented tested %00001000 3 times in a row -rate -> enable "constant" x2 in dodger implemented tested %00010000 Spell EXTRA in correct order -> immediate laser (normal bonus in between allowed) implemented tested %00100000 collect 3 fifties (money) in a row -> money sucker dropy money after death! (200) implemented tested %01000000 collect rank marker in correct order -> enable "constant" x5 in dodger implemented NOT tested collect 3 scoops in a row in correct order -> enable scoopy lock Five UFOs must pass, than the mother appeaers, which drops the big money! Collecting letters in the words order, gives you something extra! Order ranks from slow to fast, enhances your Minestorm score greatly! Three times in a row of something bad - gives you something good! The money sucker can drop huge amounts of money when killed - provided you collect 150 credits with three consecutive drops. Collect 50 diamonds to enter the super diamond level! Three times sucker makes them stay after a warp! Finishing 100 levels on easy make you immune to 1 Shots. Finishing 100 levels on normal make you immune to 2 Shots. --- How to build bonus anims: - best, use an already established bonus and start from there. - start and endpoint must be kept intact (start: 0,0 ; end is start of circle draw) - draw the bonus - "circle" bonus do a x-axis rotation of 360 degrees with 16 steps first 0-8 steps, enlarged by 1.5 - "rectangle" z axis rotation 15 steps, enlarged by 1.27 - "triangle" y axis 15 steps, first 0-8 - "3d" x axis, 15 - build a smartlist with "jump on last move (and circle Bonus as continue list) - use only the generated sources for 0-8 (inclusive) How to build new enemies: enlarged by different values, first enemies by 1.14, some with 1.2857 - best, use an already established enemy and start from there. - draw - start point lowest point and must be a move - after ortation "fix the startpoint (move) - generate sources with "no position move" checked - do a x-axis rotation of 360 degrees with 7 steps, clockwise (check checkbox) - delete last (same as first) frame - ensure same start position - use only the generated sources for 0-8 (inclusive) Thoughts: Achievments - points - levels - ranks - timed meteor storms - diamond collect - hitpercentage (only above xxx shots/levels) Achievments bonus - start with: * more bullets * some money * faster * faster shots * better weapon * select "level" * select difficulty * show more "bonus" (like bomb) * full weapon * full ALL * remove weapon 1 drops * enable weapon 3 drops * etc * minestorm speed Secrets -> to discover - extra in order - extra in reverse order - level without "intro" shooting - collect baddies *3 -> same - collect rank markers in order -> results - *2 /*5 in meteor storm - screen bomb - ability to buy a super bomb - ability to see # of super bombs in pause what from what -------------- Warblade - title and concept Galaxians - appearence of enemies (in some levels) Battlestar Galactica - music Galaga - ship Starflight one - Queen text Sinistar - wave two - bug - ship 1, ship 2 - boss Star Wars - wave three - ship 1,2,3 Star Trek - wave four - ship 1,2,3 - wave 81 - Tribbles - boss text Douglas Adams -> Cash bomb 42 Moving stars -> Tacscan Major Havoc? ;difficult levels: ; - easy ; lasers go "thru", laser strength = 2 ; hp - 1 ; shots -2 ; attack patterns count -1 ; attack pattern - 1 ; NO: boss hp /2 ; bug hp /2 ; normal shot damage = 2 ; super shot = 10 ; bugs spawn - 1 ; scoopies do not collide with enemies/debris ; ; - normal ; normal settings, lasers go not thru, laser strength = 2 ; normal shot damage = 1 ; super shot = 7 ; ; - hard ; lasers go not "thru", laser strength = 1 ; hp +1 ; shots +2 ; attack patterns count + 1 ; attack pattern + 1 ; boss hp ; bug hp ; normal shot damage = 1 ; super shot = 6 ; ; - impossible ; lasers go not "thru", laser strength = 1/2 ; hp + 3 ; shots max ; attack patterns count max ; attack pattern +2 ; normal shot damage = 1 ; super shot = 5 ; boss hp *2 ; bug hp Enemies - Intro ---------------- Enemies are defined with an EnemyDefinition. struct EnemyDefinition ds ANGLE8_TABLE,2 ; if zero -> BigBug ds BUG_ENEMY_HP, 0 ds ENEMY_STRENGTH,1 ; see above ds WAIT_ANIM_TABLE,2 ds ENEMY_BULLET_SPEED, 1 ; bug only (for now), lower nibble speed, uppernibble #xnnn, x= 1 can fire missiles ds ADDITIONAL_TYPE_INFO,1 end struct As of now two different enemies exist a) "normal" enemies b) Big bugs Normal enemies --- - enter in patterns - behavior of pattern and intro can be modified with "ADDITIONAL TYPE" - normal behavior: - intro via a pattern - after pattern a "delay" is done (enemy invisible) - enemy enters screen at a random position on thetop of the screen - enemy goes to its waiting position - waiting position: 20 different positions, where enemies wait and "wobble" waiting positions can be defined per level (pointer to waiting position table) - from waiting positions attack patterns are randomly initiated (count of attack pattern using enemies at the same time can be set via level information) - enemies can shoot (count of maximum shots per level canbe set per level) - probably of shooting (and of bonus drop) can be set per level The normal behavoiour of an enemie can be modified by "ADDITINAL TYPE" definitions, as of now: TYPE_NONE = 0 TYPE_DIRECT_WAIT = %00000001 - does not enter a "delay", will not be invisible, from last "intro pattern" position, the enemy moves to waiting position TYPE_DONT_SHOOT = %00000010 - this enemy can not shoot - never! TYPE_DONT_ATTACK = %00000100 - this enemy will not initiate an attack pattern (all three combined can be used to define "blockers") TYPE_DONT_WAIT = %00001000 - this enemy behaves in a "normal" level like a "kamikaze" attacker (it does not enter a waiting position after intro pattern - it "vanishes" instead) this can be used to have larger intro waves - but still restrict the overall enemy count to 20 on screen! Enemies Enemies are defined with an EnemyDefinition. struct EnemyDefinition ds ANGLE8_TABLE,2 ; if zero -> BigBug ds BUG_ENEMY_HP, 0 ds ENEMY_STRENGTH,1 ; HP ds WAIT_ANIM_TABLE,2 ds ENEMY_BULLET_SPEED, 1 ; bug only (for now), lower nibble speed, uppernibble #xnnn, x= 1 can fire missiles ds ADDITIONAL_TYPE_INFO,1 end struct As of now two different enemies exist a) "normal" enemies b) Big bugs Normal enemies – enter the game in patterns – behavior of pattern and intro can be modified with "ADDITIONAL_TYPE" – normal behavior: – intro via a pattern – after pattern a "delay" is done (enemy invisible) – enemy enters screen at a random position at the top of the screen – enemy goes to its waiting position – waiting position: – 20 different positions, where enemies wait and "wobble" – waiting positions can be defined per level (pointer to waiting position table) – from waiting positions attack patterns are randomly initiated (count of attack pattern using enemies at the same time can be set via level information) – enemies can shoot (count of maximum shots per level can be set per level) – probability of shooting (and of bonus drop) can be set per level The normal behaviour of an enemie can be modified by "ADDITIONAL TYPE" definitions, as of now: TYPE_NONE = 0 TYPE_DIRECT_WAIT = %00000001 – does not enter a "delay", will not be invisible, from last "intro pattern" position, the enemy moves to waiting position TYPE_DONT_SHOOT = %00000010 – this enemy can not shoot – never! TYPE_DONT_ATTACK = %00000100 – this enemy will not initiate an attack pattern (all three combined can be used to define "blockers") TYPE_DONT_WAIT = %00001000 – this enemy behaves in a "normal" level like a "kamikaze" attacker (it does not enter a waiting position after intro pattern – it "vanishes" instead) this can be used to have larger intro waves – but still restrict the overall enemy count to 20 on screen! Blocker example: The above shown blockers "protect" the attacking enemies. Each blocker in the example has about 20 hitpoints. Attack Pattern see also http://vectrexproject.malban.de/10th-of-march-2018-vectorblade-ii Addition to attack patterns – attack pattern are really something one would nowadays call "scripted enemy behaviour". Anyway attack sub-pattern definition can now also include "loops" – so the order of sub-patterns (in one attack pattern) is not necessarily linear anymore. Level Definition ---------------- 1. List of levels ................ Is a list of all levels (word list of pointers). List is 0000 terminated - if 0000 is reached the game starts from level 0. 2. Level Definition ................... struct LevelDefinition ds LEVEL_INTRO_PATTERN,2 ds LEVEL_WAITING_PATTERN,2 ds LEVEL_ATTACK_PATTERN,2 ; pointer to attack pattern list - pointer to 4 pointers to attack patterns ds LEVEL_ENEMY_DEFINITION,2 ds LEVEL_MAX_SHOTS_IN_AIR, 1 ds LEVEL_MAX_ATTACK_PATTERNS, 1 ds LEVEL_TYPE, 1 ds LEVEL_BULLET_BORDER, 1 ; how probable is it that enemies shoots ds LEVEL_BONUS_BORDER, 1 ; how probable is it that bonus drops ds LEVEL_BUG_DEFINITION, 2 ds LEVEL_BUG_COUNT, 1 ds LEVEL_SHOT_DELAY_BUG, 1 end struct LEVEL_INTRO_PATTERN one word pointer to level intro patterns, definition see there. LEVEL_WAITING_PATTERN one word pointer to level waiting patterns, definition see there. LEVEL_ATTACK_PATTERN one word pointer to level attack patterns, definition see there. LEVEL_ENEMY_DEFINITION one word pointer to level enemy definition, definition see there. LEVEL_MAX_SHOTS_IN_AIR Number of enemy bullets that are allowed to be "in the air" at one time. Capped to maximum number of enemy bullets (10). LEVEL_MAX_ATTACK_PATTERNS Number of enemies that are allowed to enter an attack pattern at the same time (no limit). LEVEL_TYPE A combination of following values and bit fields Value (only one of these at a given time) LEVEL_TYPE_NORMAL = 1 LEVEL_TYPE_KAMIKAZE = 2 LEVEL_TYPE_BIGGY = 3 LEVEL_TYPE_BONUS = 4 LEVEL_TYPE_BOSS1 = 5 LEVEL_TYPE_BOSS2 = 6 LEVEL_TYPE_BOSS3 = 7 LEVEL_TYPE_BOSS4 = 8 And bits in combination of the above entry: LEVEL_TYPE_SHOP_AFTER = %10000000 LEVEL_TYPE_WARP_AFTER = %01000000 LEVEL_TYPE_DONT_SHOOT_WHILE_WAITING = %00100000 LEVEL_APPEAR_AT_WAITING = %00010000 LEVEL_BULLET_BORDER A probablility value that an enemy will shoot. Only one enemy can shoot in each game round. A random value is determined (0-255) if the random value is equal or less the value given here - the shot will be initiated. LEVEL_BONUS_BORDER A probablility value that a dead enemy will drop a bonus A random value is determined (0-255) if the random value is equal or less the value given here - a bonus will spawn. LEVEL_BUG_DEFINITION If there this is a bug, a pointer (word) to the bug definition is given. A level can only have ONE kind of bug. LEVEL_BUG_COUNT Count of bugs this level has (only if bug level). LEVEL_SHOT_DELAY_BUG Delay value (in game rounds) a bug will delay between shots (not random!). 3. LEVEL_INTRO_PATTERN ...................... Intro pattern is 0000 terminated list of 3 values of an intro line. struct IntroLine ds LINE_PATTERN_DEF, 2 ds LINE_PATTERN_INVERS ,1 ds LINE_PATTERN_ENEMY_COUNT ,1 end struct LINE_PATTERN_DEF Is a word pointer to a intro pattern definition (see there). LINE_PATTERN_INVERS If 0 pattern is taken with original values, if !=0, then all x positions in the pattern are mirrored. LINE_PATTERN_ENEMY_COUNT A count of enemies this intro pattern is applied to. The actual enemy information is taken from the LEVEL_ENEMY_DEFINITION of the level definition. 4. LEVEL_WAITING_PATTERN ........................ Is a list of positions (y,x) where the enemies will "wait". Each spawned enemy receives a unique id. Only 20 enemies are allowed at any one time MAX. The unique id of the enemy (0-19) is an index to the y,x position within this list of waiting coordinates. 5. LEVEL_ATTACK_PATTERN ....................... Is a list of exactly 4 attack pattern definition. If an enemy of a level is randomly chosen to attack the player, than randomly one of the four attack patterns that are valid for the level is chosen and used. Each one of the four entries is a pointer to an ATTACK_DEFINITION (see there). 6. LEVEL_ENEMY_DEFINITION ......................... Is simple "counted" list of enemy definitions. It consists of two parts a) a count (byte) of enemy definitions to following b) a list of (count) enemy definitions to use in the level While the level is initialized (and the enemies enter with the intro pattern) above counter of enemies is kept and the counter modulo the "count"(of enemies defined) is matched to the enemy list. e.g. A enemy definition list for a level looks like: db 2 dw enemy1 , enemy2 Than e.g. the first ten enemies would be enemy1, enemy2, enemy1, enemy2, enemy1, enemy2, enemy1, enemy2, enemy1, enemy2. The modulo ensures that always an enemy definition is available however many enemies spawn and also allows for small lists. 7. INTRO_PATTERN_DEF .................... A intro pattern definition consists of several parts. struct IntroPattern byte delayBetweenSpawn byte initialDelay PatternLineList (zero terminated list of) end struct delayBetweenSpawn Is a delay value between enemies spawning (in game rounds). This delay should be chosen in regard to the movementspeed of the enemies. initialDelay Delay befor this pattern starts (in game rounds). This might necessary to defined when more than one pattern definitions are used. PatternLineList A 0000 terminated list of PatternLine definitions. This is no pointer! The following bytes represent the structure PatternLine until a line end is reached (adders are both 0000 AND the angle must be 0) The definition is as: struct PatternLine ds P_YPOS, 1 ds P_XPOS, 1 ds P_YADD, 2 ds P_XADD, 2 ds P_ANGLE,1 also loop destintion ds P_PATTERN_TARGET_RADIUS ,1 end struct In short: P_YPOS, P_XPOS (bytes) starting coordinates. P_YADD, P_YADD (words) hi/lo values to add to a 16bit coordinate. if both are zero this is taken as "end of definition" The values are "adds" to go from the above given P_YPOS, P_XPOS to the next lines P_YPOS, P_XPOS values. The size of these values are determined by the excel sheet and there using the provided "speed" P_ANGLE (byte) The angle to be used for the enemy display (0-7) P_PATTERN_TARGET_RADIUS (byte) RADIUS to check whether target position is reached, depends on speed. Note: It is possible to loop within one pattern definition list. In order to initate a loop, following conditions must be met - P_YADD, P_XADD must both be 0 (words) - the P_ANGLE than denotes the (1 based) pattern definition count within this PatternLineList. - if you loop the P_YPOS, P_XPOS of the loop initiating pattern should be the same as the P_YPOS, P_XPOS of the loop destination pattern - if you build loops within intro patterns, there is no way to "break" the loops, the enemies must be destroyed by the player, otherwise the enemies do not leave of their own! Definitions can be build using the excel sheet provided. More explanation can be seen at: http://vectrexproject.malban.de/10th-of-march-2018-vectorblade-ii 8.ATTACK_DEFINITION ................... An attack definition is a terminated (by 0000 as first two bytes) list of different types of patterns. The different single pattern definitions one complete attack pattern can have are applied one after another untill the list is terminated (or the attacker is dead). Depending on the kind of pattern the meaning of the data in one pattern line differs. One pattern line is 4 bytes long. All have in common, that the second byte of the definition describes the type of attack pattern. Following three types are possible: SINGLE_ATTACK_TARGET_ENEMY_PATTERN SINGLE_ATTACK_ABSOLUT_PATTERN SINGLE_ATTACK_RELATIVE_PATTERN In addition to above three pattern a fourth type is available: SINGLE_ATTACK_JUMP with that definition the next pattern line can be accessed via a "jump" to a different pattern. Thus reuse of sub parts of complete patternlist definitions is possible. The structure used: struct SingleAttackPatternLine ds (byte) not used ds (byte) SINGLE_ATTACK_PATTERN_TYPE ds (word) address of patternline in attack pattern end struct a) SINGLE_ATTACK_TARGET_ENEMY_PATTERN (4 bytes) This is the most simple attack type. That pattern moves the enemy from the current position to the position the player resides at the moment the pattern is initiated. The structure used: struct SingleAttackPatternLine ds (byte) SINGLE_ATTACK_SPEED ds (byte) SINGLE_ATTACK_PATTERN_TYPE ds (byte) fill up to 4 bytes with 0 end struct SINGLE_ATTACK_SPEED Speed with which to attack. All coordinates and movement are calculated in game in relation to start position and player position. b) SINGLE_ATTACK_ABSOLUT_PATTERN (4 bytes) This pattern moves the enemy from the current position to the absolut position denoted by the pattern. The structure used: struct SingleAttackPatternLine ds (byte) SINGLE_ATTACK_SPEED ds (byte) SINGLE_ATTACK_PATTERN_TYPE ds (byte) YPOS ds (byte) XPOS end struct c) SINGLE_ATTACK_RELATIVE_PATTERN (4 bytes) This pattern moves the enemy from the current position to coordinates relative to its current position. The structure used: struct SingleAttackPatternLine ds (byte) not used ds (byte) SINGLE_ATTACK_PATTERN_TYPE ds (word) RELATIVE_MOVEMENT_PATTERNLIST ds (byte) XPOS end struct Since relative movements are in general more complex than the other attack patterns, this one uses an addition structure to define relative movement. The additional structure pointed to by RELATIVE_MOVEMENT_PATTERNLIST (see there) consists of a number of relative movement definitions. With this "outsourcing" reuse of sub-parts is possibly (e.g. looping). 9. RELATIVE_MOVEMENT_PATTERNLIST ................................ Is a list of terminated (0000) 8 byte wide relative pattern definitions. The definition is as: struct PatternLine ds P_YPOS, 1 ; relative ds P_XPOS, 1 ; relative ds P_YADD, 2 ; movement 16 bit ds P_XADD, 2 ; movement 16 bit ds P_ANGLE,1 ; 0-7 ds P_PATTERN_TARGET_RADIUS ,1 end struct The definition is very similar to the definition of PatternLine for the intro patterns. In short: P_YPOS, P_XPOS (bytes) destination relative coordinates. P_YADD, P_YADD (words) hi/lo values to add to a 16bit coordinate. The values are "adds" to go from the above given P_YPOS, P_XPOS to the next lines P_YPOS, P_XPOS values. The size of these values are determined by the excel sheet and there using the provided "speed" P_ANGLE (byte) The angle to be used for the enemy display (0-7) P_PATTERN_TARGET_RADIUS (byte) RADIUS to check whether target position is reached, depends on speed. Definitions can be build using the excel sheet provided. More explanation can be seen at: http://vectrexproject.malban.de/10th-of-march-2018-vectorblade-ii --- Player shots As of now player shots can be one of: - 1 shots - 2 shots - 3 shots - 4 shots - blaster shots - laser shots (perhaps later 1* shot, 2* shot and 3* shot - which are "old style" shots) all of the above can be combined with one or two scoopies. all of the above can be combined with or without autofire. There are in general 4 different behavious possible flavours. - full damage - partial damage - timed damage Full damage shots 1 shot and blaster shot are full damage shots. This means the complete damage the shot can make are done when the shot hits an enemy. The shots is removed from the object list and is gone for good Partial damage shots 2,3,4 shot are partial damage shots. This means, when the shot hits an enemy the enemy recieves as much damage as it can absorb till is destroyed. If the shot strength (2,3,4) is more than the enemy needs to be killed, the shot is reduced in strength and continues. The internal handling of these shots has chanegd from beta 5 to beta 6. Befor the reduction was alsways done in "1" steps. Now the strength is consumed as by as much as the enemy strength in one go. This gives more efficient collision detection. For optimization purposes, partial damage shots only are considered with "normal" enemies (see below). For bosses and Bugs, these shots are treated as "full damage shots" - since the said enemies have "many" hitpoints and most of the time they would be consumed fully anyway. Timed damage Lasers do damage over time. If the player shots, the laser is active for a short amount of time (10 rounds). Each round the laser does a small amount of damage. Timed shots with autofire fire continuesly! Scoopies in general always shoot the same kind of shot as the player. If the shot type is partial, each of the three shots (scoopy left, player, scoopy rigth) can have different partial shots - depending on how much shot power has been used to destroy enemies. Scoopy shots in general Programmatically the scoopy shot is an extention of the player shot - and not a distinct "shot object" of its own. Each player shot has two "flags" whether it also has a scoopy shot on the right and/or/left side. The flag consists of 4 bits. These for bits also encode the "partial" shot information. The collision detection of the scoopy shots is also done in relation to the player shot (add/subtract certain position information) Collision detection There are different kind of enemy objects. For each kind the collision detection might be handled differently. Enemy types: "normal" enemy shield enemy Bug enemy Boss Swarm Debris Collision detection - normal enemy The collision detection is realized in a subroutine call from each enemy behaviour. The subroutine in general tests only TWO selected shots if they hit or not. The shot selection (which of all possible shots should be used) to be tested are located in different parts of the code - depending on the stage of the game. The selection itself is realized in two macros called INITIALZE_SHOT_TEST_MOVE_BLOCK_1 (and 2). Per default these are called in the background star "moveto" wait loop. The selection considers information about the general location (if the shot is below the lowest enemy - it is not (ever) tested) to the enemies, whether it has hit in the round "before" and the general object distance of the other to be tested shot. The test collision subroutine finaly lead to another macro call "COL_DETECT_ENEMY_SHOTS_ENEMY" which realizes the collision detection. For easier y testing, all enemy objects have the lowest (vector-) position as a starting point, the starting point also is always x = 0 - centered! After initial y position testing - the "interesting" x position testing is done using positive only coordinates (+$80 to all positions). This reliefs some of the hassels dealing with two-complement 8bit numbers and Z, C and V flags. In general the enemy ship (x)position is taken as the base. If the player shot is within the radius of the bullet (within one radius to the left or one radius to the right) the shot hit the enemy. The radius (due to internal comparissons) is unique to each shot. (This made more sense, when I used 1,2,3,4 horizontal shot design instead of the now used vertical design) Because of the result of the above comparisson if not hit, the routine knows whether the shot is to the left or right of the enemy. If scoopies are present, than a further testing can be done. It is assumed that the radius for the scoopy shot is always the same as the "main" shot. If the shot is within 3 radius of the x position of the enemy (and a scoopy on the correct side is present) than the scoopy scored a hit. Depending on the shot type, damage is reduced from the enemy hitpoints, the shot power is reduced or the shot is removed. Laser specialty Due to the nature of the laser (and difficulty level - see below), the laser has to be shortened, when it hits an enemy (to the lowest enemy it can possibly hit). This makes it necessary to have a special treatment for the laser. The above logic is done for all enemies - but instead of removing hitpoints and destroying enemies - the location of the enmies is compared to a special laserEnemy position. After all enemies have been tested, the lowest enemy is known - and only that enemies is reduced (and maybe killed). The location of the lowest enemy is given to the drawing routine of the laser, and it is only drawn up to that position. This logic is also done (if appropriate) for the left and right scoopy. Collision detection - Shield enemy Same as above. But the shot is always fully consumed, and the shield does not take damage. Collision detection - Bug enemy Nearly the same as above, but the final detection is made in another set of macros "COL_DETECT_ENEMY_SHOTS_ENEMY_BUG". There some bug specialties are considered, like: - bugs move differently - so the internal position is represented differently - bugs can have up to 255 hitpoints (normal enemy max = 31), so the hitpoints are calculated differently - due to optimization shots are not treated as partial shots Collision detection - Boss Each boss has its own collision detection, since they are all "completly" different. Due to optimization shots are not treated as partial shots Collision detection - Swarm The Swarm of boss 1 is different in many aspects. The sheer amount of enemies and the "near" position to the player, and the small size of the enemy makes it necessary to test each shot with each enemy. Chosing only "several" shots to test results in many shots just "going thru" the enemies. This strategy makes the swarm extremly sensitive to shots (more exact than any other collision detection used within VB). It slows things down - but it has been balanced out, so that the refresh rate is within limits. Collision detection - Debris Debris really is a special kind of enemy, which can not be hit by bullets. No collision detection done here. Difficulty level As of now there are four difficulty levels: EASY NORMAL HARD IMPOSSIBLE The difficulty has impact on the behaviour of player shots. EASY shot 1,2,3,4: damage per bullet = 3 blaster shot: damage = 10 laser: = 2 damage per round NORMAL shot 1,2,3,4: damage per bullet = 2 blaster shot: damage = 7 laser: 1 damage per round HARD shot 1,2,3,4: damage per bullet = 1 blaster shot: damage = 6 laser: 1 damage per round IMPOSSIBLE shot 1,2,3,4: damage per bullet = 1 blaster shot: damage = 5 laser: 1 damage every second round ---- Cartridge design A - 64k ROM, a 32k bankswitched with PB6 - 16k RAM from 8000 - bfff - DS2431 for saving Eprom Vectrex a0-a14 a0-14 a15 pb6 ~CE a15 RAM Vectrex a0-a13 a0-13 ~CE NOT a15 DS 2431 Vectrex GND = +5v with 3,3K resistor data PB6 Cartridge design B - 128k ROM, a 48k bankswitched with PB6 = 96K used by vectrex (32k not usable) - DS2431 for saving Eprom Vectrex a0-a15 a0-15 a16 pb6 ~CE a14 AND a15 DS 2431 Vectrex GND = +5v with 3,3K resistor data PB6 Where is what! ######################################################################## Main0 ----- includes: - Wait_Recal_noShift (from mh_havoc.asm) - queryJoystick - smartlist 7 (normal enemies/Bonus etc) - smartlist 16 (Tile Set) - smartlist 50 (Boss intro) - sound (sfx) - draw_synced_list - dodger.asm Dodger - text + Landing on asteroid part - mh*.* Major Havoc - desktop.asm The Desktop Scenery -> titleScroll.asm The Desktop text scroll -> particle.asm The Desktop particle -> bossXCode.asm Intro to boss fights Ready player One (using an own FONT) ######################################################################## Main1 includes: - Wait_Recal_noShift - queryJoystick - smartlist 7 (normal enemies/Bonus etc) - smartlist 16 (used for ABC) - all font 5 stuff - sound (sfx) starBehaviour (simple, included player move/init) test for rank advancement (return from shop) - and show that -> includes "ranks.i" calculation of gameOverFinalScoring (from bank 3) -> include "sound.asm" -> include "arkosPlayerAllChannel.i" -> music all things musik/sound -> include highScoreEdit.asm highscore edit (new) -> include "FastABC.asm" (Smartlist 16 ABC) -> include shop.asm all things shop most achievement testing done - endOfGameAchievementTest - afterChallengeAchievementTest - enterShopAchievementTest - exitshopAchievementTest - levelRollOverAchievementTest - levelDoneAchievementTest black hole (circle data, debris data, fighter data) -> include "superdiamond.i" The Super diamond "level" achievement display (title screen) ######################################################################## Main2 includes: - JoyDigitalHorizontal00 - JoyDigitalVertical00 - getButtonState - all font 5 stuff - smartlist 7 (normal enemies/Bonus etc) - smartlist 50 (Boss intro) - scoopy save/retrieve init routines for cartridge start, first calibration jump options screen -> include "flashSupport.asm" desktop screen loop (calling oneVBTitleStep in bank 0) dodger result printing super diamond result printing challenge result printing boss result printing warp failure intro printing level intro printing word to decimal (string) leadingZeroToSpace initTitleRAM csa_to_bcd highscore checking -> endter high score edit (gameOver00) game over loop (not done) -> include pause.asm all things PAUSE random money sucker init spawn random money (for mothership destroy) rank marker spawning boss "head" function (button status joytick etc) gameloop for bank 2 (player shot + bonus display) Smart bomb stuff all data for bonus/boss all boss display code all bonus display codeall plaer shot display code "perfect"/"achievement" fireworks all achievement strings (for title) 4096 byte for flash "Ram", including first values ######################################################################## Main2 includes: - scoopy save/retrieve - smartlist 7 (normal enemies/Bonus etc) - all font 5 stuff - smartlist 7 (normal enemies/Bonus etc) main entry -> jump to bank 1 main game loop add score routines (respecting multiplyer) main rount subroutine (for non main game "levels") setup routines (initGame initLevel init this and that) display static bonus failure level handling dying loop player/boss explosion stuff boss fight "player" loop stuff spawn 42 notes for cash bomb -> include "messenger.asm" all Strings for "messages" - include boss* all boss inits -> include "calibration.asm" all calibrations -> include bonus.asm all bonus inits -> ainclude object.asm/enemies... all enemy handling -> include "f_Levels.asm" all level information -> include "dodger.asm" init dodger