1

I'm very happy with my 'biggest' homebrew project 'BlutEngel', but it's very incomplete. I used SNASM, this is no longer running with Win7+, on the other side, the code is very stange and high optimized, it's hard to read and to expand... many things are hardcoded. Last Friday (3 days ago) I started a new project: Blutengel II

First I switched from Context (it's great but abandoned) to NotePad+:
+ Codefolding
+ FunctionList
+ special neogeo-lexer (like context)
+ run batch using F9 key (like context)
with this new setup (it takes some time and needs some workarounds) it's easier to handle bigger projects.

Here is my first test-video - no sound and level-design is not that great but I can show you the engine. It's a complete rewrite (pure ASM).. it's not optimized yet but already faster than before. I enabled the powermeter ... it's close to real hardware!

what's done:
- 3 different upgradable weapons (starsoldier like) but no lazer or megabomb yet
- level heigh is up to 2048 tiles (25min playtime) ~200 used in this video
- 2 layers of enemies (ground = no collision) & flying enemies.
- 3 different enemies with different aimed(!) shots
- 3 different enemy-shots
- some animations (explosions, coins)
- binary size (only code) ~16kb
- gfx is not 'art'... just placeholder!
- 2nd bg-layer (colorfade) is done with IRQ2 (scanline), this saves sprites (remeber: only 96 sprites per scanline)

2

Very nice smile
The placeholder graphics actually create an interesting wireframe look - maybe you should keep them as secret mode wink
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3

Cool to have some news of yours projects
avatar
La Neo Geo CD à son site (en tout cas elle essaye...): http://neogeocdworld.info/
Le forum de la Neo Geo sur Yaronet: forums/264

Un petit site sur l'Atari Falcon avec plein de trucs bon pour votre poussin: http://falcon.ti-fr.com/

4

Hi Blastar,
great to see a revival of your top-down shooter project. Seems to be a challenging game play and the bullet patterns are looking great.
I have added some colors to your tank sprite, I hope you like it. Feel free to use it if you want:

Scaled x4:
tank-4x.gif
Original size:
tank.gif

5

Very very nice!!!
www.universebios.com

6

Really Cool!
RetroIsTheOnlyFuture!

7

thanks for feedback, I will keep this thread updated.

@NeoHomeBrew: nice (and quick) pixelart... I'm not an artist! :-(

8

Fantastic !
avatar
@originalfei
Homebrews Connexion
In pixels we trust.
ORE WO DARE DA TO OMOTTE YAGARU !

9

This is bad ass!

10

first I want to fix & enhance all the small basics
now 256 bullets moves as a (close to perfect) circle within 1 frame (but outside vblank and everything disabled)... aiming is very fast & accurate , the 5x shot looks correct now.

0016_0_o.png

11

Could you please remove the "private" setting for this video?
YouTube refuses playing the video and displays an error message... #4debf97e44f2631b6e738#

12

@NeoHomeBrew: fixed!

here is a short vid with the first set of bullet-pattern. I will add a special pattern (or set) to every enemy to avoid oldschool-single-shots. boss-pattern will be more complex!
I changed the gfx (a bit) because it was not that easy to see and check the different sprite-layers.



test-level with changed gfx and new bullet-pattern... everything enabled. easier, less chaos but still challenging!
sometimes the player jumps to position 0/0, this is because of hit-detection (the small red 8x8 square).

13

Thanks wink This is a serious bullet-hell, the patterns look awesome!

14

Its coming on very nicely!
www.universebios.com

15

Looks great Blastar. I hope you will keep on going and make this into a full game. I like too that you are working hard on getting the basic system working before you flesh it out.

Being curious, I have a couple of questions about the implementation. Do you use rectangular/square 'collision zones' for the collision system? Or is there another way to reduce the number of collision checks per frame?

Also when you have a bullet at an angle like this (see image below). Do you do a polygon check or one (or more) box checks? What is the best way?

NeoBullet2_zpspjpgs2b3.jpg

16

for most games accurate collision is not needed, I use a simple and fast box-collide routine with variable box-sizes, no optimizations yet - works great. I check all collisions every frame, no problems so far - there are more critical parts than this, moving 100 enemy-bullets takes more raster-time than 100 checks vs. player!
test for slower objects (most enemy-bullets or upgrades) you can split onto 2 frames

17

Apart from the bullet collision optimisations you already mentioned (not checking every frame, taking bullet speed into account), You can also allocate enemy buttets a counter based on how close to your ship the bullet is when it is first drawn and the expected bullet speed. You count down the bullets timer every frame, only after it's hits 0 do you start proper hitbox detection for that bullet. This is helpfull when there are bullets fired in set patterns but its an optimisation not really needed until you see your starting to run out of cycles in a single frame. It would be good pratice to allow for a byte (or word) var for each bullet (or bullet pattern) now in case you need it later.
www.universebios.com

18

hmm, may not work in this type of game (may work with others) because of slow shooting-rate you can go very close to an enemy.
calculating the distance from enemy (start of enemy-bullets) to player will also take some time and do not forget the extra check for this counter.
there are some free words in my structures, I will try this when I run out of raster-time.

19

blastar (./16) :
for most games accurate collision is not needed, I use a simple and fast box-collide routine with variable box-sizes, no optimizations yet - works great. I check all collisions every frame, no problems so far - there are more critical parts than this, moving 100 enemy-bullets takes more raster-time than 100 checks vs. player!
test for slower objects (most enemy-bullets or upgrades) you can split onto 2 frames

I can understand that. VRAM access does seem quite slow on Neo Geo. You might have trouble if you have a lot of enemies on screen at the same time as a lot of player bullets. E.g. 40 player bullets x 80 enemies = 3200 collision checks. Then you would probably need collision zones to reduce the checks

I didn't know about that method Razoola. I suppose you have to take into account that the player's speed too since they may move also towards the bullets.

20

what classic console-game handles 80 enemies at the same time on screen? 20 enemies should be enough for 2d-shooters or most other games. smile
in my opinion doing a collision-check in the correct order is more important than any other optimization, collision zones are overrated because you need additional checks for every object. a successful collision-check needs 4 CMP.W but most will fail after 1st or 2nd check -> no collision! checking each object and sorting to a different zone is wasting of time!
VRAM access is slow but moving all bullets (changing x- & y-pos incl. check 'out of screen') without updating VRAM takes more time than collision-checks!

@CosmicR
What's your solution or routine for a collision check?

21

Yes it may not work for all bullets but can work for set bullet patterns.
www.universebios.com

22

blastar (./20) :
what classic console-game handles 80 enemies at the same time on screen? 20 enemies should be enough for 2d-shooters or most other games. smile
in my opinion doing a collision-check in the correct order is more important than any other optimization, collision zones are overrated because you need additional checks for every object. a successful collision-check needs 4 CMP.W but most will fail after 1st or 2nd check -> no collision! checking each object and sorting to a different zone is wasting of time!
VRAM access is slow but moving all bullets (changing x- & y-pos incl. check 'out of screen') without updating VRAM takes more time than collision-checks!

Apologies for late reply Blastar

Yes you make a good point! There are very few schmups that feature lots of enemies on screen at the same time. Maybe if you have a boss that fires lots of destructible bullets (missiles?) you would need zones. For example the crab boss in viewpoint which fires those bubbles you can destroy. If you had a gameplay mechanic in the game where you could destroy bullets they would be useful. Also 2 player games could need them - More enemies, bullets on screen etc. Viewpoint again being an example since the 2nd player mode was hidden possibly because they found it hard to add more enemies and keep the speed up.

Maybe an updated version of Asteroids on a less powerful system could make use of them if you really had a lot going on, on screen. Hmmm but yes not many games would need zones. I always assumed that you would need them in a bullet-hell game - but I guess not!

blastar (./20) :
@CosmicR
What's your solution or routine for a collision check?

I am not a very experienced coder in 68k so I don't know the best method. I was just trying to learn from you smile A lot of people online suggest quadtrees. I did use rectangular collision zones in a demo I made a few years back. And I can confirm the game did slow down before i added them. (it was written in a high-level language though - BlitzMax) I only originally made this demo at the time to test collision zones out. It was a a lot of work adding them - I think I had to keep record of the four corners of each object and I used linked-lists added to each zone and then added or removed objects form the lists as the aliens,bullets etc moved about. Then I just cycled through all the zones doing collision checks for each one. You could probably maintain a linked list of collision zones too if you wanted. It's a bit buggy but it works pretty much and displays how many collision checks are being done each frame at the top of the screen. But like you say not worth doing unless you want a lot of enemies onscreen at same time.

https://www.youtube.com/watch?v=iMPbbvQmOW0

23

I tried BMX for some time but i did not like it that much... too much focussed in games, too limited but good and fast when doing prototyping and testing new ideas.
I joined some smaller bmx-coding-compos with funny rules!

here is a small bullethell-game (incl. src) but be warned... it's very optimized and strange because of a 4kb bmx-file-limit! fou
youtube & files

here is a small one-level-mario-game... without sound because there was a 12kb bmx-file-limit without any external files, everything (gfx & leveldata) is inside the bmx-file... don't try to understand the source! hypno
youtube & files

I did not played bullethell_4k for years, I totally forgot how much I liked this one - maybe I will change BlutEngel II from level-based design to an wave-based shooter... space invaders meets bullethell. I believe this will work better with the limited screen (304x224), needs less checks (sprite vs. screen-bounds), scrippted enemies with better bullet-patterns...? grin

24

Very nice game, esp for 4k. You certainly got a lot of bullets on screen there! I like the gfx style and the industrial music.

I quite liked Blitzmax because you could add modules. I wrote a couple of games that used Box2D/Chipmunk for their physics and you could add mp3 player support etc. It was limited in graphical effects I think though and reading pixels on the screen was difficult etc. I haven't used it for a while now though. I keep meaning to make a Neo Geo game!

EDIT you've added Mario. I will try him out next

25

Hello,
for shoot them up, I think circle collision makes more sense , it's quite faster just compare if the distance between 2 entity is smaller than a value. use square for that. you can find sample code here. nice demo btw!

https://openclassrooms.com/courses/theorie-des-collisions/formes-simples

if your projectile is rectangular just add a circle at start and one at the end and your good to go, add more for longer projectile should be still better than rectangular/recangular ones or wrost polygonal check.
avatar

26

this is coming along great! the movement and bullets are very good, are you doing the sprite work yourself or teaming up with people? I feel this game could be great if the sprite work is good, makes an amateur game into a professional one.
avatar

27

No updates since Feb, any news on this Blastar?
avatar

28

hi,
I'm very busy with another project (non neogeo related, for the company I work for) so everything is slowed down.
I changed gameplay from level- to wave-based, so I have to rewrite some parts.
sadly, NEOBITZ-Z80 does not work with my NeoGeoCD-AIO-files so I started my own little Z80-Project, because of this I asked here how to decode ADPCM-A. Now it works very well on CARD & CD (except ADPCM-B on CD) - but only ready for private use (yet):
- more complete INITs & 64byte FIFO-Ring-Buffer (thanks 'Ver 2.0 by Mr.Pac h Ber.02/02/14')
- ADPCM-A & -B support (thanks freem)
todo:
- some special commands (volume up/down/fade)
-...

29

Thanks for the update Blastar.

Why did you change from level to wave, was it purely taking longer to create levels?

Look forward to seeing some new footage in the not too distant future!

Edit:

Off topic from this game.

I have burned CDs your previous NG homebrew games, Blut Engel, Ngem2k, Neo Puzzle League but none of them boot on my CDZ, is this a known issue or do they only work in emulators?
avatar