Intro Hacking

Discussion in 'NDS - ROM Hacking and Translations' started by gukid, Oct 25, 2008.

Oct 25, 2008

Intro Hacking by gukid at 12:55 AM (1,825 Views / 0 Likes) 12 replies

  1. gukid
    OP

    Newcomer gukid Advanced Member

    Joined:
    Dec 15, 2006
    Messages:
    96
    Country:
    Canada
    I was just wondering if anyone was familiar with any way we could remove the intros of games that are non skipable.

    The Japanese Castlevania (new one) has 2 screens, Konami and the Video codec one, the us one has 4: Licensed by Nintendo, Konami, Video Codec, Online ESRB Interactions warning. Not counting the warning that comes up on the DS, this is 5 timed intros you have to watch before the intro movie starts, which is getting more than annoying these days.

    I think idealy, removing the licenced by nintendo, video codec, and online esrb warnings would be best, and leave the Konami logo as skipable by pressing a button. Unfortunately, this is probably some actual hacking, so I don't know the first thing on how to do this... but I'm sure someone does! Perhaps all these intros are built roughly the same way, and a general utility could be built?

    I'm also wondering, if the files in the "overlay" have anything to do with it, because the US rom has a few bigger ".bin files" than the Japanese version, which I thought could be these screens. Maybe overlay is the collection of any full screen graphics? If this is the case, then maybe it would be even easier to identify them and remove them from the rom code.

    Any interest in this at all? Or do you guys not mind waiting an extra 10-15 seconds to play a game?
     
  2. dewback

    Member dewback GBAtemp Regular

    Joined:
    Jan 21, 2008
    Messages:
    224
    Location:
    Michigan
    Country:
    United States
    be a lot of coding for little gain also would have to be done for every game
     
  3. gukid
    OP

    Newcomer gukid Advanced Member

    Joined:
    Dec 15, 2006
    Messages:
    96
    Country:
    Canada
    I thought it would be quite a bit of hacking (or rather, investigation into the rom) to get it to work, but there's always a posibility that most roms do this loading the same way.

    Anyone have any thoughts about what the 'overlay' files could be?
     
  4. KiC

    Newcomer KiC Member

    Joined:
    Jul 22, 2007
    Messages:
    43
    Country:
    Germany
    Overlays are simply code that is loaded on demand. It can include data, but it doesn't have to. Sizes differ between versions because they can also include text and additional programming that was necessary. Code is NOT compatible between different versions.
    The intro screens are most certainly done using program code, and that differs between games.
     
  5. FAST6191

    Reporter FAST6191 Techromancer

    pip
    Joined:
    Nov 21, 2005
    Messages:
    21,705
    Country:
    United Kingdom
    Adding an intro is not so hard.

    Overlays are like DLL files, the theory goes that you will not be saving every second so it can be dropped to a file not in the main executable (actually saving is done by the ARM7 hence the ARM7 fix but go with it for a minute), likewise an obscure menu may not be needed, a minigame may not be needed......
    You can then say a given section of memory can be used for these low usage options and each of those can be placed over (hence overlay) the section as needed.
    It is a fairly archaic concept in computing but for a single application system like the DS is works well enough, PCs tend to use DLL files and similar which are loaded as necessary.

    Basically they are executable code that is used for uncommon activities, your intro may well be in there but I would not like to say.

    How to pull it off, it is an assembly hack without doubt (at best it is a cheat, at worst full blown assembly hack). There is little chance of a general utility either.
    Also be warned such screens are often used as "please wait" type things without actually saying it so be careful.

    First each logo will probably have a timer (the alternative is the section will end when code is loaded, best way to test this would be to try a slow motion patch), find the timer and you can manipulate it (this would be the "cheat method"). You could also patch this into the rom if you really wanted.

    Secondary is you can manipulate the value the timer jumps upon, forgive the pseudo code (and this would be assembly code)
    something like

    read timer
    if timer>[given value] goto next section
    else continue displaying screen.

    Your job would be to change the value it jumps on.

    Third method is to find the first screen and jump to the last instructions before the stuff you can skip appears
    In the pseudo code example instead of read timer it would be a straight goto next section. This runs the risk of missing out something that was supposed to happen during the time the intro was displayed.

    All in all the amount of effort it would take for a game that people tend to play for some time (if it was a tetris/quick puzzle sort of game then I might be more interested).
     
  6. Ferrariman

    Member Ferrariman Hip-Flop and cRap

    Joined:
    Dec 9, 2007
    Messages:
    3,357
    Location:
    Canader.
    Country:
    Canada
    Someone's impatient.
     
  7. TSPhoenix

    Member TSPhoenix GBAtemp Regular

    Joined:
    Aug 7, 2007
    Messages:
    158
    Country:
    Australia
    Well the soft reset in the new Castlevania and many other games besides takes you to the title screen, maybe there is some way of making a code that calls the soft reset function as soon as the game is loaded?
     
  8. gukid
    OP

    Newcomer gukid Advanced Member

    Joined:
    Dec 15, 2006
    Messages:
    96
    Country:
    Canada
    Thanks for all the great info Fast6191! Definitely exactly what I was looking for. More than likely I don't have the technical knowhow (yet) to accomplish this, but eventually, hopefully, I'll put something together [​IMG]

    And for the record, YES, I am impatient. Intro screens in any game are just a huge annoyance to me, especially these days. Though I remember being pretty excited about Phantasy Star Collection on the GBA. Tried the game, and it had 7 unskipable intros, that took around 20-30 seconds to get past. If you guys are okay with 4 right now, at what point will it become a problem? (Also, the 2 new ones for the us version don't load anything, they just take up time, as the Japanese version only has 2 total.)

    It also really bugs me how US playstation games have the X and O swapped. Seeing as though DS, SNES, older PSX always had the button on the far right as the confirm button, it's what I'm used to. I'd love to be able to switch this back as well. I'm pretty anal about things like this.

    TSPhoenix: What do you mean by the reset code? On my R4, the reset (ABXYRL) takes me back to the R4 main menu still. What card are you using?
     
  9. samuraibunny

    Member samuraibunny GBAtemp Regular

    Joined:
    Jul 5, 2008
    Messages:
    104
    Location:
    Anime Land
    Country:
    United States
    I believe the soft reset that TSPhoenix was talking about was the L+R+Start+Select one... In the games that have that reset, they usually lead you back to the main menu, or all the way back from the beginning to when you first load the game.
     
  10. FAST6191

    Reporter FAST6191 Techromancer

    pip
    Joined:
    Nov 21, 2005
    Messages:
    21,705
    Country:
    United Kingdom
    +1 to samuraibunny and TSPhoenix.
    If that is the case then you may be in luck (I remember an n64 game where you could do a similar trick to skip a long intro)
    Back on topic, assuming the reset code is not loaded onto there will usually be a flag to say the menu has been loaded/soft reset is available somewhere in the ram and you should be able to alter it with a cheat.

    edit: game was Forsaken 64.
     
  11. Shardnax

    Member Shardnax GBAtemp Regular

    Joined:
    Aug 23, 2008
    Messages:
    175
    Country:
    United States
    This is a little off topic (and probably ignorant), so please forgive me. Would the wi-fi connectivity test the game does after the intro cause any problems, or would this bypass it as well?
     
  12. deufeufeu

    Member deufeufeu GBAtemp Advanced Fan

    Joined:
    Nov 21, 2005
    Messages:
    880
    Country:
    Cote d'Ivoire
    With a dissassembler you could try to check for file access (ie find a string ref to the opening background, something like nin_logo.bin for example) then break into the function referencing them, then jump up until you find the intro loop and skip it.
    about overlays, one added detail : overlays are non-translatable static library as FAST pointed it out, non-translatable means that the code is expected to lie in a fix address range. But there can be some chaining : for example : main prog can load two overlays A and B corresponding to different subgames, but for each of this game it needs to display the menu and could load an overlay C from both A and B, so C must be located apart from the union of ranges of A and B. It sounds like a lot of troubles for a simple thing... Homebrews are better, take DLDI for example. Each driver is a translatable library, when you patch an homebrew with a driver you just instantiate the library at a fix place in the binary, but without a lot of effort, you could load dynamically on boot the right driver (there's no point here as loading it from a collection of drivers lying on a fat filesystem kind of kill the point of loading a driver -- you need a fat driver to load a fat driver :wtf:...)
     
  13. gukid
    OP

    Newcomer gukid Advanced Member

    Joined:
    Dec 15, 2006
    Messages:
    96
    Country:
    Canada
    Sorry this is a little late, but thank you for all that information deufeufeu. Though I'm not really at the technical level where I would have any idea on how to do that yet [​IMG]

    I have made a bit of progress however. In the realization that there is no ESRB in the uk, so... to get rid of the ESRB Warning screen, all I really have to do is get the UK rom of a game instead [​IMG] Just checked castlevania, and it cuts about 3 seconds off the wait time before I can actually start the game. Now it's just the "Licensed by Nintendo" one (which every game outside of Japanese territories has... *sigh*). Funny, because this makes importing Chrono Trigger DS quite a good idea, because it has the same english text as the US version, but it doesn't have an extra intro screen before the game starts.

    (Everyone always talks about portable games being for that "quick fix", yet no one seems to complain when you have to wait anywhere from 15 to 30 seconds before you can even begin. Well, I'm going to complain!)
     

Share This Page