Previous Thread
Next Thread
Print Thread
Page 11 of 15 1 2 9 10 11 12 13 14 15
Joined: May 2004
Posts: 1,694
Likes: 1
H
Very Senior Member
Offline
Very Senior Member
H
Joined: May 2004
Posts: 1,694
Likes: 1
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,690
Very Senior Member
Offline
Very Senior Member
Joined: Jan 2006
Posts: 3,690
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,002
Likes: 40
J
Very Senior Member
OP Offline
Very Senior Member
J
Joined: May 2009
Posts: 2,002
Likes: 40
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,690
Very Senior Member
Offline
Very Senior Member
Joined: Jan 2006
Posts: 3,690
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
Offline
Senior Member
A
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,002
Likes: 40
J
Very Senior Member
OP Offline
Very Senior Member
J
Joined: May 2009
Posts: 2,002
Likes: 40
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,690
Very Senior Member
Offline
Very Senior Member
Joined: Jan 2006
Posts: 3,690
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: 591
Senior Member
Offline
Senior Member
Joined: Apr 2005
Posts: 591
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,002
Likes: 40
J
Very Senior Member
OP Offline
Very Senior Member
J
Joined: May 2009
Posts: 2,002
Likes: 40
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,694
Likes: 1
H
Very Senior Member
Offline
Very Senior Member
H
Joined: May 2004
Posts: 1,694
Likes: 1
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
4 members (R. Belmont, Golden Child, r09, 1 invisible), 25 guests, and 1 robot.
Key: Admin, Global Mod, Mod
ShoutChat
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Forums9
Topics9,018
Posts118,430
Members5,010
Most Online890
Jan 17th, 2020
Forum Host
These forums are hosted by www.retrogamesformac.com
Forum hosted by www.retrogamesformac.com