|
|
|||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
![]() |
|
|
LinkBack | Thread Tools | Display Modes |
|
|
#281 (permalink) | |
|
Emu author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Sep 2006
Location: VisualC
Posts: 630
|
Quote:
__________________
Emulator development blog |
|
|
|
|
|
|
#282 (permalink) |
|
Plugin author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Nulle part
Posts: 322
|
I don't want to give up. I want to make of this the perfect emu, which can run all games without any bug and fast. But when it'll be, Nintendo surely had release the next-generation handheld, maybe DS II. Making a perfect emu takes a long time.
|
|
|
|
|
|
#283 (permalink) | ||
|
Rockman fan
![]() ![]() ![]() ![]() ![]() ![]() Join Date: May 2002
Location: Earth!
Posts: 3,119
|
Quote:
![]() Quote:
Yes, there is no maybe. There is planning for next update of DS this summer.
__________________
![]()
|
||
|
|
|
|
|
#284 (permalink) |
|
Plugin author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Nulle part
Posts: 322
|
Well, all VRAM handling should be rewritten...
In NSMB, the mini-games have bad sprites due to faulty VRAM handling... I found how do they work : They map the bank D as BOBJ and I as <Disabled> and write the sprite data in BOBJ, then they map bank D as LCD and bank I as BOBJ, and write in BOBJ some data for the pause buttons, and finally map bank D as BOBJ and I as LCD. When I press A (pause), the bank D gets mapped as LCD and the bank I as BOBJ. So I can say that the sprite data must be at 0x06860000 (LCD+0x60000, bank D) and button data must be at 0x068A0000 (LCD+0xA0000, bank I). |
|
|
|
|
|
#285 (permalink) |
|
Plugin author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Nulle part
Posts: 322
|
I was reading the earlier posts...
When I talked about the RRR2 bug in the 3D core, Shash said it was not the 3D core. It was the 3D core, because the game sends the 3D commands in big-endian (ie : 0x1B000000 instead of 0x0000001B). The 3D core was designed for standard commands (0x0000001B), because of the NOPs being before the cmd, the 3D core was not shifting the command container and missing the command. After that it was interpreting the params as commands and was being completely messed up. Stupid bug, but not so simple to find. |
|
|
|
|
|
#287 (permalink) |
|
Emu author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Sep 2006
Location: VisualC
Posts: 630
|
Your fix for the depth clearing is faulty, it basically pushes the maximum depth to an unreasonable distance, with a maximum of 511, when the farthest distance on openGL after the modelview projection is 1, thus it will fail on any case of an .nds abusing it.
__________________
Emulator development blog |
|
|
|
|
|
#288 (permalink) |
|
Eric Cartimenez
![]() ![]() ![]() Join Date: Jul 2006
Location: Here
Posts: 265
|
shashClp always seeing every thing...
![]() NHervé good job
__________________
When I was young, it seemed that life was so wonderful, A miracle, oh it was beautiful, magical. But then they send me away to teach me how to be sensible, Logical, responsible, practical, acceptable, respecable, presentable, a vegtable! |
|
|
|
|
|
#289 (permalink) |
|
Registered User
Join Date: Jan 2008
Location: Anti-Japanese
Posts: 5
|
Wonderful job! FF4DS could play now,but the speed is too slow......
Still can't play DQ4DS,BTW.
__________________
I'm Waiting For Further PSP Emulation! Core 2 Duo T7100 1.8G 1G DDRII 667 Geforce 8400MG
|
|
|
|
|
|
#290 (permalink) | |
|
Plugin author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Nulle part
Posts: 322
|
Shash : I see you don't waste your time, the first thing you did when you saw the mod 3 is looking at the sources.
My depth fix is accurate, compared to Nocash specs, and it is correct. You're wrong, I did the operation for the max possible depth (0x7FFF, not 0x7FFFF as it is in your source : 0x7FFF = 32767; 0x7FFFF=524287; that differ a lot), the result is giving 0xFFFFFF, which is divided by (1<<24)(=0x1000000), so the result CANNOT overflow 1.0 . Check your code : The good func (mine) is : Code:
void NDS_glClearDepth(unsigned long v)
{
u32 depth24b;
v &= 0x7FFF;
depth24b = (v*0x200)+((v+1)/0x8000)*0x1FF;
glClearDepth(depth24b / ((float)(1<<24)));
}
Code:
void NDS_glClearDepth(unsigned long v)
{
u32 depth24b;
if(beginCalled)
glEnd();
v &= 0x7FFFF;
depth24b = (v*0x200)+((v+1)/0x8000);
// Using 23 instead of 24 fixes SM 64 DS
glClearDepth(depth24b / ((float)(1<<23)));
if(beginCalled)
glBegin(vtxFormat);
}
Check here : Specifications Quote:
|
|
|
|
|
|
|
#291 (permalink) |
|
Emu author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Sep 2006
Location: VisualC
Posts: 630
|
Ouch, I stand corrected, I don't know why I ignored the nocash documentation when I implemented, good find
![]() Btw, of course I look first at the sources, I'm a coder, I'm way more interested on code than final result XD
__________________
Emulator development blog |
|
|
|
|
|
#292 (permalink) |
|
Plugin author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Nulle part
Posts: 322
|
You didn't ignore totally the Nocash doc when you implemented it.
Your operation to convert the depth to 24-bit is almost the same as on Nocash doc. Anyway it's great you recognized it. Don't forget to credit me when you'll commit your correct fix to your CVS. |
|
|
|
|
|
#294 (permalink) |
|
Plugin author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Nulle part
Posts: 322
|
Shash : just another thing : your code to support flipped-repeat textures work great, but there's a simpler way to do this. Look at the SetupTexture func found in opengl_collector_3Demu.c (I use this func in my core), it simply uses GL_MIRRORED_REPEAT.
ShadowPlayer : strange problem indeed. I think the problem is the emu returning a wrong value (unsupported I/O port or unaligned read, they are badly supported even if marked OK by ArmWrestler) and this value being loaded to PC. The value being wrong, PC gets wrong too, and the emu executes the content of a memory region that's not meant to contain code, but data. Last edited by NHervé; 5 Days Ago at 21:00. Reason: Automerged Doublepost |
|
|
|
|
|
#295 (permalink) |
|
JUMPIN' UP THE NATIONS
![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: May 2004
Location: Perpetual Hawaii
Posts: 4,375
|
Not to sound like an a**, but some of this technical exchange might be more appropriate in private messagery or IRC. Just a note.
__________________
< My deviantART | GENERALEMU | Webcomics VBA-M | @ES | <(^_^<) (>^_^)> <(^_^)> <(^_^<) (>^_^)> <(^_^)> May the fleas of 1000 camels infest the crotches of BIOS swappers! And may their arms be too short to scratch!
|
|
|
|
|
|
#296 (permalink) | |
|
Emu author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Sep 2006
Location: VisualC
Posts: 630
|
Quote:
Why, having some technical and intelligent discussion is forbidden in a release thread? Not to sound like an a** too, but I prefer this over messages with "LOL" all over or "Mmm ***". This being a NHervé's thread without any violation of the rules, I can't see any proble
__________________
Emulator development blog |
|
|
|
|
|
|
#297 (permalink) |
|
Plugin author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Nulle part
Posts: 322
|
Shash : GL_MIRRORED_REPEAT is defined in glext.h . Apparently, you don't need anything other.
I'm currently working on unaligned LDRs, I got ArmWrestler to mark them OK, but I think they are still not correct, some games displaying "undefined ARM instruction x" msg, probably due to unaligned LDRs returning wrong data. Maybe this is why RaymanDS isn't still working. (this game performs some unaligned LDRs at start, maybe these data are used later, after the 3rd intro screen). Hard core Rikki : this is my thread, and this isn't against the forum rules. I know that normal people don't understand half of what we're discussing here. Shash : how did you fix the LDRs in your emu ? In your arm_instructions.c file, they are still using the bad ROR macro. I think unaligned reads could be the problem of RaymanDS, but I'm not sure at all. I don't know why it doesn't go over the 3rd intro. Last edited by NHervé; 4 Days Ago at 13:37. Reason: Automerged Doublepost |
|
|
|
|
|
#298 (permalink) |
|
Eric Cartimenez
![]() ![]() ![]() Join Date: Jul 2006
Location: Here
Posts: 265
|
Well I agree with shashClp... this discussion don't "hurt" any rule ... anyway this is a emulation forum :S
("I know that normal people don't understand half of what we're discussing here") but those that understand... ;D even the minor
__________________
When I was young, it seemed that life was so wonderful, A miracle, oh it was beautiful, magical. But then they send me away to teach me how to be sensible, Logical, responsible, practical, acceptable, respecable, presentable, a vegtable! |
|
|
|
|
|
#299 (permalink) |
|
Plugin author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Nulle part
Posts: 322
|
Shash : I implemented low-power mode for ARM9, but RaymanDS still doesn't work. It's driving me nuts. I tried to log the opcodes, but, when logging is enabled, the emu logs for about 20 seconds and then crashes, giving a log that's not interesting. I wonder what's the problem.
And, what do you mean by "timing problem" ? I guess that the IRQs don't happen when they should do. |
|
|
|
|
|
#300 (permalink) | |
|
PCSX2 Coder
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jan 2004
Location: Plymouth, UK
Posts: 9,282
|
Quote:
it could be related to what i think i said earlier in terms of timing. Its common fact, when someone happens on the hardware, its never instant, so you need a delay on the interrupt to simulate the processing time. How long this is i dont know, but it might be worth having an internal timer system which waits xcycles * size for the dmas or what have you, to simulate the bus transfer time.
__________________
http://www.generalemu.net/ Intel Core 2 Quad Q6600 @ 3.4Ghz (425x8), eVGA 8800GTX 768mb, 996Gb HDs, 2Gb Corsair DDR2-800 @ DDR2-1020 5-5-5-18 Dual Channel, 14605 3dMark 06 Points CPU-Z Link 3dMark06 Score Link Dont PM me for help, use the forums, thats what its for! |
|
|
|
|