#41005 - assassda - Sun Apr 24, 2005 5:32 am
didnt somone say a while back that you couldnt have mulitple ds homebrew demos on a flash card with passme? why is this? couldnt you have a passme menu that listed all files on the card and ran whichever one you choose rather than just running "gba card"?
#41012 - telamon - Sun Apr 24, 2005 6:42 am
As I do only partially understand the passme method and how gba flashcarts work, I belive it could be done. The whole passme trick is to alter the code execution pointer and then load your code into the ram to be executed from there. So in theory if the first rom would be a custom made bootloader-rom wich knows how many homebrew-roms and at wich addresses they start. Then it could probably give us a choice of wich one to load.
For this to work it's also nessescary that the hombrew roms are not compiled with a private loader (current *.nds.gba files) , And let the booter rom take care of the rest. I'd recommend you check the /boot/main.cpp from joat's NDStemplate for more information on the loading code into ram part.
This would be a pretty practical thing to have if your flashcart software supports custom bootloaders , otherwise you'd have to slap the binaries into one with a few pads here and there. But that could probably be done with a few hours of thinking ,drinking and batch code.
#41017 - josath - Sun Apr 24, 2005 7:00 am
the only thing preventing us from loading multiple DS demos, is the fact that no one has written & released a loader menu & builder yet.
#41030 - Theodore104 - Sun Apr 24, 2005 10:14 am
I've been working on a very simple one, a modification of the existing bootloader that can load one arm7/arm9 pair from a selection.
The main problem I'm having is the interface. My existing system (no display, choose which program to load by pressing X or Y) works fine because it only has to interact with arm7-based devices. However, anything more requires the arm9 to be running as well, which requires me to start both processors, run code on both, load new code into both, and restart them simultaniously. This is the stumbling block...
- Theo
#41051 - tepples - Sun Apr 24, 2005 5:19 pm
Doesn't the ARM7 have full access to the 2D video cores and the regular key register?
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.
#41054 - Chetic - Sun Apr 24, 2005 5:40 pm
Theodore104 wrote: |
My existing system (no display, choose which program to load by pressing X or Y) works fine because it only has to interact with arm7-based devices. |
Any chance one would get to take a look at it, maybe try it?
Even if it's without any display and only two choices, it's still more than one and I'd really like to try it :)
#41057 - Theodore104 - Sun Apr 24, 2005 6:29 pm
tepples wrote: |
Doesn't the ARM7 have full access to the 2D video cores and the regular key register? |
From what I've read, it looks like it has to be "authorised" by the ARM9 setting the VRAM_CR register first... certainly my attempts to write straight to video memory from the ARM7 have just caused crashes. I would welcome someone contradicting me, though!
---
Chetic: Sure, if you can build it; it's just a very simple modification of joat's bootloader though.
http://mainmast.dyndns.org/~tjm/multiboot.zip
Change the paths in CommonMakefile.in if necessary, and put three pairs of binaries in "multiboot\boot\resources\" called "arm7A.bin", "arm9A.bin", "arm7B.bin". etc. (These are just the birnaries that a normal build leaves in the \arm7 and \arm9 directories).
Make and run; at the white screen, tapping the touch screen should run program A, 'X' should run program B, and 'Y' should run program C.
- Theo
#41090 - assassda - Mon Apr 25, 2005 1:30 am
is that an actual ds bootloader?
my idea was that since passme redirects to 0x8000 you could have rom1 be 0x8000 and rom2 be 0x8100 have for instance "partitions" of 8kb or whatever so if the rom didnt take up all the space there would be zeros between
(rom1)000000(rom2)000000(rom3)000000
#41121 - Chetic - Mon Apr 25, 2005 4:34 pm
Wow, Theodore, thanks alot :)
Can't wait for my Wifi card now!
Will be here any minute..
It compiled great, btw.
A. If I only have the arm9 binary, can I still somehow use a replacement arm7 binary?
B. Would it be possible to put the Polarium demo files there and run those?
#41124 - YaW - Mon Apr 25, 2005 4:52 pm
Theodore great work!
It work's fine with PassMe, but the best will be if the MultiBoot can read the roms directly from the GBA Flash :)
_________________
Sorry for my english ><
#41128 - Theodore104 - Mon Apr 25, 2005 6:43 pm
Chetic wrote: |
A. If I only have the arm9 binary, can I still somehow use a replacement arm7 binary? |
Should be fine, yes; the arm7.bin from the ndsdev template project should work in most cases.
Quote: |
B. Would it be possible to put the Polarium demo files there and run those? |
Theoretically, yes. In practice, though, it doesn't seem to work; it seems to need some modifications to run from flash (perhaps to do with the header data; I'm afraid I don't know the details).
- Theo
#41337 - Chetic - Wed Apr 27, 2005 6:49 pm
ok this is really great.
I now have FlashMe on my DS and with this, I can use 3 roms at the same time!
Put some sexy GUI on this (and I guess add support for lots of roms) and I'd be ejaculating :)
Anybody been able to get graphics into it yet? (Perhaps Theodore himself?)
#41352 - welshwarrior - Wed Apr 27, 2005 9:12 pm
What do you mean 3 roms at the same time
#41382 - assassda - Wed Apr 27, 2005 11:52 pm
http://mainmast.dyndns.org/~tjm/multiboot.zip
i havent tested it dont ask me about it theo posted it
EDIT: can someone make a loader that can run both ds and gba games?
#41956 - shadow1w2 - Tue May 03, 2005 7:57 pm
I dont think a boot loader to run both GBA and DS would be possible.
When using a PassMe or other variation, it looks for DS code immeditly (so I understand so far)
Only way I could think of is to make some kind of code that is skiped by the GBA hardware and just goes to a GBA boot menu, but when the PassMe is used, it goes strait to the DS code.
A method like that would probly require a special cart to know to skip the data, unless theres a way to check if its in arm7 (GBA running mode) or not.
So basicly my idea is to put two boot loaders on and get the GBA partion to skip the NDS bootloader code. But this would take alot of work and a certain portion of your cart, not to mention a specific boot loader for each GBA cart.
Still though, this idea is useless unless theres a way to bypass the NDS code. Is there anyway to detect wich mode the NDS is in and get it to skip to another section of code?
Oh and that bootloader seems cool :3
Too bad theres no video.
I wonder if you could atleast have some black lines on there or something.
Color isnt important, but I guess that wouldnt make a defernce either way :/
Good luck on it though.
#41970 - josath - Tue May 03, 2005 9:21 pm
It is possible to go from DS mode into GBA mode. I have done it myself, and it was tested to work.
I made a simple bootloader for the EZFlash 3, that lets you put 1 DS rom and 1 GBA rom on it, and if you boot normally, it runs the DS rom, if you hold X when booting, it boots the GBA rom.
#41986 - Abcd1234 - Tue May 03, 2005 10:52 pm
josath wrote: |
It is possible to go from DS mode into GBA mode. I have done it myself, and it was tested to work. |
That makes sense. This is almost certainly how the built-in firmware triggers execution of a GBA game.
#41990 - tepples - Tue May 03, 2005 10:58 pm
Now all we need is PogoShell for the Nintendo DS. I'm assuming that one would have to turn off the system to switch from GBA mode to DS mode, right?
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.
#41991 - Abcd1234 - Tue May 03, 2005 11:09 pm
tepples wrote: |
Now all we need is PogoShell for the Nintendo DS. I'm assuming that one would have to turn off the system to switch from GBA mode to DS mode, right? |
Presumably, otherwise we wouldn't need PassMe or WifiMe. :)
#42015 - shadow1w2 - Wed May 04, 2005 6:57 am
Well, what about switching modes while its already on and booted? Like run a DS menu and select a GBA game, or a GBA menu and select a DS game, then press a button combo and go back to the menu XD
Im pretty sure that doesnt work easily, though if a GBA frontend to run GBA games in NDS mode is made, then theres no need to switch between modes and keep it in DS mode and run the battry down like mad.
#42024 - Abcd1234 - Wed May 04, 2005 4:29 pm
shadow1w2 wrote: |
or a GBA menu and select a DS game |
Again, this isn't possible. It requires switching to DS mode from GBA mode, and, like I said, if this were possible we wouldn't need all these hacks to trick the DS into loading code from the GBA slot.
#42032 - tepples - Wed May 04, 2005 7:01 pm
Abcd1234 wrote: |
It requires switching to DS mode from GBA mode, and, like I said, if this were possible we wouldn't need all these hacks to trick the DS into loading code from the GBA slot. |
Two possibilities: - There is a way for GBA programs to access DS mode, requiring some sort of serial communication similar to that of Super Game Boy or Game Boy Player, but it's left open for future DS games. Compare Space Invaders for Game Boy, which had a code that could switch from SGB mode into SNES native mode.
- There is an additional lock around switching from GBA mode to DS mode that the firmware enables before loading a GBA game from the GBA slot, but which a DS game could just neglect to enable, giving a DS game the opportunity to run code from a GBA title in the same series. Is there a way to disassemble or otherwise observe the code that executes when the DS goes to GBA mode, in order to learn exactly what's going on?
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.
#42033 - Sausage Boy - Wed May 04, 2005 7:16 pm
Would it be hard to compile different roms into one .nds.gba file and have some assembler code or something in the beginning point execution somewhere else?
I have no knowledge at all in this, of course, but it seems to be a pretty easy solution.
_________________
"no offense, but this is the gayest game ever"
#42036 - tepples - Wed May 04, 2005 7:58 pm
Sausage Boy: That would be part of "PogoShell for Nintendo DS".
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.
#42037 - Abcd1234 - Wed May 04, 2005 8:20 pm
tepples wrote: |
There is an additional lock around switching from GBA mode to DS mode that the firmware enables before loading a GBA game from the GBA slot, but which a DS game could just neglect to enable, giving a DS game the opportunity to run code from a GBA title in the same series. Is there a way to disassemble or otherwise observe the code that executes when the DS goes to GBA mode, in order to learn exactly what's going on? |
Yeah, that *might* be possible (though I'm not holding out any hopes). You'd need a copy of the unencrypted firmware to check, though.
#42041 - Sausage Boy - Wed May 04, 2005 9:14 pm
tepples wrote: |
Sausage Boy: That would be part of "PogoShell for Nintendo DS". |
It would? Cool. Could someone make that? :D
_________________
"no offense, but this is the gayest game ever"
#42046 - josath - Thu May 05, 2005 12:24 am
We could always write a GBA emulator that ran in DS mode, then you could have one menu that ran GBA games and DS games, that you didn't have to reset to go from gba to DS.
Don't think theres enough advantage to writing a GBA emu though, seeing as how the DS can play GBA natively.
#42095 - shadow1w2 - Thu May 05, 2005 8:58 pm
josath wrote: |
We could always write a GBA emulator that ran in DS mode, then you could have one menu that ran GBA games and DS games, that you didn't have to reset to go from gba to DS.
Don't think theres enough advantage to writing a GBA emu though, seeing as how the DS can play GBA natively. |
The advantage of making a GBA emu, or GBA frontend, is to add features that nintendo left out. Like using both screens at once, turning the light on and off and other little things that everyone was expecting it to have.
Also maybe a cheat menu and other things too. But still a GBA emu wouldnt run too well and a GBA frontend would take alot of coding, it could be done, but it'll take long awhile before theres enough info fori t to be attempted.