• 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?".
  • Forum moderator applications are now open! Click here for details.
  • Welcome to PokéCommunity! Register now and join one of the best places on the 'net to talk Pokémon and more! Community members will not see the bottom screen advertisements.
  • Want to share your adventures playing Pokémon?
    Check out our new Travel Journals forum for sharing playthroughs of ROM Hacks, Fan Games, and other Pokémon content!
  • IMPORTANT: Following a takedown request, the following hacks have been delisted from PokéCommunity:

    • Pokémon Glazed
    • Pokémon: Giratina Strikes Back
    • Pokémon Flora Sky
    • Pokémon Stranded
    The downloads and discussion threads for these hacks will no longer be accessible, and staff will be unable to return questions regarding accessing this content.

Development: Animating the FireRed titlescreen.

3,830
Posts
13
Years
  • Age 26
  • 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
  • Age 25
  • USA
  • Seen Jan 3, 2017
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
  • Age 30
  • 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