Jump to content
IGNORED

source code missing from Removers & Jag C?


xucaen

Recommended Posts

So, today I dug into the Removers C Library and the Jaguar C Library, both source and "binaries", from http://removers.free.fr/softs/download.php?lang=en.

 

I noticed some source code is missing. For example, there is collision.o and collision.h but no collision.c.

 

My assumption is that the Jaguar C Library came direct from Atari and they didn't want to share. Does anyone know why it is missing or where I can find the source?

Link to comment
Share on other sites

Yew, colision.s who is a enhanced version of an idea of Patrice Mandin (Who has used blitter for collision test on Ste). With Seb we have ported it to the Jaguar and after Seb has done a new faster version.

 

It sounds like you are saying it is available someplace, but it looks like they did not include collision.s in the removers gzip archive. Now I'm curious - was that intentional?

Link to comment
Share on other sites

Ok, I found it. I had to download the gz file a second time and I used a different tool to unpack it. I'm using windows, so I guess the tool I had used wasn't 100% compatible and some folders seemed to be missing. I got it now. Sorry for the confusion!!

Link to comment
Share on other sites

Any particular reason not to use newlib for libc? That's what I do in all my toolchains for other consoles. Yes, a specific libc for a console will be smaller and faster, but if you're using a libc function in a place in your code where the size or speed makes ANY difference at all, you're doing it wrong. Hand-coded libc is for 8-bit consoles. :D

Edited by Chilly Willy
Link to comment
Share on other sites

Newlib is one of the most popular implementations of the C libs. It gives full libc and libm on almost any processor or platform.

 

https://sourceware.org/newlib/

 

On the 68000, libm uses software floating point, so it's not going to be super fast, but it's not too bad. Just keep the floats out of the main loop. :)

 

On many processors, things like memset and memcpy have been optimized to be as fast as possible. Anywho, you get all those nice things, like vsprintf() that most hand-coded libc implementations don't have. Having used the 68000 compile of newlib on the Sega Genesis, I can say that using newlib is not a problem on a low-end console. My toolchains always compile a full C/C++ compiler with newlib libs. Now, making a compile of newlib for the JRISCs... that would be a challenge. :D

  • Like 3
Link to comment
Share on other sites

Juste use Assembler !!! :)

That's what I mean - since newlib REQUIRES gcc to compile, you're better off with a hand-written assembler libc for the GPU/DSP. At least for now. Libraries like libc and libm would be one of the candidates for running GPU code from the main ram. You don't need the ultimate in speed, and the space wasted for a full libc/libm is less of an issue for main ram than local ram.

  • Like 2
Link to comment
Share on other sites

My point was that for the 68000, newlib will be a better libc, which was the topic of the OP. A custom C Library is only needed for the GPU/DSP.

 

Unless the OP was badly written... instead of "the Removers C Library and the Jaguar C Library", perhaps he meant "the Removers Library, and the Jaguar Library" which both are in C as that's all this is available, so saying so is kinda redundant as well as misleading. ;)

 

When you say "C Library", you are talking about libc and/or libm. If you mean any old library written in C, you do not call it "the C Library" as that already has a specific meaning to programmers.

Link to comment
Share on other sites

I thought the c "libraries" I mentioned in my op were specific to the Jaguar. It was not my intention to include any standard c library in my post. Badly written? Only in so far as my knowledge and understanding of Jaguar hombrew is bad. But such is the way of the newbiew. My apologies.

 

So, let's move on from here. I understand now that Removers C and Jaguar C also include some pieces of the standard c library. I have also found the specific source code I was originally looking for. I'm am not at a point where I am concerned with calculating the efficiencies of compiled binaries for the Jaguar. I'm still gathering my information and learning what I can when I have time. Is there something else missing from the Removers C and Jaguar C libraries that I need to know about at this stage?

 

I appreciate all of your help. Thanks! :)

Link to comment
Share on other sites

So, today I dug into the Removers C Library and the Jaguar C Library, both source and "binaries", from http://removers.free.fr/softs/download.php?lang=en.

 

I noticed some source code is missing. For example, there is collision.o and collision.h but no collision.c.

 

My assumption is that the Jaguar C Library came direct from Atari and they didn't want to share. Does anyone know why it is missing or where I can find the source?

 

Hello,

 

collision.s is located in rmvlib/collision (as said by others previously).

 

Regarding jlibc, this is the result of my own work, except the implementation of malloc.

This is only a partial implementation of the standard C library. In practice, my guess is that it is sufficient for the Jaguar.

 

Cheers

 

Seb

 

PS: I initially wanted to go with newlib but found it was too heavy for the Jag... maybe I was wrong.

Anyway, you can see that some parts of jlibc are pure assembly code (for instance memcpy/memmove)

 

PPS: you can clone the jlibc and rmvlib repository from github

Edited by SebRmv
  • Like 4
Link to comment
Share on other sites

PS: I initially wanted to go with newlib but found it was too heavy for the Jag... maybe I was wrong.

Anyway, you can see that some parts of jlibc are pure assembly code (for instance memcpy/memmove)

Newlib should be fine for the 68000. As I mentioned, I've never had a problem using it on the Sega Genesis with only 64KB of ram and it's 7.6MHz 68000. However, you probably DO want some things done as optimized assembly that takes into account the Jaguar hardware. Your example of memcpy/memmove is a perfect example. While newlib's memcpy/memset/memmove is good, it couldn't hold a candle to something using the BLITTER, for example. I would probably use newlib for most things, and a special version to take advantage of the Jaguar... say jmemcpy/jmemset/jmemmove, and maybe bmemcpy/bmemset/bmemmove to specify a version that uses the blitter.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...