Previous Thread
Next Thread
Print Thread
Page 11 of 15 1 2 9 10 11 12 13 14 15
Re: N64 Discussion Station [Re: Just Desserts] #77536 02/20/12 09:45 PM
Joined: May 2004
Posts: 1,608
H
Haze Offline
Very Senior Member
Offline
Very Senior Member
H
Joined: May 2004
Posts: 1,608
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 :-)

Re: N64 Discussion Station [Re: Just Desserts] #77537 02/20/12 09:48 PM
Joined: Jan 2006
Posts: 3,687
etabeta78 Offline
Very Senior Member
Offline
Very Senior Member
Joined: Jan 2006
Posts: 3,687
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

Re: N64 Discussion Station [Re: etabeta78] #77539 02/20/12 10:00 PM
Joined: May 2009
Posts: 1,840
J
Just Desserts Offline OP
Very Senior Member
OP Offline
Very Senior Member
J
Joined: May 2009
Posts: 1,840
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

Re: N64 Discussion Station [Re: Just Desserts] #77540 02/20/12 10:45 PM
Joined: Jan 2006
Posts: 3,687
etabeta78 Offline
Very Senior Member
Offline
Very Senior Member
Joined: Jan 2006
Posts: 3,687
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

Re: N64 Discussion Station [Re: Just Desserts] #77541 02/20/12 10:52 PM
Joined: Sep 2004
Posts: 385
A
AaronGiles Offline
Senior Member
Offline
Senior Member
A
Joined: Sep 2004
Posts: 385
Erm, masking against 79 isn't going to give you correct results. wink

Re: N64 Discussion Station [Re: AaronGiles] #77542 02/20/12 11:20 PM
Joined: May 2009
Posts: 1,840
J
Just Desserts Offline OP
Very Senior Member
OP Offline
Very Senior Member
J
Joined: May 2009
Posts: 1,840
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.

Re: N64 Discussion Station [Re: Just Desserts] #77543 02/20/12 11:22 PM
Joined: Jan 2006
Posts: 3,687
etabeta78 Offline
Very Senior Member
Offline
Very Senior Member
Joined: Jan 2006
Posts: 3,687
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

Re: N64 Discussion Station [Re: etabeta78] #77544 02/20/12 11:39 PM
Joined: Apr 2005
Posts: 560
Darkstar Offline
Senior Member
Offline
Senior Member
Joined: Apr 2005
Posts: 560
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

Re: N64 Discussion Station [Re: etabeta78] #77545 02/20/12 11:43 PM
Joined: May 2009
Posts: 1,840
J
Just Desserts Offline OP
Very Senior Member
OP Offline
Very Senior Member
J
Joined: May 2009
Posts: 1,840
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.

Re: N64 Discussion Station [Re: Just Desserts] #77546 02/21/12 02:31 AM
Joined: May 2004
Posts: 1,608
H
Haze Offline
Very Senior Member
Offline
Very Senior Member
H
Joined: May 2004
Posts: 1,608
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

Who's Online Now
3 registered members (Colin Howell, Dam0, 1 invisible), 89 guests, and 1 spider.
Key: Admin, Global Mod, Mod
ShoutChat Box
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Forums9
Topics8,764
Posts115,179
Members4,889
Most Online890
Jan 17th, 2020
Powered by UBB.threads™ PHP Forum Software 7.7.3