Is there a memory limit on the Dreamcast for BennuGD ?

Started by aliasbody, July 05, 2014, 06:31:18 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

aliasbody

Hello Everyone,

I am new here (so hello :D). I am trying to create some games in BennuGD but I have a problem before starting. I've seen in the french website of BennuGD that there is a memory limit of about 9mb in the Dreamcast. So my question is... Is this true today ? (since the forum talks about Fenix and not BennuGD), and if it is still the case then how does Stree of Rage Remake v5 manage to do it with only 9mb of memory on the Dreamcast ?

Best Regards,
Luis Da Costa

FreeYourMind

welcome. the dc have 16mb of ram, but some of them is for fenix/bennu, probabily the memory is similar using fenix or bennu. Where you see the sorr for DC ? the port to DC exists ? to port a game to 9 mb of memory you must manage very well the memory used in any moment


aliasbody

Quote from: FreeYourMind on July 05, 2014, 11:10:40 PM
welcome. the dc have 16mb of ram, but some of them is for fenix/bennu, probabily the memory is similar using fenix or bennu. Where you see the sorr for DC ? the port to DC exists ? to port a game to 9 mb of memory you must manage very well the memory used in any moment

Hello,

I've found the information about the 9mb on the French Website of bennuGD (here http://www.bennugd.fr/index.php?mod=articles&ac=commentaires&id=24).

And yes there is a DC port of SoRR (here http://www.theisozone.com/downloads/pc/homebrew/streets-of-rage-remake-v5-final-version/)

Well technicaly speaking there is a CDI (image for use in the Dreamcast) for almost every BennuGD game or test example... Like Zombie 2012 (here http://www.theisozone.com/downloads/dreamcast/sd-isos/bennudc-zombies-2012-examples/).

This is why I asked if this is really true.. I mean, I've already seen some BennuGD 3D example on the dreamcast... I don't know much about 3D, but making a 3D game with only 9mb of ram sound like not enough. For 2D it is true that it is totally possible but, depending on the sprites sound etc..., there would need a very good memory management.

And talking about memory management, I have a question (I will ask here but if there is a need to open a new post please tell me) : Is there a possibility to load vectorials (svg) with BennuGD in order to a sprite without any "ugly" pixels even when played on a bigger screen ?

aliasbody

Quote from: l1nk3rn3l on July 06, 2014, 02:58:49 AM
PLEASE TRY WITH BENNUGD PORT

https://code.google.com/u/100998669591384944124/

Hello l1nk3rn3l,

I know there is a port, but I don't have any game fully made so I can't test. And the emulatour will not have the hardware limiation of a real Dreamcast right ? Other than that i don't have an SD Adapter in the Dreamcast in order to try it without burning a CD, and burning a CD of a code just "punping" memory in order to understand where is the limit does sound a good idea, this is why I asked (but I really need to get my hands on a SD adapter in order to test my future work).

PS: In an other domain, I don't if this may be interesting, but if the development of the game I am planning goes well I was thinking of (trying at least) to port BennuGD to the Sega MegaDrive.. I know we are talking about a totally diferent platform there is a lot of Assembly here, but I though that a simple hello world with a sprite would be awesome, and I know that the real power of BennuGD is the FOSS thing allowing anyone to make it bigger and better... But that's another point. Other than that great job on everywork made :)

FreeYourMind

sorry, but the link you put is for PC version.... where is DC version ?

aliasbody

Quote from: FreeYourMind on July 06, 2014, 01:25:48 PM
sorry, but the link you put is for PC version.... where is DC version ?

Sorry, my bad, I made a confusion between SoRR and BoR :S... But it is still virtually possible to port it to the Dreamcast if there is a good memory management right ? I mean, I've read in some forums that the memory was about 9Mb then in others i've seen 11Mb... Is there a way to limit the memory of BennuGD or of any Dreamcast emulator in order to have this variable into account when making the game ?

blabla

The memory limit for BennuGD Dreamcast is (i think) 11 MB of RAM.
But the Dreamcast also has 4MB of Sound RAM and BennuGD Dreamcast can use the SPU ,
not sure if sound files are stored in there or not but you can stream it. (which was not possible with Fenix Dreamcast)

Be warned though because this port has no 2D hardware acceleration or whatsoever ,
everything is handled by the (weak) CPU.
In particular , you should avoid to use Alpha transparencies.

Try my game Rubby Bird and compare the PS2 & the Dreamcast version.
http://forum.bennugd.org/index.php?topic=3827.0
The PS2 port is faster than the DC one but not by much.

Quote from: aliasbody on July 06, 2014, 05:40:29 PM
But it is still virtually possible to port it to the Dreamcast if there is a good memory management right ?
Without the source code , that's impossible.
The way SoR was designed requires at least 32 MB of RAM and 48 MB of RAM is recommended to avoid constant crashes.
The team behind the game said they cannot release the source code because of SEGA but while SEGA owns some of the assets
used by the game , they do not own the code itself. Oh well...

QuoteIs there a way to limit the memory of BennuGD or of any Dreamcast emulator in order to have this variable into account when making the game ?
No. Your task manager can help you though.

aliasbody

Quote from: blabla on July 06, 2014, 06:35:49 PM
The memory limit for BennuGD Dreamcast is (i think) 11 MB of RAM.
But the Dreamcast also has 4MB of Sound RAM and BennuGD Dreamcast can use the SPU ,
not sure if sound files are stored in there or not but you can stream it. (which was not possible with Fenix Dreamcast)

Hum.. I've heard about that somewhere... Is there any especial needs or could it be done just by using play_s3m ? (I thinkg it is s3m)

Quote from: blabla on July 06, 2014, 06:35:49 PM
Be warned though because this port has no 2D hardware acceleration or whatsoever ,
everything is handled by the (weak) CPU.
In particular , you should avoid to use Alpha transparencies.

That sounds like a chalenge ! I mean it is true that making a game for the Dreamcast in real C++ is way better but seing how this port works I think, with a little of work, it is possible to make a good game working on it.. I have to make some tests. For now I am still trying to see how to make shadows.

Quote from: blabla on July 06, 2014, 06:35:49 PM
Try my game Rubby Bird and compare the PS2 & the Dreamcast version.
http://forum.bennugd.org/index.php?topic=3827.0
The PS2 port is faster than the DC one but not by much.

Thank you for the link. i'll have a look at it :)

Quote from: blabla on July 06, 2014, 06:35:49 PM
Quote from: aliasbody on July 06, 2014, 05:40:29 PM
But it is still virtually possible to port it to the Dreamcast if there is a good memory management right ?
Without the source code , that's impossible.
The way SoR was designed requires at least 32 MB of RAM and 48 MB of RAM is recommended to avoid constant crashes.
The team behind the game said they cannot release the source code because of SEGA but while SEGA owns some of the assets
used by the game , they do not own the code itself. Oh well...

Well this is really something I don't understand... But was the code really OpenSource (or Free as in Free Speech) in the beginning ? They may not have it anymore... Other than that I think that there may be something behind that history... I understand that the point of the development of the game was to make a Remake of SoR, but they can still release it just by changing the characters and the name... Weird indeed.

Quote from: blabla on July 06, 2014, 06:35:49 PM
QuoteIs there a way to limit the memory of BennuGD or of any Dreamcast emulator in order to have this variable into account when making the game ?
No. Your task manager can help you though.

Is there a way to show the memory directly on the screen ? It would be great to compare everything.. I would like to see if X or Y action would consume more memory in a device X1 rather than on a device X2.

blabla

QuoteHum.. I've heard about that somewhere... Is there any especial needs or could it be done just by using play_s3m ? (I thinkg it is s3m)
The play_s3m function does not stream : it loads the sound file and freeze the console until the s3m file is in RAM.
For streaming audio , you need to look at this example.
Unfortunely , using CDDA music has drawbacks :
- It's not easy to use & set
- It's not compatible on Dreamcast with SDcards. (the game will play but the tracks will not)

QuoteIs there a way to show the memory directly on the screen ? It would be great to compare everything.. I would like to see if X or Y action would consume more memory in a device X1 rather than on a device X2.
You can't do that on PC but you can do that on DC , you should take a look at the mem test example.

QuoteThat sounds like a chalenge ! I mean it is true that making a game for the Dreamcast in real C++ is way better but seing how this port works I think, with a little of work, it is possible to make a good game working on it.. I have to make some tests. For now I am still trying to see how to make shadows.
Here's what i recommend you to do :
Convert your FPG files to 8 bits to save space and memory.
If your game have scrolling and stuff , set the resolution to 320x240 , the framerate to 30 and the depth to 16 bits. (or better : 8 bits. but in that case , FPG files should have the same palette or else they will look wrong)
And of course , wipe your files you no longer need. (unload_fpg , unload_wav etc...)

And you need to compile it with Bennu Pack but you can download my own pack instead :
https://cloud.openmailbox.org/public.php?service=files&t=eff054a04323df409c97c7ac235a2da9&download

aliasbody

#10
Quote from: blabla on July 06, 2014, 07:47:15 PM
The play_s3m function does not stream : it loads the sound file and freeze the console until the s3m file is in RAM.
For streaming audio , you need to look at this example.
Unfortunely , using CDDA music has drawbacks :
- It's not easy to use & set
- It's not compatible on Dreamcast with SDcards. (the game will play but the tracks will not)

Where is the song loaded ? Directly form the CD burned as Audio ? (Because there is only the location).

Quote from: blabla on July 06, 2014, 07:47:15 PM
You can't do that on PC but you can do that on DC , you should take a look at the mem test example.

It would be interesting to have those features running on PC, I'll try to compile my own for Gnu/Linux after doing some test.


Quote from: blabla on July 06, 2014, 07:47:15 PM
Here's what i recommend you to do :
Convert your FPG files to 8 bits to save space and memory.
If your game have scrolling and stuff , set the resolution to 320x240 , the framerate to 30 and the depth to 16 bits. (or better : 8 bits. but in that case , FPG files should have the same palette or else they will look wrong)
And of course , wipe your files you no longer need. (unload_fpg , unload_wav etc...)

30 FPS isn't going to make the whole thing slowdown ?


Quote from: blabla on July 06, 2014, 07:47:15 PM
And you need to compile it with Bennu Pack but you can download my own pack instead :
https://cloud.openmailbox.org/public.php?service=files&t=eff054a04323df409c97c7ac235a2da9&download

Could you provide the same for Gnu/Linux :) ?

Thank you for everything !

blabla

Quote from: aliasbody
Where is the song loaded ? Directly form the CD burned as Audio ? (Because there is only the location).
For CDDA tracks , yes they are loaded from the Audio section on the CD.
For s3m files , they are on the DATA section where your fpg , wav , dcb files are.

Quote
30 FPS isn't going to make the whole thing slowdown ?
No , of course not !
Set the framerate to 30 FPS allows you to have a more constant framerate/avoid screen tearing than if you set it to a higher framerate.
The difference between 30 FPS and 60 FPS is pretty small anyway and it consumes less CPU cycles.
But really , that's up to you.

Quote
Could you provide the same for Gnu/Linux :) ?
Nope , sorry. I'm afraid you'll have to download Wine and use wineconsole to compile your stuff.
The problem is that the BennuGD port for DC only works with dcb files compiled with his Bennu Pack (only for windoze)
and plus , you need to have a dummy dll file called "mod_dream" as well and he does not provide a Linux version.
If you don't want to use Wine or a Virtual Machine , you're screwed unless he release the source code.

aliasbody

Quote from: blabla on July 07, 2014, 05:30:03 PM
For CDDA tracks , yes they are loaded from the Audio section on the CD.
For s3m files , they are on the DATA section where your fpg , wav , dcb files are.

That is why there is the need to load it on memory when using the s3m mod. Thank you for that information !

Quote from: blabla on July 07, 2014, 05:30:03 PM
No , of course not !
Set the framerate to 30 FPS allows you to have a more constant framerate/avoid screen tearing than if you set it to a higher framerate.
The difference between 30 FPS and 60 FPS is pretty small anyway and it consumes less CPU cycles.
But really , that's up to you.

On the game I am making (just for testing and learning BennuGD) making the FPS at 30fps make the whole thing slowdown a lot, could it be because of the VSYNC ? I don't think so but I can always ask. As for CPU cycles, on my machine we are talking about between 3 to 5% of the CPU with 1000 sprites (moving) and 9mb of memory when on 60fps, when on 30Fps it slow down to something between 2 and 4 % but they move way slower, and if I increase the speed of the gesture (moving X by 20 instead of 5 for example) then it seems like there is a jump in the picture.... Maybe I'm not doing it the right way.

Quote from: blabla on July 07, 2014, 05:30:03 PM
Nope , sorry. I'm afraid you'll have to download Wine and use wineconsole to compile your stuff.
The problem is that the BennuGD port for DC only works with dcb files compiled with his Bennu Pack (only for windoze)
and plus , you need to have a dummy dll file called "mod_dream" as well and he does not provide a Linux version.
If you don't want to use Wine or a Virtual Machine , you're screwed unless he release the source code.

I think the source code is available, but I havent tested it yet. The day I would need it for a more extensive use I will see if those are the good source code and if there is a way to make it work on Gnu/Linux.. Until then I'll use your method.

Just one last question,
In the previous replies you've told me about using 8bit image instead of 16bit for example. When I convert the image to 8Bit using Gimp (or any other application), they won't appear on BennuGD and this even if I set the mode to 8 or 16. If I mix images from 8 and 16 bits on the FPG then choosing 16bits bits will make only the 16bits pictures appear and the 8bits won't make anything appear.

The converted pictures are recognized everywhere as 8bit pictures and seem valid.

I don't know if this can help but for packaging I use fenix-map in order to add them to a .map file and then fenix-fpg in order to add them into the main fpg file containing all the maps. I am still using fenix-map and fenix-fpg simply because I won't find any command like for BennuGD, it has worked in every test I've made so I don't know if there is an association between this and the problem of the 8 bit pictures. (PS: They are recorded as .png).

Thank you once again for all your help

handsource-dyko

Quote
I don't know if this can help but for packaging I use fenix-map in order to add them to a .map file and then fenix-fpg in order to add them into the main fpg file containing all the maps. I am still using fenix-map and fenix-fpg simply because I won't find any command like for BennuGD, it has worked in every test I've made so I don't know if there is an association between this and the problem of the 8 bit pictures. (PS: They are recorded as .png).


You can use smartfpgeditor or the lastest version of fpgedit:


https://code.google.com/p/smartfpgeditor/
https://code.google.com/p/fpg-editor/


fpgedit also has a few extra features that are quite nice. They also handle 8 bit palettes and conversion to 8 bit format.

aliasbody

Quote from: handsource-dyko on July 09, 2014, 11:35:27 AM
Quote
I don't know if this can help but for packaging I use fenix-map in order to add them to a .map file and then fenix-fpg in order to add them into the main fpg file containing all the maps. I am still using fenix-map and fenix-fpg simply because I won't find any command like for BennuGD, it has worked in every test I've made so I don't know if there is an association between this and the problem of the 8 bit pictures. (PS: They are recorded as .png).


You can use smartfpgeditor or the lastest version of fpgedit:


https://code.google.com/p/smartfpgeditor/
https://code.google.com/p/fpg-editor/


fpgedit also has a few extra features that are quite nice. They also handle 8 bit palettes and conversion to 8 bit format.

Thank you for the suggestions ! But I think I'll try out with fpg-editor since, from the list, it is the only one which works on Gnu/Linux.

Just one last question, do you know where I can find a simple example on how to introduce jump gravity like in mario-like games ?

Thank you in Advance