• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Development: Animating the FireRed titlescreen.

3,830
Posts
14
Years
    • Age 27
    • OH
    • Seen Feb 26, 2024
    Nice. Is it possible to get objects moving left to fight ie: fireballs going left and right rather than up and down?

    I would think so, you would just have to find where their animation is controlled.

    Also, will you ever release your ASM on this?
     

    Darthatron

    巨大なトロール。
    1,152
    Posts
    18
    Years
  • It's finished. But there is still no commented version. Since I am lazy. This is complex for something to start with, though. I suggest following some tutorials first.
     

    Herpahermaderp

    I liek Mudkipz
    66
    Posts
    11
    Years
  • I think its awesome...but I think I'm blonde, I don't get ANY of the stuff you guys were talking about previously lol I must has this on my hacked rom...
     

    karatekid552

    What happens if I push it?....
    1,771
    Posts
    11
    Years
  • -I just talked to Darthatron about 2 minutes ago and got permission to release this-

    Source Code:

    Code:
    .text
    .align 2
    .thumb
    
    /*This goes at 78BF8*/
    Branch:
            ldr r1, .New_Routine
            bx r1
            pop {r3}
    
    .align 2
    .New_Routine:
            .word 0x08XXXXXX + 1

    XXXXXX is the location you put this at:

    Code:
    .text
    .align 2
    .thumb
    
    Start:
            push {r0-r3}
            ldr r3, .RAM_Address
            ldr r1, .Ani_Table
            ldrb r2, [r3, #0x1]
            lsl r2, #0x3
            add r1, r2
            ldrb r0, [r1, #0x4]
            ldrb r2, [r3]
            cmp r2, r0
            bge LoadFrame
            add r2, #0x1
            strb r2, [r3]
    
            b PressStart
    LoadFrame:
            mov r2, #0x0
            strb r2, [r3]
            ldrb r2, [r1, #0x5]
            strb r2, [r3, #0x1]
            ldr r0, [r1]
            ldr r1, .VRAM_Animated_Image
            swi #0x12
    
    PressStart:
            ldrb r2, [r3, #0x2]
            add r2, #1
            strb r2, [r3, #0x2]
            cmp r2, #0x10
            ble Finish
            mov r2, #0
            strb r2, [r3, #0x2]
    FlashOn:
            ldrb r2, [r3, #0x3]
            cmp r2, #0
            bne FlashOff
            ldr r0, .Start_Image
            ldr r1, .VRAM_Start
            swi #0x12
            mov r2, #1
            strb r2, [r3, #0x3]
            b Finish
    FlashOff:
            ldr r0, .Blank
            ldr r1, .VRAM_Start
            ldr r2, .CPUSET
            swi #0xB
            mov r2, #0
            strb r2, [r3, #0x3]
    
    Finish:
            pop {r0-r3}
    ExitRightNow:
            ldr r1, [r0]
            ldr r0, .Frame_Count
            push {r3}
            ldr r3, .Old_Routine
            bx r3
    
    .align 2
    .Ani_Table:
            .word 0x08YYYYYY
    .RAM_Address:
            .word 0x020370c0
    .VRAM_Animated_Image:
            .word 0x06004000
    .VRAM_Start:
            .word 0x06001D40
    .Frame_Count:
            .word 0x0000FFFF
    .Start_Image: /*An image of the press start, 256 color*/
            .word 0x08BAA550
    .Blank: /*An blank (completely transparent) image the same size as the press start, 256 color*/
            .word 0x08BAA688
    .Old_Routine:
            .word 0x08078C01
    .CPUSET:
            .word 0x05000300


    YYYYYY = a table somewhere with this structure: Word [Pointer to Image]; Byte [Pause Length]; Byte [Next Frame];

    For an example of how this works as is (I modified it in DC) see Liquid Crystal's titlescreen.

    The images basically replace the layer that the charizard is on in FR, so you will need to change the palette for that image to be the palette of your new animated frames. You don't need to change the original image, but you do need to change the .raw and make sure that all of your images use the same .raw. The way to do this is to insert you images all the same size and don't make tilesets. Just create your frames, all with the same dimensions, and insert them. Then create a .raw with one of them and replace the .raw for the charizard with it.

    All credits go to Dathatron.

    I will write a more thorough tutorial when I get around to it....

    Edit:
    Here is a quick mod of the routine so you don't have to worry about the flashing press start.
    Code:
    .text
    .align 2
    .thumb
    
    Start:
            push {r0-r3}
            ldr r3, .RAM_Address
            ldr r1, .Ani_Table
            ldrb r2, [r3, #0x1]
            lsl r2, #0x3
            add r1, r2
            ldrb r0, [r1, #0x4]
            ldrb r2, [r3]
            cmp r2, r0
            bge LoadFrame
            add r2, #0x1
            strb r2, [r3]
    
            b PressStart
    LoadFrame:
            mov r2, #0x0
            strb r2, [r3]
            ldrb r2, [r1, #0x5]
            strb r2, [r3, #0x1]
            ldr r0, [r1]
            ldr r1, .VRAM_Animated_Image
            swi #0x12
    
    Finish:
            pop {r0-r3}
    ExitRightNow:
            ldr r1, [r0]
            ldr r0, .Frame_Count
            push {r3}
            ldr r3, .Old_Routine
            bx r3
    
    .align 2
    .Ani_Table:
            .word 0x08YYYYYY
    .RAM_Address:
            .word 0x020370c0
    .VRAM_Animated_Image:
            .word 0x06004000
    .Frame_Count:
            .word 0x0000FFFF
    .Old_Routine:
            .word 0x08078C01
    .CPUSET:
            .word 0x05000300
     
    Last edited:
    1
    Posts
    9
    Years
    • Seen May 23, 2014
    Can anyone tell me what i have to do that i can create a animated titlescreen in Fire red ?
    Or can you give me a tutorial please i dont unsterstand this thread!
     

    Shiny Quagsire

    I'm Still Alive, Elsewhere
    697
    Posts
    14
    Years
  • Can anyone tell me what i have to do that i can create a animated titlescreen in Fire red ?
    Or can you give me a tutorial please i dont unsterstand this thread!

    9 times out of 10 if you ask for a tutorial or a patch in Research and Development you aren't going to get one. Just so ya know. ;)

    On a slightly different note if you want to be able to learn how to do things like this I'd suggest first learning how to use a hex editor. Find tutorials that require you to use one and follow along. Keep trying to do the hack until you finally get it right. If you can't then find something on how to script, and learn that, and then go back and try to learn how to hex edit. Then move on to just compiling ASM. You can use the routine in Hackmew's Knowledge and try inserting and using it. Find ASM hacks to apply. Not everyone can understand routines like this or even insert them, but there really isn't any easy way to do this.
     

    Lance32497

    LanceKoijer of Pokemon_Addicts
    792
    Posts
    9
    Years
  • Ahhhm... sorry for being noob in my question, but I dont really get it.....
    For anyone who's interested, at '0x078c1c'
    there is a 32-bit number (the default value is
    '0x00000a8b') which dictates the number of
    frames for which the titlescreen is displayed
    before resetting. The GBA operates at roughly
    60 frames per second and '0xa8b' divided by
    60 is 45 so the unedited titlescreen is
    displayed for 45 seconds. You can change that
    number (remember to reverse it) to lengthen
    or shorten the amount of time it takes for the
    titlescreen to reset.
    This is for Fire Red, by the way.

    How can I make the titlescreen moves?
     
    Back
    Top