Recent Posts

Pages: [1] 2 3 ... 10
1
General Jo Engine Help / Getting Joengine to work on MacOS Ventura?
« Last post by nemesis8811 on November 11, 2022, 10:11:25 pm »
Is anyone here actually using a Mac for their SS homebrew? I have spent days fiddling with the shell files to make it work and compile but alas could not do much.

My first issue was having the compilation complain about NPROC but after some research I found out how to make it Mac compliant. Basically from this:

Code: [Select]
#!/bin/bash
export NCPU=`nproc`
make clean && make -j${NCPU} all
exit 0
...to this:
Code: [Select]
#!/bin/bash
export NCPU=`sysctl -n hw.ncpu`
make clean && make -j${NCPU} all
exit 0

And now it is giving me this grief:

Quote
Last login: Fri Nov 11 23:08:03 on ttys000
firstname@me-MBP ~ % /Users/firstname/Documents/Development/Sega\ Saturn/Samples/demo1/compile.sh ; exit;
make: *** No rule to make target `clean'.  Stop.

Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Process completed]

Any idea what I should do? I really want to start developing asap for the SS! Thank you all in advance!
2
General Jo Engine Help / Re: General questions about getting started
« Last post by Cerv3ro on September 09, 2022, 12:19:00 am »
Hi there, i´m not a technicall person or dev, so for better communication and feedback i recomend you to join SegaXtreme Discord. Basically the best place to chat about Saturn development, small community but very friendly and professional. See you!
3
General Jo Engine Help / General questions about getting started
« Last post by SilasVt on August 13, 2022, 12:32:14 pm »
Hello everyone,
my name is Silas and I am a Systemelectronics Technician. That means I can do embedded programming in Assembly and C, kinda simpler things. I wanna expand myself beyond just microcontrollers and in addition to doing software for PCs in C++ I also had this idea of making my own kinda Sonic The Hedgehog 3D game Demo on a console. After many thoughts I have now settled on the Saturn. I am tired of some people on the internet saying the saturn sucks and how they could have never made a real sonic game for it.

I got all the files downloaded and installed Yabause and played around with the shell scripts and the sample projects. I am on Tumbleweed and I do use code::blocks to look at and write the code.

My problem now though is that there doesn't seem to be the best documentation or tutorials for Jo out there. Which on its own is fine, but bad for me. I don't even know where to start.

Im gonna start doing simple things and 2D things but my end goal is 3D and I have a few questions about it:

1. I noticed there is physics, hitbox systems in Jo. These only work for 2D and you need to create your own 3D physics and collission systems?
2. How does one actually create a 3D model or mesh into Jo? That i haven't been able to read from the source code documentation or the samle projects. Do you have to manually write each vertex into your source code to get a model into it? Or is there a way you can just make a 3D model in blender or similar and then import it. If there is a way to just get a model from blender and plug it into Jo, are there any special things to consider? or can you just make a model and texture it and it works. considering the saturn uses quads as polygons (which i want to use).
3. is there a way for Jo engine to do performance optimisations like a limited draw distance or similar things or is that not a feature?
4. Can Jo combine the infinite planes with 3d models on screen? so you an save quads on ceiling or floor.
5. Can Jo do half transparencies for water and other effects. Most saturn games don't do real transparency even though Saturn can technically do them but is Jo able to do so?

Idunno if these are logical or good questions, and I am sure I will come up with more in the future.
Thank you for anyone who can answer any of these or point me in the correct direction to find the answers!
4
Project announcement / Bridget Bishop
« Last post by FranMatsusaka on June 25, 2022, 12:24:54 pm »
Hi, I've almost finished a small game witch name is as the title says "Bridget Bishop"
It's a Resident Evil-like, with 3d models on prerendered backgrounds. It's about a witch that has turned her cat into a frog, so you have to collect ingredients to create potions to turn him back into cat. But you will only find substitute ingrediends, so you will fail and turn him into different things.

The game is almost finished, only need some debugging and small detail polishment.

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

Here's the link if anybody want to check it out:
https://drive.google.com/file/d/1wchplb4tmJAnpunaUP4Vl6DOydHLBYJw/view?usp=sharing







5
General Jo Engine Help / 50Hz / 60Hz detection?
« Last post by FranMatsusaka on March 22, 2022, 10:35:34 am »
It is possible to dectect if the consol is running at 60Hz (NTSC) or 50Hz (PAL)?

Thanks in advance
6
General Jo Engine Help / Re: Can't load 8-bit image for infinite map
« Last post by FranMatsusaka on March 22, 2022, 10:33:59 am »
Sorry for the late response. Sadly I tried GIMP2 but no luck.

I found a web conversor that keeps the color deep in the result TGA file. I have not tried directly in the project but the header looked right to me.
https://www.aconvert.com/image/png-to-tga/

Good luck!
7
General Jo Engine Help / Re: Can't load 8-bit image for infinite map
« Last post by D3nX on March 03, 2022, 08:16:44 pm »
Hello, sorry for the late answer!

Thank you for taking the time to fix the issue and answer us, the picture now finally loads into the game! But yeah I think the problem come from the exportation of it. However, is there a way to export it the same way you did but with another software than photoshop? (free software such as ffmpeg, paint.net, etc...) I could not find a way to do so.

Thank you again :)
8
General Jo Engine Help / Re: Can't load 8-bit image for infinite map
« Last post by FranMatsusaka on February 26, 2022, 07:34:47 pm »
Hi,

I tried to use your image in the "demo - vdp2 plane" and it works nicely.


Maybe you were not exporting the TGA correctly... To make sure the TGA is in a proper format open it with a hexadecimal viewer and check if the first 16 bytes are like in this image


And here's the image exported by me if you need.
https://drive.google.com/file/d/1OL8jkjLTVjZOZIuCTjkj05hAhcMQg2C_/view?usp=sharing
I've just saved the png as 8-bit image in Photoshop (using "Save for Web & devices..." option), open the new 8bit image and save as TGA.

Good luck with your project!
9
General Jo Engine Help / Can't load 8-bit image for infinite map
« Last post by D3nX on February 25, 2022, 02:46:09 pm »
Hello !

We are a bunch of student at Epitech (Superior school for programming) and we are trying to make a Sega Saturn game as a project for our year there. However it turns out that we have some little issues :

We are trying to do a "Mode 7" like map, but when we load the texture using "jo_tga_8bits_loader", this happens :


We loaded this picture:


We also tried to convert the TGA through 8-bit using ffmpeg, image magick, without success. Can somebody help us ?

Thanks in advance :)
10
General Jo Engine Help / Re: TGA 8-bit in background
« Last post by FranMatsusaka on January 23, 2022, 06:50:03 pm »
I was able to "fix" it by making few changes in the library. It seems it was storing cells/tiles and map indexes horizontally. I don't know if this was done like this because of mode7 plane . If anybody want's to load 8bit tgas in the background, you will need to make small hacks/changes in __jo_create_map and jo_img_to_vdp2_cells in vdp2.c

Though, this could potentially break something else...

Code: [Select]
void                            jo_img_to_vdp2_cells(const jo_img_8bits * const img, const bool vertical_flip, unsigned char *cell)
{
    register int                x;
    register int                y;
    register int                cell_x;
    register int                cell_y;
    register int                line_y;
    register int                i;


#ifdef JO_DEBUG
        if (img == JO_NULL)
        {
            jo_core_error("img is null");
            return ;
        }
        if (JO_MOD_POW2(img->width, 8) != 0)
        {
            jo_core_error("Image width must be multiple of 8");
            return ;
        }
        if (JO_MOD_POW2(img->height, 8) != 0)
        {
            jo_core_error("Image height must be multiple of 8");
            return ;
        }
#endif

    for (JO_ZERO(y), JO_ZERO(line_y); y < img->height; y += CELL_HEIGHT, line_y += JO_MULT_BY_8(img->width))
    {
        for (JO_ZERO(x); x < img->width; x += CELL_WIDTH)
        {
            cell_x = x;
            cell_y = line_y;
            for (JO_ZERO(i); i < CELL_SIZE; ++i, ++cell, ++cell_x)
            {
                if (i != 0 && JO_MOD_POW2(i, CELL_WIDTH) == 0)
                {
                    cell_x -= CELL_WIDTH;
                    cell_y += img->width;
                }
                /**/
                if (vertical_flip)
                    *cell = img->data[(img->width - cell_x - 1) + cell_y];
                else
                 /**/
                    *cell = img->data[cell_x + cell_y];
            }
        }
    }
}

static void                     __jo_create_map(const jo_img_8bits * const img, unsigned short *map, const unsigned short palette_id, const int map_offset)
{
    register int                x;
    register int                y;
    register int                x2;
    register int                y2;
    register int                i;
    unsigned short              paloff;

    paloff = JO_MULT_BY_4096(palette_id);
    y = JO_DIV_BY_8(img->height);
    x = JO_DIV_BY_8(img->width);
    JO_ZERO(y2);
    JO_ZERO(x2);
    for (JO_ZERO(i); i < MAP_LENGTH; ++i)
    {
/*
        if (i != 0 && JO_MOD_POW2(i, CELL_COUNT_PER_ROW) == 0)
            ++y2;
        if (y2 >= y)
            JO_ZERO(y2);
        *map = (JO_MULT_BY_2(x2 + y2 * y) | paloff) + map_offset;
            ++map;
        ++x2;
        if (x2 >= x)
            JO_ZERO(y2);

/**/
        if (i != 0 && JO_MOD_POW2(i, CELL_COUNT_PER_ROW) == 0) {
            JO_ZERO(x2);
            ++y2;
            /*
            if (y2 >= y) {
                JO_ZERO(y2);
            }*/
        }
        *map = (JO_MULT_BY_2(x2 + y2 * x) | paloff) + map_offset;
       
        ++map;
        ++x2;
/**/       
    }
}
Pages: [1] 2 3 ... 10
SMF spam blocked by CleanTalk