#37914 - dankydoo - Fri Mar 18, 2005 5:39 pm
Hi all,
I was just wondering...what exactly is the difference between the "passme" binaries and the "emulator" binaries?? Are the loaded into a different memory location? Is it because the passme is hijacking the arm9 so they are loaded into a different memory space? Thanks for helping me with my curiosity...
dankydoo
#37919 - tepples - Fri Mar 18, 2005 6:54 pm
dankydoo wrote: |
what exactly is the difference between the "passme" binaries and the "emulator" binaries?? Are the loaded into a different memory location? |
Yes. Remember the "multiboot" vs. "ROM" binaries of the GBA. On the GBA, multiboot binaries are loaded into EWRAM to execute. Early GBA emulators could not emulate multiboot binaries, which is why most homebrew multiboot programs have a dual-mode startup code that copies the program into EWRAM if it's running from ROM. Likewise, "emulator" binaries load code and assets from a slow cart bus into EWRAM, while "PassMe" binaries typically run from ROM.
FEATURE REQUEST: Once publicly available emulators can emulate a PassMe adapter, things will become more consistent in dsdev land.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.
#37944 - Lynx - Sat Mar 19, 2005 12:10 am
From my understanding, the real difference is the actual code. A PassMe demo has ARM7 code, ARM9 code, and a bootloader. Emulator binaries are just the ARM9 code. I'm not sure about the others, but Dualis is just an ARM9 emulator. (correct me if I'm wrong) It has the standard ARM7 code (which is required for Touchscreen, etc) built in. PassMe demos are everything that is required to run on the DS. I believe in the future, if DS flash carts were available, we'd only need to change the bootloader and the current PassMe Demos would work. (right?)
And PassMe demos don't run from ROM, they actually run from RAM. They are loaded from the flash cart into RAM. Once the code is loaded, you can remove the cart and the demo/game will continue to play.
#37945 - dagamer34 - Sat Mar 19, 2005 1:01 am
Lynx wrote: |
And PassMe demos don't run from ROM, they actually run from RAM. They are loaded from the flash cart into RAM. Once the code is loaded, you can remove the cart and the demo/game will continue to play. |
Does this mean that we are limited to 4MB in our demos?
_________________
Little kids and Playstation 2's don't mix. :(
#37947 - PhoenixSoft - Sat Mar 19, 2005 1:10 am
Do you consider 4 MB to be too small? I would think it would be plenty of space. Atari 2600 developers had to fit games into 4 KB, so you can't complain about having 1024 times that space :P
#37950 - dagamer34 - Sat Mar 19, 2005 1:33 am
PhoenixSoft wrote: |
Do you consider 4 MB to be too small? I would think it would be plenty of space. Atari 2600 developers had to fit games into 4 KB, so you can't complain about having 1024 times that space :P |
...
_________________
Little kids and Playstation 2's don't mix. :(
#37958 - tepples - Sat Mar 19, 2005 4:34 am
Atari 2600 developers didn't have to worry about high-resolution textures, 3D models, or sampled sound.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.
#37963 - PhoenixSoft - Sat Mar 19, 2005 5:06 am
tepples wrote: |
Atari 2600 developers didn't have to worry about high-resolution textures, 3D models, or sampled sound. |
I know, I was just saying that 4 MB is a lot more space than some people seem to think.
#37968 - ampz - Sat Mar 19, 2005 10:42 am
dagamer34 wrote: |
Lynx wrote: |
And PassMe demos don't run from ROM, they actually run from RAM. They are loaded from the flash cart into RAM. Once the code is loaded, you can remove the cart and the demo/game will continue to play. |
Does this mean that we are limited to 4MB in our demos? |
No, why would you be limited to 4MB?
#37976 - tepples - Sat Mar 19, 2005 3:50 pm
Nintendo DS EWRAM is 4 MB.
Correct me if I'm wrong, but based on what I've read so far, I'm guessing that PassMe works like this: - PassMe uses the DS cart as a crypto coprocessor.
- PassMe modifies the header coming through the cart bus to tell the DS to load an initial program up to 4 MB in size from GBA ROM into EWRAM instead of from the DS cart into EWRAM.
- The ARM9 and ARM7 processors begin to execute code from EWRAM, but at least the ARM7 can still read assets from GBA ROM.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.
#37984 - dagamer34 - Sat Mar 19, 2005 6:31 pm
tepples wrote: |
Nintendo DS EWRAM is 4 MB.
Correct me if I'm wrong, but based on what I've read so far, I'm guessing that PassMe works like this: - PassMe uses the DS cart as a crypto coprocessor.
- PassMe modifies the header coming through the cart bus to tell the DS to load an initial program up to 4 MB in size from GBA ROM into EWRAM instead of from the DS cart into EWRAM.
- The ARM9 and ARM7 processors begin to execute code from EWRAM, but at least the ARM7 can still read assets from GBA ROM.
|
Well, if that last statement is true, then it's possible to load data into RAM using the ARM7 and only them be limited by the size of the cart (non bankswitched). I can live with 32MB. :)
_________________
Little kids and Playstation 2's don't mix. :(
#37987 - darkfader - Sat Mar 19, 2005 7:16 pm
tepples wrote: |
[*]PassMe modifies the header coming through the cart bus to tell the DS to load an initial program up to 4 MB in size from GBA ROM into EWRAM instead of from the DS cart into EWRAM. [*]The ARM9 and ARM7 processors begin to execute code from EWRAM, but at least the ARM7 can still read assets from GBA ROM. [/list] |
Actually, the original ARM7 code is still loaded. It patches the execution address to GBA ROM. The ARM9 is put into a waiting loop.
#37991 - ampz - Sat Mar 19, 2005 8:09 pm
darkfader wrote: |
tepples wrote: | [*]PassMe modifies the header coming through the cart bus to tell the DS to load an initial program up to 4 MB in size from GBA ROM into EWRAM instead of from the DS cart into EWRAM. [*]The ARM9 and ARM7 processors begin to execute code from EWRAM, but at least the ARM7 can still read assets from GBA ROM. [/list] |
Actually, the original ARM7 code is still loaded. It patches the execution address to GBA ROM. The ARM9 is put into a waiting loop. |
There is a waiting loop in the DS card header nowdays?
#37996 - natrium42 - Sat Mar 19, 2005 9:12 pm
ampz wrote: |
There is a waiting loop in the DS card header nowdays? |
Yes, the new takeover method vectors ARM9 into a one instuction loop in the header. This instuction jumps to the position specified by ARM9 vector. So to jump to your own code you modify the ARM9 vector to point to your own ARM9 entry point.
_________________
www.natrium42.com