Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //------------------------------
- // Function 022E5D50
- //------------------------------
- 022E5D50 E92D4030 push r4,r5,r14
- 022E5D54 E24DD054 sub r13,r13,54h
- 022E5D58 E1A05001 mov r5,r1
- 022E5D5C E1A04000 mov r4,r0
- 022E5D60 E59F118C ldr r1,=2319908h
- 022E5D64 E1A02005 mov r2,r5
- 022E5D68 E3A00002 mov r0,2h
- 022E5D6C EBF49933 bl 200C240h
- 022E5D70 EBF488FC bl 2008168h
- 022E5D74 E28D000C add r0,r13,0Ch
- 022E5D78 EBF48921 bl 2008204h
- 022E5D7C E28D000C add r0,r13,0Ch
- 022E5D80 E1A01005 mov r1,r5
- 022E5D84 EBF48921 bl 2008210h
- 022E5D88 E28D000C add r0,r13,0Ch
- 022E5D8C E28D1000 add r1,r13,0h
- 022E5D90 E3A0200C mov r2,0Ch
- 022E5D94 EBF4892E bl 2008254h //This loads the SSB file's header.
- //-- SSB Header is read here
- 022E5D98 E1DD30B4 ldrh r3,[r13,4h] //R3 = SSBStrContTableOffset
- 022E5D9C E1DD20B6 ldrh r2,[r13,6h] //R2 = SSBConstTblSize.
- 022E5DA0 E59F0150 ldr r0,=2324F74h //Static location
- 022E5DA4 E28D1000 add r1,r13,0h //R1 = PtrSSBHeaderBuff
- 022E5DA8 E0833002 add r3,r3,r2 //R3 = SSBStrContTableOffset + SSBConstTblSize (String table offset?)
- 022E5DAC E1D020D1 ldrsb r2,[r0,1h] //R2 = MysteryHeaderOffsetInt16 (0) (The same position is written to on line 022E4A5C )
- 022E5DB0 E5940000 ldr r0,[r4] //R0 = SSBDestBufferPtr (Read from 0x2324C84. A pointer to where the script's content will be written, 0x2120380. (SSBDestBufferPtr))
- 022E5DB4 E3500000 cmp r0,0h //Check if SSBDestBufferPtr is null (result handled at line 022E5DCC)
- 022E5DB8 E2820004 add r0,r2,4h //R0 = MysteryHeaderOffsetInt16 + 4
- 022E5DBC E1A00080 mov r0,r0,lsl 1h //R0 = (MysteryHeaderOffsetInt16 + 4) * 2
- 022E5DC0 E19100B0 ldrh r0,[r1,r0] //R0 = SizeStringTable?
- 022E5DC4 E0830000 add r0,r3,r0 //R0 = OffsetStringTable + SizeStringTable
- 022E5DC8 E1A00080 mov r0,r0,lsl 1h //R0 = (OffsetStringTable + SizeStringTable) * 2
- if( SSBDestBufferPtr != null )
- 022E5DCC 1A000003 bne 22E5DE0h ///GOTO LBL1
- 022E5DD0 E3A01001 mov r1,1h
- 022E5DD4 E5840004 str r0,[r4,4h]
- 022E5DD8 EBF46CE4 bl 2001170h ///EXEC 02001170
- 022E5DDC E5840000 str r0,[r4]
- ///LBL1
- 022E5DE0 E1DD20B4 ldrh r2,[r13,4h] //R2 = SSBStrContTableOffset
- 022E5DE4 E5941000 ldr r1,[r4] //R1 = SSBDestBufferPtr
- 022E5DE8 E28D000C add r0,r13,0Ch //R0 = PtrSSBHeaderBuff + 12 (Points past the header)
- 022E5DEC E1A02082 mov r2,r2,lsl 1h //R2 = SSBStrContTableOffset * 2
- 022E5DF0 EBF48917 bl 2008254h ///EXEC 02008254 (R0 = (PtrSSBHeaderBuff + 12), R1 = SSBDestBufferPtr, R2 = (SSBStrContTableOffset *2), R3 = OffsetStringTable )
- 022E5DF4 E1DD00B0 ldrh r0,[r13] //R0 = SSBNbConsts
- 022E5DF8 E3500000 cmp r0,0h
- if( SSBNbConsts == 0 )
- 022E5DFC 0A000008 beq 22E5E24h ///GOTO LBL2
- 022E5E00 E1DD10B4 ldrh r1,[r13,4h] //R1 = SSBStrContTableOffset
- 022E5E04 E1DD00B2 ldrh r0,[r13,2h] //R0 = SSBNbStrings
- 022E5E08 E1DD20B6 ldrh r2,[r13,6h] //R2 = SSBConstTblSize
- 022E5E0C E5943000 ldr r3,[r4] //R3 = SSBDestBufferPtr
- 022E5E10 E0811000 add r1,r1,r0 //R1 = SSBStrContTableOffset + SSBNbStrings
- 022E5E14 E28D000C add r0,r13,0Ch //R0 = (PtrSSBHeaderBuff + 12)
- 022E5E18 E0831081 add r1,r3,r1,lsl 1h //R1 = SSBDestBufferPtr + ( (SSBStrContTableOffset + SSBNbStrings) * 2)
- 022E5E1C E1A02082 mov r2,r2,lsl 1h //R2 = SSBConstTblSize * 2
- 022E5E20 EBF4890B bl 2008254h ///EXEC 02008254 (R0 = (PtrSSBHeaderBuff + 12), R1 = SSBDestBufferPtr + ( (SSBStrContTableOffset + SSBNbStrings) * 2), R2 = (SSBConstTblSize * 2), R3 = SSBDestBufferPtr )
- ///LBL2
- 022E5E24 E1DD00B2 ldrh r0,[r13,2h] //R0 = SSBNbStrings
- 022E5E28 E3500000 cmp r0,0h
- if( SSBNbStrings == 0 )
- 022E5E2C 0A00002A beq 22E5EDCh ///GOTO LBL3 022E5EDC
- 022E5E30 E1DD20B4 ldrh r2,[r13,4h] //R2 = SSBStrContTableOffset
- 022E5E34 E1DD10B6 ldrh r1,[r13,6h] //R1 = SSBConstTblSize
- 022E5E38 E59F00B8 ldr r0,=2324F74h //
- 022E5E3C E3A03000 mov r3,0h //R3 = 0
- 022E5E40 E0821001 add r1,r2,r1 //R1 = SSBConstTblSize + SSBStrContTableOffset
- 022E5E44 E2812006 add r2,r1,6h //R2 = (SSBConstTblSize + SSBStrContTableOffset) + 6
- 022E5E48 E1D0C0D1 ldrsb r12,[r0,1h] //R12 = **** MysteryHeaderOffsetInt16 **** (0) (The same position is written to on line 022E4A5C )
- 022E5E4C E28D1000 add r1,r13,0h //R1 = PtrSSBHeaderBuff + 0
- 022E5E50 EA000003 b 22E5E64h ///GOTO LBL4 022E5E64
- ///LBL5
- 022E5E54 E0810083 add r0,r1,r3,lsl 1h
- 022E5E58 E1D000B8 ldrh r0,[r0,8h]
- 022E5E5C E2833001 add r3,r3,1h
- 022E5E60 E0822000 add r2,r2,r0
- ///LBL4
- 022E5E64 E153000C cmp r3,r12
- if( R3 < MysteryHeaderOffsetInt16 )
- 022E5E68 BAFFFFF9 blt 22E5E54h ///GOTO LBL5 022E5E54
- 022E5E6C E1A01082 mov r1,r2,lsl 1h //R1 = ((SSBConstTblSize + SSBStrContTableOffset) + 6 ) * 2
- 022E5E70 E28D000C add r0,r13,0Ch //R0 = PtrSSBHeaderBuff + 12
- 022E5E74 E3A02000 mov r2,0h //R2 = 0
- 022E5E78 EBF4890A bl 20082A8h ///EXEC 020082A8 (Wrap call to SSBFileConstStrTblROMOffset)
- 022E5E7C E1DD20B2 ldrh r2,[r13,2h] //R2 = SSBNbStrings
- 022E5E80 E1DD10B4 ldrh r1,[r13,4h] //R1 = SSBStrContTableOffset
- 022E5E84 E5943000 ldr r3,[r4] //R3 = SSBDestBufferPtr
- 022E5E88 E28D000C add r0,r13,0Ch //R0 = PtrSSBHeaderBuff + 12
- 022E5E8C E0831081 add r1,r3,r1,lsl 1h //R1 = SSBDestBufferPtr + (SSBStrContTableOffset * 2)
- 022E5E90 E1A02082 mov r2,r2,lsl 1h //R2 = SSBNbStrings * 2
- 022E5E94 EBF488EE bl 2008254h ///EXEC 02008254
- 022E5E98 E59F0058 ldr r0,=2324F74h
- 022E5E9C E28D1000 add r1,r13,0h //R1 = PtrSSBHeaderBuff + 0
- 022E5EA0 E1D000D1 ldrsb r0,[r0,1h] //R0 = MysteryHeaderOffsetInt16 (0) (The same position is written to on line 022E4A5C )
- 022E5EA4 E1DDC0B2 ldrh r12,[r13,2h] //R12 = SSBNbStrings
- 022E5EA8 E1DD20B4 ldrh r2,[r13,4h] //R2 = SSBStrContTableOffset
- 022E5EAC E2800004 add r0,r0,4h //R0 = MysteryHeaderOffsetInt16 + 4
- 022E5EB0 E1A00080 mov r0,r0,lsl 1h //R0 = ( MysteryHeaderOffsetInt16 + 4 ) * 2
- 022E5EB4 E19100B0 ldrh r0,[r1,r0] //R0 =
- 022E5EB8 E08C1002 add r1,r12,r2 //R1 = SSBNbStrings + SSBStrContTableOffset
- 022E5EBC E1DD30B6 ldrh r3,[r13,6h] //R3 = SSBConstTblSize
- 022E5EC0 E040200C sub r2,r0,r12 //R2 = R0 - SSBNbStrings
- 022E5EC4 E5944000 ldr r4,[r4] //R4 = SSBDestBufferPtr
- 022E5EC8 E0831001 add r1,r3,r1 //R1 = SSBConstTblSize + (SSBNbStrings + SSBStrContTableOffset)
- 022E5ECC E28D000C add r0,r13,0Ch //R0 = PtrSSBHeaderBuff + 12
- 022E5ED0 E0841081 add r1,r4,r1,lsl 1h //R1 = SSBDestBufferPtr + ( ( SSBConstTblSize + (SSBNbStrings + SSBStrContTableOffset) ) * 2)
- 022E5ED4 E1A02082 mov r2,r2,lsl 1h //R2 = R2 * 2
- 022E5ED8 EBF488DD bl 2008254h ///EXEC 02008254
- ///LBL3
- 022E5EDC E28D000C add r0,r13,0Ch //R0 = PtrSSBHeaderBuff + 12
- 022E5EE0 EBF488F7 bl 20082C4h ///EXEC 020082C4
- 022E5EE4 EBF488AA bl 2008194h ///EXEC 02008194
- 022E5EE8 E3A00001 mov r0,1h //R0 = 1
- 022E5EEC E28DD054 add r13,r13,54h //R13 = PtrSSBHeaderBuff + 0x54
- 022E5EF0 E8BD8030 pop r4,r5,r15 //
Advertisement
Add Comment
Please, Sign In to add comment