Previous Thread
Next Thread
Print Thread
Page 11 of 15 1 2 9 10 11 12 13 14 15
Joined: May 2004
Posts: 1,773
Likes: 34
H
Very Senior Member
Very Senior Member
H Offline
Joined: May 2004
Posts: 1,773
Likes: 34
people are bothering you more because you're working on it... same with anything really.

and having testers while you're actively working on code tends to be good, you can't be expected to catch everything which changes for every change you make, so it can be a handy indication as to if you're doing things right.

simple as that ;-)

actually you should probably be impressed, considering 100% performance is still out of reach with current CPU speeds it's impressive people are testing the driver enough to give you reports :-)

Joined: Jan 2006
Posts: 3,693
Very Senior Member
Very Senior Member
Joined: Jan 2006
Posts: 3,693
speaking of which, at some point in the past few days or today the camera behavior in J.League Live 64 got fixed and the game is now playable

Joined: May 2009
Posts: 2,223
Likes: 387
J
Very Senior Member
Very Senior Member
J Offline
Joined: May 2009
Posts: 2,223
Likes: 387
Originally Posted by etabeta78
speaking of which, at some point in the past few days or today the camera behavior in J.League Live 64 got fixed and the game is now playable

Sounds like some of the RSP changes I made the other day I had an effect. smile

Joined: Jan 2006
Posts: 3,693
Very Senior Member
Very Senior Member
Joined: Jan 2006
Posts: 3,693
JD I have found the reason of the crash in mariokrt on MacOSX. there are out of bound accesses in the following routines that you can fix as follows

Code
N64TexturePipeT::MaskCoupled (and possibly N64TexturePipeT::Mask too)
-		INT32 maskbits_s = m_maskbits_table[tile[num].mask_s];
-		INT32 maskbits_t = m_maskbits_table[tile[num].mask_t];
+		INT32 maskbits_s = m_maskbits_table[tile[num].mask_s & 0x0f];
+		INT32 maskbits_t = m_maskbits_table[tile[num].mask_t & 0x0f];

N64TexturePipeT::Fetch
-	return ((this)->*(TexelFetch[index]))(s, t, tbase, tpal, userdata);
+	return ((this)->*(TexelFetch[index & 79]))(s, t, tbase, tpal, userdata);

however the resulting code produces glitches around (e.g. invisible cars in Mario Kart and broken menus in many games)

also I have noticed two things in the Mask/MaskCoupled routines: you define them for "INT32 num" but Cycle() pass them a "UINT32 tilenum" and I would expect in fact such a tilenum to be in the 0-7 range, given that the n64_rdp class has
Code
N64Tile		m_tiles[8];
is there any missing mask?

I hope this report might help you to find the proper solution to have both the crash fixed and the cars visible smile

Joined: Sep 2004
Posts: 392
Likes: 4
A
Senior Member
Senior Member
A Offline
Joined: Sep 2004
Posts: 392
Likes: 4
Erm, masking against 79 isn't going to give you correct results. wink

Joined: May 2009
Posts: 2,223
Likes: 387
J
Very Senior Member
Very Senior Member
J Offline
Joined: May 2009
Posts: 2,223
Likes: 387
Not to mention the fact that the issue is that the data structures themselves are trashed. So even if what you're proposing "fixes" the issue, it "fixes" it by prolonging the duration of time the driver is going to be using fucked-up values and doing wrong shit. Your "fix" is, like, MASH-level bad.

Basically, I appreciate the attempt to help, but unless you're a professional N64 programmer who has written microcode, just let me handle it. Guesswork is what's gotten us into this situation, and I at least recognize when I have no idea what I'm doing, which is why I've been trying to solicit information from people who have actually made N64 demos and written N64 games, not random other devs.

Joined: Jan 2006
Posts: 3,693
Very Senior Member
Very Senior Member
Joined: Jan 2006
Posts: 3,693
well, I got 79 from the N64TexturePipeT class

Code
TexelFetcher		TexelFetch[16*5];

I haven't dig further, 'cause it's 12AM and I have to wake up early tomorrow wink

Joined: Apr 2005
Posts: 618
Likes: 6
Senior Member
Senior Member
Joined: Apr 2005
Posts: 618
Likes: 6
Originally Posted by etabeta78
Code
N64TexturePipeT::Fetch
-	return ((this)->*(TexelFetch[index]))(s, t, tbase, tpal, userdata);
+	return ((this)->*(TexelFetch[index & 79]))(s, t, tbase, tpal, userdata);

you probably meant:
Code
+	return ((this)->*(TexelFetch[index % 79]))(s, t, tbase, tpal, userdata);
grin

however, as others pointed out, the problem lies elsewhere, i.e. why does the index get larger than 79 in the first place? And why do the masks contain values larger than 0x0f

-Darkstar

Joined: May 2009
Posts: 2,223
Likes: 387
J
Very Senior Member
Very Senior Member
J Offline
Joined: May 2009
Posts: 2,223
Likes: 387
Originally Posted by etabeta78
I haven't dig further, 'cause it's 12AM and I have to wake up early tomorrow wink

It's corrupted memory, I guarantee it, so any of amount of finagling it into working is just going to mask the issue, not make it more apparent. Better that it should crash closer to the time the memory gets trashed than even farther into the future.

Joined: May 2004
Posts: 1,773
Likes: 34
H
Very Senior Member
Very Senior Member
H Offline
Joined: May 2004
Posts: 1,773
Likes: 34
Originally Posted by Just Desserts
Not to mention the fact that the issue is that the data structures themselves are trashed. So even if what you're proposing "fixes" the issue, it "fixes" it by prolonging the duration of time the driver is going to be using fucked-up values and doing wrong shit. Your "fix" is, like, MASH-level bad.

nothing wrong with *safer* code in general, but no, people can't understand the basics of masking probably shouldn't even be allowed access to the MAME / MESS code. I guess it was probably just a & / % mixup tho, but using % is *very* expensive on performance so not a good solution anyway.



Page 11 of 15 1 2 9 10 11 12 13 14 15

Link Copied to Clipboard
Who's Online Now
0 members (), 131 guests, and 0 robots.
Key: Admin, Global Mod, Mod
ShoutChat
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Forums9
Topics9,345
Posts122,350
Members5,082
Most Online1,283
Dec 21st, 2022
Our Sponsor
These forums are sponsored by Superior Solitaire, an ad-free card game collection for macOS and iOS. Download it today!

Superior Solitaire
Powered by UBB.threads™ PHP Forum Software 8.0.0