120

Hi HPMAN,
yes, the bios call method would be desirable... but, as always, the ASM code is the problem...

According to the wiki I think I need to:
1) change "_CDDA_FLAG= 0" in file "crt0_cd.s" to "_CDDA_FLAG= 2" ?
2) call the CDDA routine via ASM
__asm__ ("jsr 0xC0056A");
3) But how to write the command / track number to register D0? As a word? For instance command 04, track no 02 would be 0x0402?
__asm__ ("move.w d0, 0x0402");

121

Write an asm sub in a .s file (then add to project makefile etc):

.globl CDDA_command CDDA_command: move.w 6(a7), d0 movem.l d2-d7/a2-a6, -(a7) jsr 0xc0056a movem.l (a7)+, d2-d7/a2-a6 rts
Declare it somewhere in a .h file:
void CDDA_command(ushort cmd);
I'm not sure if the bios call scraps the registers, registers push/pop around the call might be unnecessary.


Staying in C, it should be something looking like:
__asm__ ( "move.l %0, %%d0 \n" "movem.l %%d2-%%d7/%%a2-%%a6, -(%%a7) \n" "jsr 0xc0056a \n" "movem.l (%%a7)+, %%d2-%%d7/%%a2-%%a6 \n" : :"r"(/*CDDA code expression*/) :"d0", "d1", "a0", "a1", "cc" );I hardly ever use this method tho, so it might need some corrections.

122

Wow - impressive stuff, thanks a lot for the code!
Seems to be a bit more complicated than I have thought before. Will try out both methods and report back as soon as possible.
#mercicool#

123

Both methods work great emulated in NeoRaine, thanks again for your ASM magic #prosterne#
Unfortunately, no Hardware test yet because I wasted my last two CDR's for trying to burn them in that unusual "mixed mode" Neo Geo CD format (https://wiki.neogeodev.org/index.php?title=Burning_CDs).
Need to buy some new CDR's next week... #doozza#

124

NeoHomeBrew (./123) :
Both methods work great emulated in NeoRaine, thanks again for your ASM magic #prosterne#
Unfortunately, no Hardware test yet because I wasted my last two CDR's for trying to burn them in that unusual "mixed mode" Neo Geo CD format (https://wiki.neogeodev.org/index.php?title=Burning_CDs).
Need to buy some new CDR's next week... #doozza#
Good news they work emulated, my offer still stands if you want me to test, if you have the ISO, cue and wave file, i use fireburner no mucking around like other programs!
avatar

125

Thanks for your offer but I want to find it out by myself (by the way, I have used exactly that Fireburner program which has made my Win 7 system freeze and killed one of the two CDR's).
Have ordered an actual Nero version now and I think it should work.

126

Ok no worries, by the way I don't select the pre selectable options, just right click on the cue file and select fireburner which will take it straight to the ready to burn screen.
avatar

127

Finally, burning in "Mixed Mode" with Nero Burning Rom has worked. Both ASM methods to play CDDA tracks are working fine on the real hardware. sun
Compared to ADPCM-A, the sound quality of CDDA is just awesome, too bad that the MVS/AES system does not support it.

128

Black_Jack (./114) :
Interesting!
May I suggest u, if didn't already done, to create multi-level screen (maybe 2 or 3 on top of each other) with secret areas and mid-bosses?
Like in "Devil-Crash" kind of games (that was a flipper game actually but I think it could fit here as well).

Hi Black_Jack,

I have tried to follow your suggestion and have made the background tile layer scrollable, with some kind of a "camera" which follows the ball sprite.
Scrolling the shrinked background tiles works but updating the position of all the animated block sprites (216 sprites in total) each frame has slowed down the game too much.

But anyway, I have used the "scrolling shrinked tile grid" for something different - a 20 x 20 pixel tile background for a Top-Down RPG.
Not sure if that is a good idea since it is quite spite wasting (34 instead of 20 sprites for a full screen) but on the other hand it allows to use tile graphics with a better resolution compared to the usual 16 x 16 pixel tiles.
Only 4 x 4 pixels more per tile sound not that much at first but it means a lot when dealing with pixel art graphics.
I have made a quick mock-up with a little witch walking in a scrolling dungeon room.
The tile graphics are exchangeable and are "inserted" from an external tile set graphic thanks to HPMAN's SC1Put method (I have used the "Tiled" editor to build the room array).

129

NeoHomeBrew (./127) :
Compared to ADPCM-A, the sound quality of CDDA is just awesome, too bad that the MVS/AES system does not support it.
Well, they had to make the CD system superior to the MVS/AES on at least one point. Otherwise people like Kuk would be really, really sad hehe

NeoHomeBrew (./128) :
But anyway, I have used the "scrolling shrinked tile grid" for something different - a 20 x 20 pixel tile background for a Top-Down RPG.
Looks good top
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

130

Thanks for the update NHB glad the CDDA works on real hardware!

Like the little dungeon demo too, maybe something for the future?
avatar

131

Thank you for your suggestion, to learn how to control something new on the Neo Geo hardware is always fascinating classe

The dungeon demo is just a proof of concept, nothing more for now. Developing a complete RPG project would be an almost impossible task for one person
but, nevertheless, I think I will return to it one day. I am an addicted Zelda fan since my childhood and I am still playing the older pixel-art (non-3D) versions of the game
like "A Link to Past", "Link's Awakening", "Oracle of the Ages/Seasons" and "Minish Cap" again and again. Making a game with a similar concept would be a dream but
I think I still need more experience in programming and also in drawing pixel art to have the abilities and the tool set to make it happen the "right way".

132

According to Blastar's sugestions a while ago I have now added three new special block types to Hypernoid to make the game more challenging and richer in variety.

The new blocks are:
- Bumper Block (increased ball speed until stopped on paddle)
- Demon Block (spits projectile towards player's paddle - will cause an instant lost if the paddle gets hit)
- Jelly Block (changes ball direction angle randomly)

A Bomb Block is also planned and will be added next. Thanks to Blastar for the great ideas #hamwink#

133

Nice smile
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

134

Haha I like the Demon block! Certainly adds a little variety to have something fire back at you! Thanks for the update
avatar

135

the implementation of this special blocks is really good, looks like fun! top

136

Hi, its been 4 months since the last update, how are things progressing?
avatar

137

Hi, to all - I'am sorry for ghosting ghost a while. Just want to post a video of the current version of Hypernoid.
I have changed a lot of things, most important is the new lives-based game logic and the completion of all 45 regular stage designs.
The game is almost finished, I hope you'll enjoy watching wink

138

Great news !
And it's still pretty cool.

A physical edition is on his way too ?
avatar
@originalfei
In pixels we trust.
ORE WO DARE DA TO OMOTTE YAGARU !

139

Fei (./138):
A physical edition is on his way too ?
Thanks a lot smile Not yet, I will see how to release it when the game is finished to 100% (there are still some details to add, more music tracks for example).

140

Really looks (and sounds) great love
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

141

This is great news! Happy 2021 to you! I'm looking forward to checking the video out on my TV. Hypernoid is epic! Welcome back looking forward to more posts you always have something interesting going on!

I have a question for you regarding scaling. I know you did extensive tests and posted some amazing code on this thread. Is there a flag you know of so that a background layer can be scaled without the seam issue? Games like Samurai Showdown constantly scale the entire scene. Background and character sprites.

Art of Fighting 2 has a crazy intro that scales the sprites and backgrounds 4x and displays the images in 4 quadrants on the same screen!



I guess what I'm confused about is... does a Scroller (Background GFX) taking a typical 21 sprites need to be split in half to take up 42 sprites just to ensure the seam issue that happens on the 14th or 15th sprite can be hidden during scaling or is there a flag that can be set to allow the original 21 sprite scroller to be scaled freely taking far less sprites and effort to mask the seam?

142

Games like "Samurai Showdown" use only 32sprites (512 pixel width) for the background to avoid the loop problem, so they are not affected by a "seam issue" or similar. In theory it should be possible to avoid both problems by precalculating all x/y- and shrink-values, this would waste some romspace but would also be faster than realtime calculation.

143

Brunni (./140):
Really looks (and sounds) great love
Thanks a lot for your kind comment smile

144

Hi Mega Shocked, a Happy 2021 also to you too!

Mega Shocked (./141):
Art of Fighting 2 has a crazy intro that scales the sprites and backgrounds 4x and displays the images in 4 quadrants on the same screen!

I think this is just a neat trick - I guess these are four pre-rendered screenshots which are scaled down and not real game scenes (this would exceed the 96 sprites per scanline limit).

Mega Shocked (./141):
I guess what I'm confused about is... does a Scroller (Background GFX) taking a typical 21 sprites need to be split in half to take up 42 sprites just to ensure the seam issue that happens on the 14th or 15th sprite can be hidden during scaling or is there a flag that can be set to allow the original 21 sprite scroller to be scaled freely taking far less sprites and effort to mask the seam?

The seam issue only happens when scaling vertically (at the 16th "pixel line" of the 16th tile), you only need to take this into account If your backgound height is bigger than 16 tiles (256 pixels).
As Blastar wrote the maximal horizontal scaling size is 32 tiles (512 pixels).

145

Thank you Blastar and NeoHomeBrew for the insights.

I have always been fascinated by the scaling effect.

I'm sorry in advance if I sound thick here.

If you did have a 512*512 background image.

We know based on Blastar's statement the horizontal width would be accommodated if a scale were to be performed.

NeoHomeBrew you mention that 16th 'pixel line' of the 16th tile is where the seam occurs.

In the case above we would get a nasty seam as the height is taller than 256 pixels if we perform a scale.

Is there a way to fix the seam programmatically so the image appears in the correct proportion, it is scaled to or are you stuck at that point?
Blastar mentions lookup tables but where I am not clear is that the hardware seems to force the seam on vertical scales that exceed 256 pixels. Can the seam be closed somehow?

I have to imagine that "Samurai Showdown" has backgrounds taller than 256 pixels. The scaling will reduce the image size and there needs to be additional image data above the viewable area to ensure there is always enough 'background' on the 320x224 screen.

Sorry to be a nag this has been swirling around in this head of mine for some time.

*Edit
Ok so I feel like a dork. NeoHomeBrew you mentioned in your previous post

That means, if you want to shrink a sprite with a tile-size of 16 or more, you have to split the image and re-assemble it again at the "repeating point" between tile 1 and tile 32 to avoid pixel distortion at the 16th line of tile 16.

Does that mean a 512 image that takes 32 sprites needs to be cut in half? Meaning you need to load two 256*256 images equaling 64 sprites just to see the assembled 512*512 image scaled?

*Edit

Really sorry to highjack the thread I watched your video a bunch of times and I'm pretty sure your video and code answers my questions. I need to get your demo with my own basic image and play around to see if I can make the seams match up!

146

Hi,

I have made a little test project to illustrate what happens when shrinking a maximum 32 x 32 tile grid.
As you can see in the following video, the 16th pixel line of the 16th tile (light blue colored) and the 1st pixel line of the 17th tile (orange colored) are stretched for the vertical shrink.
That means, if you want to shrink a graphic which is bigger than 256 pixel in height, you need to split the graphic and put the lower half in the blue+pink area and the upper half into the green+yellow area.



Here is the graphic I have used:

bg_max_spr.png

147

Epic!! This clears up so much! Thanks for putting the time in to illustrate this concept! I was always so confused by the damn seams!

Hypernoid pulls out all the stops plus you have a special controller! This game is a masterpiece and technological wonder! I'm so thankful for all the hard work you shared with us! It has been such a joy to follow your development journey. Personally you have helped me tremendously this thread is such a great read! Some of the crazy stuff you do is sometimes way over my head then years later I want to pull something off and sure enough you have already mastered it!

On another note so good to have any block count in any configuration and still tons of sprites for projectiles and power ups! It made me think about breakable blocks in Mario Bros etc. There are so many amazing techniques you have used and when combined with your amazing talent....well HYPERNOID!!

148

Hi, no problem, it was fun to make this little demo. Thank you a lot for your kind words about Hypernoid grin