|
|
|||||||
| Home | Register | Downloads | FAQ | Members List | Calendar | Arcade | Mark Forums Read |
» Less advertising throughout
» Post and participate in discussions
» Network with other forum members
» Free private messaging
![]() |
|
|
Thread Tools | Display Modes |
|
|
#241 |
|
Emu author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Sep 2006
Location: VisualC
Posts: 1,195
|
It's, afaik, a timing problem, related to the IRQs. Check the Zelda Video Demo (it isn't running), and you'll see it's the same problem. I've worked on it a few hours, with mid to good results, but it's far for finished.
__________________
Emulator development blog |
|
|
|
| Advertisement | [Remove Advertisement] | ||
|
|
|
#242 |
|
Formerly NHervé
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Peach__'s castle
Posts: 818
|
Thanks. I can tell you RaymanDS is not working because of a strange problem in the ARM9. The ARM9 freezes on this opcode : MCR CP15, 0, R0, CR7, CR0, 4 which means "Wait for IRQ". IE=0x00040019 and IF=0x000C0019, so IRQ should be triggered, but it is not.
__________________
Luigi__'s website - now open! -- If you're wondering where Mario__ is, he is currently saving Peach__ once again. |
|
|
|
|
|
#243 | |
|
Emu author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Sep 2006
Location: VisualC
Posts: 1,195
|
Quote:
__________________
Emulator development blog |
|
|
|
|
|
|
#244 |
|
Formerly NHervé
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Peach__'s castle
Posts: 818
|
This is VERY strange. IE&IF=0x00040019, so IRQs should be triggered. DeSmuME does'nt trigger these IRQs, I don't know why. Very strange. PS : Why do you don't commit your changes to CVS ?
__________________
Luigi__'s website - now open! -- If you're wondering where Mario__ is, he is currently saving Peach__ once again. Last edited by Luigi__; April 21st, 2008 at 22:24.. Reason: Automerged Doublepost |
|
|
|
|
|
#245 |
|
Emu author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Sep 2006
Location: VisualC
Posts: 1,195
|
Why should I? That's the interesting question. Anyway, to make a long story short, I'm not very interested on seeing games running on desmume, but making it a good development tool. As of now, the included debugger tools are far from good, so if it's not going to be useful for homebrew development, there isn't much point for me. Of course I make an incompatible game run once and then, just because the challenge is fun.
__________________
Emulator development blog |
|
|
|
|
|
#246 |
|
Formerly NHervé
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Peach__'s castle
Posts: 818
|
Okay. I think I'll have to debug my incompatible games myself (Worms2, MarioKart, RaymanDS). I think the RaymanDS bug is very strange.
__________________
Luigi__'s website - now open! -- If you're wondering where Mario__ is, he is currently saving Peach__ once again. |
|
|
|
|
|
#247 |
|
Emu author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Sep 2006
Location: VisualC
Posts: 1,195
|
Oh, and I forgot that I won't be committing minor fixes on official Desmume for a long while (as I did before, basically supporting homebrewers requests), you can find the reason somewhere in the forums.
__________________
Emulator development blog |
|
|
|
|
|
#248 |
|
Formerly NHervé
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Peach__'s castle
Posts: 818
|
I found what's wrong with RaymanDS : The ARM9 freezes on this MCR opcode because the I flag is set, which means "Disable IRQ".
__________________
Luigi__'s website - now open! -- If you're wondering where Mario__ is, he is currently saving Peach__ once again. |
|
|
|
|
|
#249 | |
|
Emu author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Sep 2006
Location: VisualC
Posts: 1,195
|
Quote:
__________________
Emulator development blog |
|
|
|
|
|
|
#250 |
|
Formerly NHervé
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Peach__'s castle
Posts: 818
|
PS : I hacked this by forcing the I flag to be 0, I got over 2 intros further but the game still doesn't work. After reading the ARM datasheet, I found that this MCR opcode switches the proc in low-power mode, and any IRQ can wake it up even if IRQs are disabled (I flag set to 1), which DeSmuME doesn't support. I'll try to implement this feature and I'll tell you.
__________________
Luigi__'s website - now open! -- If you're wondering where Mario__ is, he is currently saving Peach__ once again. |
|
|
|
|
|
#251 | |
|
Emu author
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Sep 2006
Location: VisualC
Posts: 1,195
|
Quote:
__________________
Emulator development blog |
|
|
|
|
|
|
#252 |
|
Formerly NHervé
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Peach__'s castle
Posts: 818
|
I'm gathering more and more infos : before calling the MCR opcode, the game stores the 8 first bits of R2 into the control bits of the CPSR. Maybe R2 is having wrong value. I think any NDS program shouldn't set I flag to 1 before calling a "wait for IRQ" opcode.
__________________
Luigi__'s website - now open! -- If you're wondering where Mario__ is, he is currently saving Peach__ once again. |
|
|
|
|
|
#253 | |
|
PCSX2 Coder
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jan 2004
Location: Plymouth, UK
Posts: 10,037
|
Just thought id put my 2 cents in with my lack of knowledge. from reading this Quote:
Im probably completely wrong, but if it gets the cogs ticking, thats all that matters
__________________
http://www.pcsx2.net Intel i7 920 @ 3.4Ghz, POV GTX 570 1.3Gb, 1.8Tb HD space, 6Gb OCZ Reaper PC3-14400 Triple Channel Dont PM me for help, use the forums, thats what its for! My Chip16 Emulator RefChip16 http://code.google.com/p/refchip16/
|
|
|
|
|
|
|
#254 |
|
Formerly NHervé
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Peach__'s castle
Posts: 818
|
Maybe it's that, or maybe the game is disabling IRQs for a special purpose and it uses that MCR opcode that ignores the I flag. I tried by adding a "lowPower" variable in the armcpu_t struct, setting it to 1 when the MCR opcode is called and to 0 when a IRQ occurs, but it is still not correct. It makes the game freezes in a strange location (0x0FFF0000).
__________________
Luigi__'s website - now open! -- If you're wondering where Mario__ is, he is currently saving Peach__ once again. Last edited by Luigi__; April 22nd, 2008 at 20:51.. Reason: Automerged Doublepost |
|
|
|
|
|
#255 |
|
PCSX2 Coder
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jan 2004
Location: Plymouth, UK
Posts: 10,037
|
do you know when the IRQ disable flag is being set? or is it being done manually and not being reset? i dunno cos ive not looked at the source
__________________
http://www.pcsx2.net Intel i7 920 @ 3.4Ghz, POV GTX 570 1.3Gb, 1.8Tb HD space, 6Gb OCZ Reaper PC3-14400 Triple Channel Dont PM me for help, use the forums, thats what its for! My Chip16 Emulator RefChip16 http://code.google.com/p/refchip16/
|
|
|
|
|
|
#256 |
|
Formerly NHervé
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Peach__'s castle
Posts: 818
|
Yes. The game calls a subroutine in order to set the CPSR to 0x1F (I=0), then calls the MCR that succeds, calls then another subroutine that sets the CPSR to 0x9F (I=1), then calls the same MCR. This time the MCR lamentably freezes the ARM9 due to I=1.
__________________
Luigi__'s website - now open! -- If you're wondering where Mario__ is, he is currently saving Peach__ once again. |
|
|
|
|
|
#257 |
|
PCSX2 Coder
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jan 2004
Location: Plymouth, UK
Posts: 10,037
|
okay, any idea what causes the interrupt?, maybe it expects a response by then. Meh, ill leave you guys to it, i really dont know the DS system
__________________
http://www.pcsx2.net Intel i7 920 @ 3.4Ghz, POV GTX 570 1.3Gb, 1.8Tb HD space, 6Gb OCZ Reaper PC3-14400 Triple Channel Dont PM me for help, use the forums, thats what its for! My Chip16 Emulator RefChip16 http://code.google.com/p/refchip16/
|
|
|
|
|
|
#258 |
|
Formerly NHervé
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Peach__'s castle
Posts: 818
|
I don't know. When I hack it I get 3 intros instead of 1, but it's still not correct. It seems that what I described in my previous post is done by the game in order to "test" something. Maybe it's the init sequence of the SDK that's been used to develop this game.
__________________
Luigi__'s website - now open! -- If you're wondering where Mario__ is, he is currently saving Peach__ once again. |
|
|
|
|
|
#259 |
|
Registered User
Join Date: Nov 2007
Location: NZ
Posts: 12
|
NHervé, can you post a disassembly of the last few opcodes before it freezes, maybe it will tell us what its doing and expecting from the hardware.
|
|
|
|
|
|
#260 |
|
Formerly NHervé
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Join Date: Jul 2007
Location: Peach__'s castle
Posts: 818
|
Well, I'll do it. Sorry to be late, but the forums recently had problems due to moving servers.
__________________
Luigi__'s website - now open! -- If you're wondering where Mario__ is, he is currently saving Peach__ once again. |
|
|
|
![]() |
| Tags |
| desmume, release |
| Thread Tools | |
| Display Modes | |
|
|