crazyjul
-
Posts
15 -
Joined
-
Last visited
Content Type
Profiles
Events
Forums
Blogs
Downloads
Posts posted by crazyjul
-
-
-
Hi all,
after some research, I've found that the register REG_WRAMCNT is set to 3 at startup.
This means that video BANK1 and BANK0 are assigned to the arm7.
But in that case, does the video system work as for GBA??
Does anybody has idea about this???
Crazyjul
-
From what I've seen, it seems that DS graphic mode is close to GBA graphic mode when nothing is initialized.
Does somebody can approve this??
Crazyjul
-
The darcs repository has been emptied and fill with tutorial
Where all the code had gone??
Where can I found the source??
Thanks
Crazyjul
-
VRAMmap is initialized in MMUMaininit in dsmmumain.c. It is initialized to nulls and then modified by writes to the VRAM registers. This is a recent change to get memory mapping working correctly (from 0.4.6). If you look at the MMUMainremapVRAM_BANK_A, etc functions you'll see where the initialization is done. Not all of it is implemented as I'm unsure how things like extended palletes, image textures, etc work.
I have noticed some demos don't map the VRAM by writing to the registers. I wrote a simple test of this and when writing to the memory area (VRAM_A for example), the write appears to work but when you read the value back you get 0x00, not what you wrote. So I assumed that there is no default mapping.
This may not be the case for sprites, or may not be the general case and only happened to be the case for the one that I tested of course.
Prior to me doing the VRAM mapping code sprites did not work correctly either so there may be something more fundamental wrong.
So I'll try to make a lot of test. I'll start from scratch. From what I've understood, there are default value in vram mapping register, when I'll get my flasher, I'll try to read them. I will also do some test.
For the demo that does not work when not intializing the vram, they seem to write sprite at 0x06004000. On DsTekWiki, this is shown as Sprte memory, maybe when no memory is map to this address space.
Crazyjul
-
I've looked at sprite code.
It seems that VRAMmap is never initialized, so when the program writes data int othe vmemory, as the vram pointer is null, the write is just skipped.
It seems that video memory remapping register is never written. Nobody knows any default value of it?? It maybe explained why some demo works (in fact, if they remap VRAM, it should work)
I will have a look at this tonight.
Crazyjul
-
The integer square root do not exist in C or C++ library. My first idea was to convert it to double, do the square root ad convert it back. but the conversion of a int64 to double can cause loss of data.
For now, i'm using this solution, knowing that it's both inaccurate and slow to execute.
I've made small test apps with libnds that just display the result of some division and square root. I'm just waiting my flash linker to validate the result of the emulator.
//EDIT : I've send a patch to doublec
-
FIFO support is completed and added to the darcs repository. There are a few bugs I want to try and stamp out and then 0.4.7 will be released. Some of the E3 demos run further now, but it looks like the hardware divide and squareroot registers may need to be implemented to get them further along. I tested a couple of GBA demo's with the recently re-added GBA support and they worked fine.
If you're interested in, I caan look at the square root and divider accelerator
I've already had a look at it, I just need to figure somthing out, and I think it'll be complete
-
That would be great, thanks! The sram patch was a contribution I received and I applied the patch, but after I tested it I forgot to save and record the project.
With the sram fixed, I've made a bit of cleaning.
I've remove nearly all warnings.
I also fix declarations of all function.
I think I've found a bug:
In the sqrt intruction, you're doing : src=arm7reg.r[0]; arm7reg.r[0]= (u32) sqrt(src);
As far as I know, this sqrt is made on integer and not float. Am I right??
If yes, as math.h was not include, sqrt was returning a float, but was treated as an int. IF no, the code should work,but it's better to cast the register as a float before calling sqrt.
Hope it help
I've send you the patchs with darcs send command.
Crazyjul
-
Finally found what was wrong!!!
The file sram.c was lacking in the project.
Thanks for your help
Do you want me to submit a patch?
-
To complete, when I compile the DS dll I get those link errors :
dsmmumain.obj : error LNK2019: unresolved external symbol _sram_read referenced in function _MMUMainrdB
dsmmusub.obj : error LNK2001: unresolved external symbol _sram_read
dsmmumain.obj : error LNK2019: unresolved external symbol _sram_write referenced in function _MMUMainwrB
dsmmusub.obj : error LNK2001: unresolved external symbol _sram_write
glds.obj : error LNK2001: unresolved external symbol _sram_save
glds.obj : error LNK2001: unresolved external symbol _sram_load
.\..\..\Build\Debug/ds.dll : fatal error LNK1120: 4 unresolved externals
Hope it help
crazyjul
-
After unpulling the archive, it's working.
Maybe you've forgot to put a file in the repository?
Thanks for your fast answer.
Crazyjul
-
I'm currently working with darcs files
I've tried both.
With nmake, files are missing, with vc6 project, symbols are missing ( symbols seems to come from mmu.c )
I've really no idea about what happens
Crazyjul
-
I'd like to work on the emulator, but when I try to compile, nmake complains about missing file mmu.c. As it seems gpu.c is also lacking. Any ideas??
Thanks
Crazyjul
DSemu: The Next Generation
in DS Emulators [/pc/ds]
Posted
Have you thought that the MacOS platform is Big endian, and that intel x86 and ds are both little endian.
You can try swap every bytes you are reading.
Good luck guy