#127644 - MaHe - Thu May 03, 2007 7:24 pm
After inspecting the way the games are ran on DS (I'm an amateur, don't flame me for using such simple language :P ), I've figured it's possible to patch the binary in order to inject soft-reset, backlight changing, a cheat system and even a simple pause. However, the thing I want to ask is - how far can you go and not ruin the framerate? Do you think it's possible to implement a pause menu? Real-time save? A shell (like the one on PSP) even?
Thanks for answers!
_________________
[ Crimson and Black Nintendo DS Lite | CycloDS Evolution | EZ-Flash 3-in-1 | 1 GB Transcend microSD ]
Last edited by MaHe on Fri May 04, 2007 5:58 pm; edited 1 time in total
#127647 - Lick - Thu May 03, 2007 7:54 pm
I don't really understand what you mean by "pause menu" and "real-time save", and I'm even more confused by "shell (PSP)".
What would those features enable you to do?
#127648 - Dan2552 - Thu May 03, 2007 8:01 pm
what he means by shell is that the PSP can bring its main menu up on-top of the game so you can change the music you're playing etc
*note this is all guesswork, I don't have a PSP ;P
what he means by real-time save is save a snapshot of the current running game, and be able to load that snapshot again later. (much like emulator snapshots)
#127653 - josath - Thu May 03, 2007 8:53 pm
Dan2552 wrote: |
what he means by shell is that the PSP can bring its main menu up on-top of the game so you can change the music you're playing etc
*note this is all guesswork, I don't have a PSP ;P
what he means by real-time save is save a snapshot of the current running game, and be able to load that snapshot again later. (much like emulator snapshots) |
a general-purpose snapshot tool is probably impossible, since a lot of the ds registers are write-only afaik.
#127677 - Dood77 - Fri May 04, 2007 12:48 am
To do a save state you need to have more memory/processing power than was originally needed to run the game.
And backlight levels only work on DSLites or DS Phat original firmware > 4, and a custom flashme version.
_________________
If I use a term wrong or something then feel free to correct, I?m not much of a programmer.
Original DS Phat obtained on day of release + flashme v7
Supercard: miniSD, Kingston 1GB, Kingston 2GB
Ralink chipset PCI NIC
#127694 - tepples - Fri May 04, 2007 2:34 am
Dood77 wrote: |
To do a save state you need to have more memory/processing power than was originally needed to run the game. |
"more memory" meaning 5 MB more memory right? Would a SuperCard, Expansion Pak, or Trainer Toolkit be able to do this? And aren't most of the write-only registers rewritten every frame anyway?
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.
#127700 - HyperHacker - Fri May 04, 2007 4:45 am
I'm assuming the PSP "shell", which I've never used, is similar to the Xbox 360 dashboard in that you can open it during a game to change the music and so on. This generally requires the games to run in an operating system, which DS games don't. You could potentially disable the sound code entirely (losing SFX too, unless they're all on certain channels, then they could be saved) and hack in a simple WAV player or something, but I suspect the effort required wouldn't really be worth it.
_________________
I'm a PSP hacker now, but I still <3 DS.
#127721 - simonjhall - Fri May 04, 2007 9:04 am
One of my flash cards has a function where you can hold down a button combo and it saves the running state to disk - although I can't get it to do anything. So maybe I've got the wrong end of the stick :-)
_________________
Big thanks to everyone who donated for Quake2
#127731 - chishm - Fri May 04, 2007 10:37 am
If you have external memory that the game wasn't originally designed to use, you can have a shell. The overheads during normal gameplay would be very low -- once per VBlank you'd do a simple check for a certain button combination being pressed. This would be less overhead than a cheat engine adds, which must process the cheat list every VBlank.
Real-time save is practically impossible, as josath has said. You'd basically need to keep track of every register write and mirror that in a mirror state internal to the snapshot tool.
_________________
http://chishm.drunkencoders.com
http://dldi.drunkencoders.com
#127734 - chuckstudios - Fri May 04, 2007 10:47 am
simonjhall wrote: |
One of my flash cards has a function where you can hold down a button combo and it saves the running state to disk - although I can't get it to do anything. So maybe I've got the wrong end of the stick :-) |
My EZFlash III also does this. It works, too :O
#127764 - MaHe - Fri May 04, 2007 6:00 pm
Huh, thanks for explanation, chishm. And josath. And everyone else too. :)
P.S.: Sorry for my amateur vocabulary. And I don't know myself why I named the thread [discussion]. Oh well.
_________________
[ Crimson and Black Nintendo DS Lite | CycloDS Evolution | EZ-Flash 3-in-1 | 1 GB Transcend microSD ]
#127783 - HyperHacker - Sat May 05, 2007 12:00 am
Yeah, you can hook into handlers to do these things, cheat devices did it on a number of systems. It's just not going to be easy, certainly not something the firmware alone could pull off (at least, not a hack of Nintendo's, maybe a custom one might have the space for it) and if you're expecting it to replace in-game music, you probably won't have much luck.
I wish Nintendo would implement this sort of thing though, because being able to replace the music (not to mention the other nice things X360's has) is awesome. They've already got it to an extent on Wii, with the Home button, but it does very little.
_________________
I'm a PSP hacker now, but I still <3 DS.
#127794 - Dood77 - Sat May 05, 2007 1:46 am
HyperHacker wrote: |
They've already got it to an extent on Wii, with the Home button, but it does very little. |
Yeah, and you can't even use the home button in certain situations...
#127812 - HyperHacker - Sat May 05, 2007 8:36 am
I forgot to mention I suspect the menu may even be statically linked into the games. Being able to call it up at any time, even on the Wii Menu, suggests otherwise though. Where are these situations you speak of?
I know N64 and Gamecube games ran in a simple OS that was statically linked to the executable, so it wouldn't have been a huge jump from there to running in one that's part of the system. However with such a low-powered system competing against Xbox 360 and Playstation 3, I wouldn't be surprised if they went with static linking again, so that developers could squeeze extra performance out of the system by running bare-metal or customizing the OS if they really needed to.
_________________
I'm a PSP hacker now, but I still <3 DS.
#128020 - Dood77 - Mon May 07, 2007 8:24 pm
Uhh... Things off the top of my head, during the COD 3 cutscenes, during a firmware update (understandable) ... Can't remember other situations, but I know there's more.
_________________
If I use a term wrong or something then feel free to correct, I?m not much of a programmer.
Original DS Phat obtained on day of release + flashme v7
Supercard: miniSD, Kingston 1GB, Kingston 2GB
Ralink chipset PCI NIC
#128150 - HyperHacker - Wed May 09, 2007 12:48 am
It's likely the games can disable it or have to manually check for the button and call the appropriate function to display the menu. Otherwise you'd have people pressing it while saving or dumb things like that. During cutscenes may be a glitch, or they just couldn't get it to work correctly for some reason (streaming video from the disc, doesn't like to be interrupted).
_________________
I'm a PSP hacker now, but I still <3 DS.
#128158 - Dood77 - Wed May 09, 2007 2:40 am
Yeah they all have the same result, a small flashing home icon with a red crossed circle around it.
_________________
If I use a term wrong or something then feel free to correct, I?m not much of a programmer.
Original DS Phat obtained on day of release + flashme v7
Supercard: miniSD, Kingston 1GB, Kingston 2GB
Ralink chipset PCI NIC