Login
Username:

Password:

Remember me



Lost Password?

Register now!

Sections

Who's Online
74 user(s) are online (52 user(s) are browsing Forums)

Members: 1
Guests: 73

rjd324, more...

Support us!

Headlines

Forum Index


Board index » All Posts




Re: SDL2
Quite a regular
Quite a regular


Understandably not. I just wonder if you could make a v2.30.5-amigaos4 release with that fix?

If liberty means anything at all, it means the right to tell people what they do not want to hear.
George Orwell.
Go to top


Re: A1222 Development Thread
Quite a regular
Quite a regular


@all
As a start, I have built a version of a cross-compiler and native-compiler; a pure GCC 6. There are no additional libraries right now.

Can someone test these. From there, I can add additional libraries. See post #1 for the links.

If liberty means anything at all, it means the right to tell people what they do not want to hear.
George Orwell.
Go to top


Re: Amiga X5k CPU Cooler
Just popping in
Just popping in


@MartinWQuote:
MartinW wrote:
I have no idea what the A1222 is like, but I sincerely hope it's quieter or has better options.


The A1222 doesn't need much cooling.
I have a beta system and it was supplied with a super tiny fan that was quite loud.

I can't remember what i replaced it with as it's been a few years since i did it but probably a 40 or 60mm noctua fan and a 3d printed fan adaptor.

Go to top


Re: Amiga X5k CPU Cooler
Not too shy to talk
Not too shy to talk


I think that's fairly normal for the 5040. I stressed over it for a while but there's little I can do. The specs for the CPU say it's good for way more heat than that. The case it's in is already cavernous with chimney effect (vertical) cooling.

The only thing that would get it much better would be liquid cooling but then you're back into where do you get the right size block and mountings for a CPU that's designed to live in data centre router type equipment where noise is just not a concern.

The design is just poorly thought out in terms of where people that don't like jet engines under their desk (because I already have crappy tinnitus) are going to get cooling solutions from. I want to save what little decent hearing I have left for my guitar abuse

I have no idea what the A1222 is like, but I sincerely hope it's quieter or has better options.


Amiga x5040 ı 16GB ı RX580
GB-A1000 060@100,
A1200 PiStorm32-Lite CM4
Go to top


Re: A1222 Development Thread
Not too shy to talk
Not too shy to talk


@Tuvok

Amiga NG hardware +AOS4 is retro hardware... even if someone doesn't like this statement . I think almost everyone does it because they like a ‘have fun’

Go to top


Re: Fresh version of Grafx2
Not too shy to talk
Not too shy to talk


@walkero

Quote:
I think it was SDL_SetTextureColorMod()


I checked a few things today but I didn't come across anything wrong with the SDL2 related code.
But I noticed the same thing as in your video what is occurring with me . The SDL2 version even when you do nothing eats a lot of CPU for you and me.
SDL1 in non-use mode eats about 1%CPU and SDL2 about 20-30%.
It is possible that the main loop or things related to the Event, the SDL_Delay setting in the program itself are causing the problem.

Go to top


Re: A1222 Development Thread
Just popping in
Just popping in


This sound all very encouraging for first time and wanna-be developers or people who want to "remember to have fun" developing for Amiga. Not.

Go to top


Re: SDL2
Quite a regular
Quite a regular


Makes sense.

You merged that directly into the latest release?

If liberty means anything at all, it means the right to tell people what they do not want to hear.
George Orwell.
Go to top


Re: A1222 Development Thread
Not too shy to talk
Not too shy to talk


@IamSONIC

Quote:
Does someone can provide those libs for GCC 6.4 built for SPE?


I tried two months ago to check something for the SPE.
At the moment the SPE topic is closed with me. I do not have an A1222, I only have QEMU. It is too time-consuming and I have not been able to test the programme at home.
I had to send something to the person who owns the A1222 to check it.

From what I remember it was
rebuilding a cross comlining environment with clib4 under SPE

..
git clone https://github.com/sba1/adtools.git
cd ~/adtools/gild
git submodule init
git submodule update
cd ~/adtools
guild list
- from the list, select
gild clone
gild checkout binutils 2.23.2
gild checkout coreutils 5.2
gild checkout gcc 6
...

Rebuilding clib4 under SPE
Change ‘GNUmakefile.os4’ options adding line ‘SPE=true’

After finishing the compilation, I had to completely rebuild ‘libgcc’ under clib4 and by changing the options in the makefile options related to ‘-msoft-float’ (and flags under SPE ) to avoid ‘hard float/ soft float’ warning.
You will get libgcc.a ..etc under soft float.
The base was ready.

Then rebuild zlib and compile SDL2. i think i disabled the extra GL stuff because it was not compiled under soft float.
Then you use SDL2 compiled with flags under SPE without GL.
Then you probably have to recompile all the extra libraries from scratch to build other things fully SPE-compatible i new base.

At least I think so, and I don't even know if I went the right way and it wasn't stupid
There wasn't a lot of material on the subject at the time.

Go to top


Re: SDL2
Just can't stay away
Just can't stay away


@rjd324

Thanks to You for reporting the issue!

With my current understanding this doesn't require more implementation, in other words, filtering mode is set when texture is used and will be fed to CompositeTags() call. But this dummy function is required because SDL2 doesn't check whether function pointer is NULL or not (hence the ISI exception).

Go to top


Re: SDL2
Quite a regular
Quite a regular


@Capehill
Thanks for quickly implementing something. Are you just stubbing out that function or are you planning on filling it in later? I ask wrt. commit https://github.com/AmigaPorts/SDL/comm ... 1e7d14451140fba6c4409d8b6

If liberty means anything at all, it means the right to tell people what they do not want to hear.
George Orwell.
Go to top


Re: A1222 Development Thread
Just popping in
Just popping in


@rjd324

Quote:

But as https://keasigmadelta.com/blog/taboriz ... imizing-for-the-e500-spe/ *bullet point 2* says, only critical code actually _using_ floats should be compiled with such flags in order to avoid the trashing of the ABI float parameters.

Presumably, we all need to be careful.


I read that too and trying to compile simply everthing directly for SPE is also for me just a Test right now. If this way will work than we have a higher chance for more (faster) Apps on A1222. If every single App must be analyzed and tracked down in order to compile core floating point math operations for SPE and generic seperately then ...

Go to top


Re: A1222 Development Thread
Just popping in
Just popping in


@afxgroup

Quote:
because that gcc is using real clib2 libraries and you are mixing them with clib4.


Yes the mixing is odd but as you see in the SDL2 Thread using clib4 nonSPE it works without a problem. And not just the sdl2benchmark, till now everything. The main problem right now is that those libraries doesn't support SPE.

Does someone can provide those libs for GCC 6.4 built for SPE?

Go to top


Re: SDL2
Just can't stay away
Just can't stay away


@IamSONIC

Quote:
IamSONIC wrote:@afxgroup

clib4 Version beats newlib Version!

btw. Thanks for your great work with clib4 !!!


That was to be expected @smarkusg has already ported some emulators via clib4 and it was simply faster. I also use a ScummVM-Clib4 version from @afxgroup and the result is the same, it seems to be a bit more stable than with newlib.

MacStudio ARM M1 Max Qemu//Pegasos2 AmigaOs4.1 FE / AmigaOne A1222plus AmigaOs4.1 FE
Go to top


Re: A1222 Development Thread
Quite a regular
Quite a regular


See: https://www.amigans.net/modules/newbb/ ... id=149822#forumpost149822. In this case, this is a successful demo where CLIB4 and SDL2 were not compiled with SPE flags at all.

It would be nice to good agreement or decisions as to whether or not
- we should be building C-libraries with the SPE flags in full, and whether
- we should be building SDL2 with SPE flags in full.

It would be nice to able to just do something like:
CFLAGS+=-mspe -mcpu=8540 -mfloat-gprs=double -mabi=spe

But as https://keasigmadelta.com/blog/taboriz ... imizing-for-the-e500-spe/ *bullet point 2* says, only critical code actually _using_ floats should be compiled with such flags in order to avoid the trashing of the ABI float parameters.

Presumably, we all need to be careful.

If liberty means anything at all, it means the right to tell people what they do not want to hear.
George Orwell.
Go to top


Re: A1222 Development Thread
Just can't stay away
Just can't stay away


@rjd324

Thanks for starting this thread, there should be some clarity here and it could be of great value to developers and testers.

Some claim that it is not possible for Heretic2 to work on the A1222 neither in software rendering nor with Warp3d/gles. So let's just find out together.

@walkero

Quote:
For a cross compiling dev environment, I am building a new docker image that will include gcc6 for everyone to test and use. I might have it ready during this weekend.


Thanks for your support

MacStudio ARM M1 Max Qemu//Pegasos2 AmigaOs4.1 FE / AmigaOne A1222plus AmigaOs4.1 FE
Go to top


Re: SDL2
Just popping in
Just popping in


@afxgroup

It works!

- clib4
- SDL2 against clib4
- the SDL2 Tests inside ../test against clib4

and just for comparison 2 benchmarks from X5000

clib4:
INFOSDL2 renderer benchmark v0.7 (SDL version 2.30.4)
INFOThis tool measures the speed of various 2D drawing features
INFO
Press ESC key to quit
INFO
Parameterswidth 800height 600renderer name '(null)'duration 1.000 sobjects 100sleep 0
INFO
Image size 408*167
INFO
Pixel format 0x16161804 (SDL_PIXELFORMAT_RGB888)
INFOStarting to test renderer called [compositing], flags 0xE
INFO
Points [modeNone]...2859 frames drawn in 1.000 seconds => 2858.6 frames/s
INFO
Points [modeBlend]...3255 frames drawn in 1.000 seconds => 3254.4 frames/s
INFO
Lines [modeNone]...24 frames drawn in 1.038 seconds => 23.1 frames/s
INFO
Lines [modeBlend]...39 frames drawn in 1.006 seconds => 38.8 frames/s
INFO
FillRects [modeNone]...425 frames drawn in 1.002 seconds => 424.3 frames/s
INFO
FillRects [modeBlend]...276 frames drawn in 1.000 seconds => 275.9 frames/s
INFO
RenderCopy [modeNone]...5596 frames drawn in 1.000 seconds => 5595.6 frames/s
INFO
RenderCopy [modeBlend]...5650 frames drawn in 1.000 seconds => 5648.0 frames/s
INFO
RenderCopyEx [modeNone]...5423 frames drawn in 1.000 seconds => 5422.0 frames/s
INFO
RenderCopyEx [modeBlend]...5455 frames drawn in 1.000 seconds => 5453.4 frames/s
INFO
Color modulation [modeNone]...1153 frames drawn in 1.000 seconds => 1153.0 frames/s
INFO
Color modulation [modeBlend]...1122 frames drawn in 1.000 seconds => 1121.5 frames/s
INFO
Alpha modulation [modeNone]...5601 frames drawn in 1.000 seconds => 5599.7 frames/s
INFO
Alpha modulation [modeBlend]...5536 frames drawn in 1.000 seconds => 5534.9 frames/s
INFO
UpdateTexture [modeNone]...8110.2 operations/s2210.4 megabytes/s
INFO
ReadPixels [modeNone]...45.3 operations/s12.3 megabytes/s
INFO
Starting to test renderer called [opengl], flags 0x2
INFO
Points [modeNone]...1975 frames drawn in 1.000 seconds => 1974.7 frames/s
INFO
Points [modeBlend]...1979 frames drawn in 1.000 seconds => 1978.9 frames/s
INFO
Lines [modeNone]...46 frames drawn in 1.004 seconds => 45.8 frames/s
INFO
Lines [modeBlend]...51 frames drawn in 1.012 seconds => 50.4 frames/s
INFO
FillRects [modeNone]...434 frames drawn in 1.001 seconds => 433.6 frames/s
INFO
FillRects [modeBlend]...388 frames drawn in 1.002 seconds => 387.2 frames/s
INFO
RenderCopy [modeNone]...1872 frames drawn in 1.001 seconds => 1871.0 frames/s
INFO
RenderCopy [modeBlend]...1860 frames drawn in 1.000 seconds => 1859.5 frames/s
INFO
RenderCopyEx [modeNone]...1832 frames drawn in 1.000 seconds => 1831.2 frames/s
INFO
RenderCopyEx [modeBlend]...1840 frames drawn in 1.000 seconds => 1839.8 frames/s
INFO
Color modulation [modeNone]...1869 frames drawn in 1.000 seconds => 1868.3 frames/s
INFO
Color modulation [modeBlend]...1863 frames drawn in 1.000 seconds => 1862.4 frames/s
INFO
Alpha modulation [modeNone]...1876 frames drawn in 1.000 seconds => 1875.7 frames/s
INFO
Alpha modulation [modeBlend]...1875 frames drawn in 1.000 seconds => 1874.9 frames/s
INFO
UpdateTexture [modeNone]...375.5 operations/s102.4 megabytes/s
INFO
ReadPixels [modeNone]...49.8 operations/s13.6 megabytes/s
INFO
Starting to test renderer called [opengles2], flags 0xA
INFO
Points [modeNone]...5046 frames drawn in 1.000 seconds => 5045.4 frames/s
INFO
Points [modeBlend]...5053 frames drawn in 1.000 seconds => 5052.7 frames/s
INFO
Lines [modeNone]...200 frames drawn in 1.006 seconds => 198.9 frames/s
INFO
Lines [modeBlend]...201 frames drawn in 1.002 seconds => 200.6 frames/s
INFO
FillRects [modeNone]...1052 frames drawn in 1.000 seconds => 1051.7 frames/s
INFO
FillRects [modeBlend]...671 frames drawn in 1.002 seconds => 669.9 frames/s
INFO
RenderCopy [modeNone]...4425 frames drawn in 1.000 seconds => 4424.4 frames/s
INFO
RenderCopy [modeBlend]...4481 frames drawn in 1.000 seconds => 4480.6 frames/s
INFO
RenderCopyEx [modeNone]...4462 frames drawn in 1.000 seconds => 4460.9 frames/s
INFO
RenderCopyEx [modeBlend]...4470 frames drawn in 1.000 seconds => 4468.6 frames/s
INFO
Color modulation [modeNone]...4430 frames drawn in 1.000 seconds => 4429.0 frames/s
INFO
Color modulation [modeBlend]...4453 frames drawn in 1.000 seconds => 4452.3 frames/s
INFO
Alpha modulation [modeNone]...4447 frames drawn in 1.000 seconds => 4445.3 frames/s
INFO
Alpha modulation [modeBlend]...4377 frames drawn in 1.000 seconds => 4376.8 frames/s
INFO
UpdateTexture [modeNone]...344.1 operations/s93.8 megabytes/s
INFO
ReadPixels [modeNone]...38.8 operations/s10.6 megabytes/s
INFO
Starting to test renderer called [software], flags 0xD
INFO
Points [modeNone]...280 frames drawn in 1.003 seconds => 279.1 frames/s
INFO
Points [modeBlend]...279 frames drawn in 1.003 seconds => 278.2 frames/s
INFO
Lines [modeNone]...172 frames drawn in 1.004 seconds => 171.3 frames/s
INFO
Lines [modeBlend]...146 frames drawn in 1.003 seconds => 145.5 frames/s
INFO
FillRects [modeNone]...167 frames drawn in 1.006 seconds => 166.0 frames/s
INFO
FillRects [modeBlend]...30 frames drawn in 1.038 seconds => 28.9 frames/s
INFO
RenderCopy [modeNone]...259 frames drawn in 1.001 seconds => 258.8 frames/s
INFO
RenderCopy [modeBlend]...213 frames drawn in 1.001 seconds => 212.7 frames/s
INFO
RenderCopyEx [modeNone]...58 frames drawn in 1.002 seconds => 57.9 frames/s
INFO
RenderCopyEx [modeBlend]...140 frames drawn in 1.007 seconds => 139.0 frames/s
INFO
Color modulation [modeNone]...215 frames drawn in 1.001 seconds => 214.7 frames/s
INFO
Color modulation [modeBlend]...189 frames drawn in 1.001 seconds => 188.9 frames/s
INFO
Alpha modulation [modeNone]...217 frames drawn in 1.003 seconds => 216.3 frames/s
INFO
Alpha modulation [modeBlend]...183 frames drawn in 1.004 seconds => 182.3 frames/s
INFO
UpdateTexture [modeNone]...8636.4 operations/s2353.8 megabytes/s
INFO
ReadPixels [modeNone]...4609.7 operations/s1256.3 megabytes/s
INFO
Bye bye


newlib:
INFOSDL2 renderer benchmark v0.7 (SDL version 2.30.4)
INFOThis tool measures the speed of various 2D drawing features
INFO
Press ESC key to quit
INFO
Parameterswidth 800height 600renderer name '(null)'duration 1.000 sobjects 100sleep 0
INFO
Image size 408*167
INFO
Pixel format 0x16161804 (SDL_PIXELFORMAT_RGB888)
INFOStarting to test renderer called [compositing], flags 0xE
INFO
Points [modeNone]...2851 frames drawn in 1.000 seconds => 2850.9 frames/s
INFO
Points [modeBlend]...3251 frames drawn in 1.000 seconds => 3250.8 frames/s
INFO
Lines [modeNone]...23 frames drawn in 1.000 seconds => 23.0 frames/s
INFO
Lines [modeBlend]...39 frames drawn in 1.011 seconds => 38.6 frames/s
INFO
FillRects [modeNone]...429 frames drawn in 1.002 seconds => 428.3 frames/s
INFO
FillRects [modeBlend]...280 frames drawn in 1.003 seconds => 279.1 frames/s
INFO
RenderCopy [modeNone]...5620 frames drawn in 1.000 seconds => 5617.7 frames/s
INFO
RenderCopy [modeBlend]...5603 frames drawn in 1.000 seconds => 5600.6 frames/s
INFO
RenderCopyEx [modeNone]...5407 frames drawn in 1.000 seconds => 5406.8 frames/s
INFO
RenderCopyEx [modeBlend]...5492 frames drawn in 1.000 seconds => 5491.1 frames/s
INFO
Color modulation [modeNone]...1117 frames drawn in 1.000 seconds => 1116.6 frames/s
INFO
Color modulation [modeBlend]...1152 frames drawn in 1.001 seconds => 1151.3 frames/s
INFO
Alpha modulation [modeNone]...5612 frames drawn in 1.000 seconds => 5609.3 frames/s
INFO
Alpha modulation [modeBlend]...5461 frames drawn in 1.000 seconds => 5460.6 frames/s
INFO
UpdateTexture [modeNone]...7913.0 operations/s2156.6 megabytes/s
INFO
ReadPixels [modeNone]...42.8 operations/s11.7 megabytes/s
INFO
Starting to test renderer called [opengl], flags 0x2
INFO
Points [modeNone]...1962 frames drawn in 1.000 seconds => 1961.7 frames/s
INFO
Points [modeBlend]...1976 frames drawn in 1.000 seconds => 1975.1 frames/s
INFO
Lines [modeNone]...49 frames drawn in 1.011 seconds => 48.5 frames/s
INFO
Lines [modeBlend]...53 frames drawn in 1.015 seconds => 52.2 frames/s
INFO
FillRects [modeNone]...436 frames drawn in 1.000 seconds => 435.8 frames/s
INFO
FillRects [modeBlend]...385 frames drawn in 1.001 seconds => 384.5 frames/s
INFO
RenderCopy [modeNone]...1868 frames drawn in 1.000 seconds => 1867.7 frames/s
INFO
RenderCopy [modeBlend]...1866 frames drawn in 1.002 seconds => 1862.3 frames/s
INFO
RenderCopyEx [modeNone]...1828 frames drawn in 1.001 seconds => 1827.0 frames/s
INFO
RenderCopyEx [modeBlend]...1841 frames drawn in 1.000 seconds => 1840.7 frames/s
INFO
Color modulation [modeNone]...1875 frames drawn in 1.000 seconds => 1874.4 frames/s
INFO
Color modulation [modeBlend]...1845 frames drawn in 1.000 seconds => 1844.1 frames/s
INFO
Alpha modulation [modeNone]...1870 frames drawn in 1.000 seconds => 1869.1 frames/s
INFO
Alpha modulation [modeBlend]...1867 frames drawn in 1.000 seconds => 1866.8 frames/s
INFO
UpdateTexture [modeNone]...373.7 operations/s101.8 megabytes/s
INFO
ReadPixels [modeNone]...38.9 operations/s10.6 megabytes/s
INFO
Starting to test renderer called [opengles2], flags 0xA
INFO
Points [modeNone]...4984 frames drawn in 1.000 seconds => 4983.7 frames/s
INFO
Points [modeBlend]...4988 frames drawn in 1.000 seconds => 4987.6 frames/s
INFO
Lines [modeNone]...202 frames drawn in 1.000 seconds => 202.0 frames/s
INFO
Lines [modeBlend]...203 frames drawn in 1.000 seconds => 202.9 frames/s
INFO
FillRects [modeNone]...1040 frames drawn in 1.001 seconds => 1039.1 frames/s
INFO
FillRects [modeBlend]...673 frames drawn in 1.001 seconds => 672.1 frames/s
INFO
RenderCopy [modeNone]...4446 frames drawn in 1.000 seconds => 4445.3 frames/s
INFO
RenderCopy [modeBlend]...4435 frames drawn in 1.000 seconds => 4434.9 frames/s
INFO
RenderCopyEx [modeNone]...4452 frames drawn in 1.000 seconds => 4450.9 frames/s
INFO
RenderCopyEx [modeBlend]...4436 frames drawn in 1.000 seconds => 4435.0 frames/s
INFO
Color modulation [modeNone]...4449 frames drawn in 1.000 seconds => 4448.8 frames/s
INFO
Color modulation [modeBlend]...4431 frames drawn in 1.000 seconds => 4429.3 frames/s
INFO
Alpha modulation [modeNone]...4455 frames drawn in 1.000 seconds => 4454.3 frames/s
INFO
Alpha modulation [modeBlend]...4391 frames drawn in 1.000 seconds => 4390.1 frames/s
INFO
UpdateTexture [modeNone]...342.6 operations/s93.4 megabytes/s
INFO
ReadPixels [modeNone]...43.4 operations/s11.8 megabytes/s
INFO
Starting to test renderer called [software], flags 0xD
INFO
Points [modeNone]...278 frames drawn in 1.001 seconds => 277.7 frames/s
INFO
Points [modeBlend]...279 frames drawn in 1.001 seconds => 278.7 frames/s
INFO
Lines [modeNone]...174 frames drawn in 1.002 seconds => 173.6 frames/s
INFO
Lines [modeBlend]...148 frames drawn in 1.006 seconds => 147.1 frames/s
INFO
FillRects [modeNone]...167 frames drawn in 1.005 seconds => 166.1 frames/s
INFO
FillRects [modeBlend]...32 frames drawn in 1.000 seconds => 32.0 frames/s
INFO
RenderCopy [modeNone]...256 frames drawn in 1.001 seconds => 255.8 frames/s
INFO
RenderCopy [modeBlend]...212 frames drawn in 1.004 seconds => 211.2 frames/s
INFO
RenderCopyEx [modeNone]...64 frames drawn in 1.000 seconds => 64.0 frames/s
INFO
RenderCopyEx [modeBlend]...140 frames drawn in 1.003 seconds => 139.6 frames/s
INFO
Color modulation [modeNone]...216 frames drawn in 1.000 seconds => 216.0 frames/s
INFO
Color modulation [modeBlend]...194 frames drawn in 1.001 seconds => 193.9 frames/s
INFO
Alpha modulation [modeNone]...225 frames drawn in 1.005 seconds => 224.0 frames/s
INFO
Alpha modulation [modeBlend]...187 frames drawn in 1.003 seconds => 186.5 frames/s
INFO
UpdateTexture [modeNone]...5243.6 operations/s1429.1 megabytes/s
INFO
ReadPixels [modeNone]...4503.3 operations/s1227.3 megabytes/s
INFO
Bye bye


clib4 Version beats newlib Version!

btw. Thanks for your great work with clib4 !!!

Go to top


Re: SDL2
Just can't stay away
Just can't stay away


@rjd324

Quote:

Have you come across a situation where an SDL2 game with cause a freeze if either DEFAULT or COMPOSITING is selected as the renderer, but will work if anything else is selected?


No.

Quote:

I am seeing that I need to not choose DEFAULT or COMPOSITING for the latest version of the Wolf port otherwise something goes wrong in SDL_SetTextureScaleMode() causing an ISI error.


It looks like this function implementation is missing in SDL2. Tests don't seem to use it so it wasn't noticed before :( I will try to fix this.

Go to top


Re: SDL2
Amigans Defender
Amigans Defender


try to use clib4 without SPE and see if it works correctly

i'm really tired...
Go to top


Re: Loading… Amiga Belfast
Just can't stay away
Just can't stay away


@walkero

Fantastic, look forward to it!

AmigaOne X1000.
Radeon RX550

http://www.tinylife.org.uk/
Go to top



TopTop
(1) 2 3 4 ... 7301 »




Powered by XOOPS 2.0 © 2001-2023 The XOOPS Project