mirror of
https://github.com/pret/pmd-sky.git
synced 2026-10-01 06:37:50 -05:00
Decomped several string functions
This commit is contained in:
@@ -1,4 +1,130 @@
|
||||
#pragma once
|
||||
.public AUDIO_COMMANDS_BUFFER
|
||||
.public ArrayCopy32
|
||||
.public ArrayFill32
|
||||
.public BagHasExclusiveItemTypeForMonster
|
||||
.public CopyAndInterleave
|
||||
.public CopyAndInterleave0
|
||||
.public CopyBitsFrom
|
||||
.public CopyBitsTo
|
||||
.public CopyStringFromId
|
||||
.public DUNGEON_MOVE_TABLES
|
||||
.public Debug_FatalError
|
||||
.public Debug_GetDebugFlag
|
||||
.public Debug_Print
|
||||
.public Debug_Print0
|
||||
.public DirectoryFileMngr_GetDirectoryFileSize
|
||||
.public DirectoryFileMngr_LoadDirectoryFile
|
||||
.public DirectoryFileMngr_OpenDirectoryFile
|
||||
.public DseBgm_IsPlaying
|
||||
.public DseBgm_Load
|
||||
.public DseBgm_SetFades
|
||||
.public DseBgm_SetSignalCallback
|
||||
.public DseBgm_Stop
|
||||
.public DseBgm_Unload
|
||||
.public DseDriver_ConfigureHeap
|
||||
.public DseDriver_Init
|
||||
.public DseDriver_LoadDefaultSettings
|
||||
.public DseSe_GetUsedBankIDs
|
||||
.public DseSe_HasPlayingInstances
|
||||
.public DseSe_Load
|
||||
.public DseSe_Play
|
||||
.public DseSe_Stop
|
||||
.public DseSe_StopAll
|
||||
.public DseSe_Unload
|
||||
.public DseSequence_GetParameter
|
||||
.public DseSwd_IsBankLoading
|
||||
.public DseSwd_LoadBank
|
||||
.public DseSwd_LoadMainBank
|
||||
.public DseSwd_LoadWaves
|
||||
.public DseSwd_Unload
|
||||
.public DungeonGoesUp
|
||||
.public DungeonSwapIdxToId
|
||||
.public ENTITIES
|
||||
.public EnqueueRender3dTexture
|
||||
.public FileClose
|
||||
.public FileGetSize
|
||||
.public FileRom_HandleOpen
|
||||
.public FileRom_HandleRead
|
||||
.public FileRom_InitDataTransfer
|
||||
.public FileRom_StopDataTransfer
|
||||
.public FileRom_Veneer_FileInit
|
||||
.public G3i_LookAt_
|
||||
.public G3i_OrthoW_
|
||||
.public GXS_BeginLoadBGExtPltt
|
||||
.public GXS_BeginLoadOBJExtPltt
|
||||
.public GXS_EndLoadBGExtPltt
|
||||
.public GXS_EndLoadOBJExtPltt
|
||||
.public GX_BeginLoadBGExtPltt
|
||||
.public GX_BeginLoadOBJExtPltt
|
||||
.public GX_BeginLoadTex
|
||||
.public GX_BeginLoadTexPltt
|
||||
.public GX_EndLoadBGExtPltt
|
||||
.public GX_EndLoadOBJExtPltt
|
||||
.public GX_EndLoadTex
|
||||
.public GX_EndLoadTexPltt
|
||||
.public GX_LoadTex
|
||||
.public GX_LoadTexPltt
|
||||
.public GetAbility
|
||||
.public GetAbilityString
|
||||
.public GetActiveRosterIndex
|
||||
.public GetActiveTeamMember
|
||||
.public GetActorMatchingStorageId
|
||||
.public GetCurrentBagCapacity
|
||||
.public GetDsFirmwareUserSettingsVeneer
|
||||
.public GetExecuteSpecialEpisodeType
|
||||
.public GetGameMode
|
||||
.public GetInfoMoveGround
|
||||
.public GetIqSkillStringId
|
||||
.public GetItemMoveId16
|
||||
.public GetItemNameFormatted
|
||||
.public GetMainTeamName
|
||||
.public GetMonsterGender
|
||||
.public GetMonsterGenderVeneer
|
||||
.public GetMoveName
|
||||
.public GetNameString
|
||||
.public GetNbFloors
|
||||
.public GetNbFloorsPlusOne
|
||||
.public GetPerformanceFlagWithChecks
|
||||
.public GetStringFromFileVeneer
|
||||
.public GetTeamMember
|
||||
.public GetTypeStringId
|
||||
.public IqSkillFlagTest
|
||||
.public LANGUAGE_INFO_DATA
|
||||
.public LoadFileFromRom
|
||||
.public LoadScriptVariableValue
|
||||
.public LoadScriptVariableValueAtIndex
|
||||
.public LoadStringFile
|
||||
.public MOVE_ACCURACY_STARS_TABLE
|
||||
.public MOVE_POWER_STARS_TABLE
|
||||
.public MemAlloc
|
||||
.public MemArenaAlloc
|
||||
.public MemFree
|
||||
.public MemLocateSet
|
||||
.public MemLocateUnset
|
||||
.public MemZero
|
||||
.public MemZero32
|
||||
.public Memcpy32
|
||||
.public MultiplyByFixedPoint
|
||||
.public NewRender3dQuadrilateral
|
||||
.public NewRender3dRectangle
|
||||
.public NewRender3dTexture
|
||||
.public NewRender3dTiling
|
||||
.public PUNCH_MOVE_LIST
|
||||
.public PointsToZero
|
||||
.public RECOIL_MOVE_LIST
|
||||
.public RENDER_3D
|
||||
.public RENDER_3D_FUNCTIONS_64
|
||||
.public Rand16Bit
|
||||
.public Render3dProcessQueue
|
||||
.public ResumeBgm
|
||||
.public Rgb8ToRgb5
|
||||
.public StringFromId
|
||||
.public StrncpySimpleNoPadSafe
|
||||
.public TEAM_MEMBER_TABLE_PTR
|
||||
.public UnloadFile
|
||||
.public WAN_TABLE
|
||||
.public ZInit8
|
||||
.public _02098EA8
|
||||
.public _02098EE0
|
||||
.public _02098F60
|
||||
@@ -191,13 +317,9 @@
|
||||
.public _02099E20
|
||||
.public _02099E40
|
||||
.public _02099E64_EU
|
||||
.public _0209A044
|
||||
.public _0209A046
|
||||
.public _0209A230_EU
|
||||
.public _0209A2D4_EU
|
||||
.public _0209A2F4_EU
|
||||
.public _0209A3B4
|
||||
.public _0209A3B6
|
||||
.public _020AF6E8
|
||||
.public _020AF6F0
|
||||
.public _020AF6F8
|
||||
@@ -238,7 +360,6 @@
|
||||
.public _020B05C0_EU
|
||||
.public _020B05D4_EU
|
||||
.public _020B05D8_EU
|
||||
.public _020B112C_JP
|
||||
.public _022A4BE8
|
||||
.public _022A4BEC
|
||||
.public _022A4C00
|
||||
@@ -267,134 +388,13 @@
|
||||
.public _022A5970
|
||||
.public _s32_div_f
|
||||
.public _u32_div_f
|
||||
.public ArrayCopy32
|
||||
.public ArrayFill32
|
||||
.public AUDIO_COMMANDS_BUFFER
|
||||
.public BagHasExclusiveItemTypeForMonster
|
||||
.public CopyAndInterleave
|
||||
.public CopyAndInterleave0
|
||||
.public CopyBitsFrom
|
||||
.public CopyBitsTo
|
||||
.public CopyStringFromId
|
||||
.public Debug_FatalError
|
||||
.public Debug_GetDebugFlag
|
||||
.public Debug_Print
|
||||
.public Debug_Print0
|
||||
.public DirectoryFileMngr_GetDirectoryFileSize
|
||||
.public DirectoryFileMngr_LoadDirectoryFile
|
||||
.public DirectoryFileMngr_OpenDirectoryFile
|
||||
.public DseBgm_IsPlaying
|
||||
.public DseBgm_Load
|
||||
.public DseBgm_SetFades
|
||||
.public DseBgm_SetSignalCallback
|
||||
.public DseBgm_Stop
|
||||
.public DseBgm_Unload
|
||||
.public DseDriver_ConfigureHeap
|
||||
.public DseDriver_Init
|
||||
.public DseDriver_LoadDefaultSettings
|
||||
.public DseSe_GetUsedBankIDs
|
||||
.public DseSe_HasPlayingInstances
|
||||
.public DseSe_Load
|
||||
.public DseSe_Play
|
||||
.public DseSe_Stop
|
||||
.public DseSe_StopAll
|
||||
.public DseSe_Unload
|
||||
.public DseSequence_GetParameter
|
||||
.public DseSwd_IsBankLoading
|
||||
.public DseSwd_LoadBank
|
||||
.public DseSwd_LoadMainBank
|
||||
.public DseSwd_LoadWaves
|
||||
.public DseSwd_Unload
|
||||
.public DUNGEON_MOVE_TABLES
|
||||
.public DungeonGoesUp
|
||||
.public DungeonSwapIdxToId
|
||||
.public EnqueueRender3dTexture
|
||||
.public ENTITIES
|
||||
.public FileClose
|
||||
.public FileGetSize
|
||||
.public FileRom_HandleOpen
|
||||
.public FileRom_HandleRead
|
||||
.public FileRom_InitDataTransfer
|
||||
.public FileRom_StopDataTransfer
|
||||
.public FileRom_Veneer_FileInit
|
||||
.public G3i_LookAt_
|
||||
.public G3i_OrthoW_
|
||||
.public GetAbility
|
||||
.public GetAbilityString
|
||||
.public GetActiveRosterIndex
|
||||
.public GetActiveTeamMember
|
||||
.public GetActorMatchingStorageId
|
||||
.public GetCurrentBagCapacity
|
||||
.public GetDsFirmwareUserSettingsVeneer
|
||||
.public GetExecuteSpecialEpisodeType
|
||||
.public GetGameMode
|
||||
.public GetInfoMoveGround
|
||||
.public GetIqSkillStringId
|
||||
.public GetItemMoveId16
|
||||
.public GetItemNameFormatted
|
||||
.public GetMainTeamName
|
||||
.public GetMonsterGender
|
||||
.public GetMonsterGenderVeneer
|
||||
.public GetMoveName
|
||||
.public GetNameString
|
||||
.public GetNbFloors
|
||||
.public GetNbFloorsPlusOne
|
||||
.public GetPerformanceFlagWithChecks
|
||||
.public GetStringFromFileVeneer
|
||||
.public GetTeamMember
|
||||
.public GetTypeStringId
|
||||
.public GX_BeginLoadBGExtPltt
|
||||
.public GX_BeginLoadOBJExtPltt
|
||||
.public GX_BeginLoadTex
|
||||
.public GX_BeginLoadTexPltt
|
||||
.public GX_EndLoadBGExtPltt
|
||||
.public GX_EndLoadOBJExtPltt
|
||||
.public GX_EndLoadTex
|
||||
.public GX_EndLoadTexPltt
|
||||
.public GX_LoadTex
|
||||
.public GX_LoadTexPltt
|
||||
.public GXS_BeginLoadBGExtPltt
|
||||
.public GXS_BeginLoadOBJExtPltt
|
||||
.public GXS_EndLoadBGExtPltt
|
||||
.public GXS_EndLoadOBJExtPltt
|
||||
.public IqSkillFlagTest
|
||||
.public LANGUAGE_INFO_DATA
|
||||
.public LoadFileFromRom
|
||||
.public LoadScriptVariableValue
|
||||
.public LoadScriptVariableValueAtIndex
|
||||
.public LoadStringFile
|
||||
.public MemAlloc
|
||||
.public MemArenaAlloc
|
||||
.public Memcpy32
|
||||
.public MemFree
|
||||
.public MemLocateSet
|
||||
.public MemLocateUnset
|
||||
.public memset
|
||||
.public MemZero
|
||||
.public MemZero32
|
||||
.public MOVE_ACCURACY_STARS_TABLE
|
||||
.public MOVE_POWER_STARS_TABLE
|
||||
.public MultiplyByFixedPoint
|
||||
.public NewRender3dQuadrilateral
|
||||
.public NewRender3dRectangle
|
||||
.public NewRender3dTexture
|
||||
.public NewRender3dTiling
|
||||
.public ov10_022BDADC
|
||||
.public ov10_022C2528
|
||||
.public PointsToZero
|
||||
.public PUNCH_MOVE_LIST
|
||||
.public Rand16Bit
|
||||
.public RECOIL_MOVE_LIST
|
||||
.public Render3dProcessQueue
|
||||
.public RENDER_3D
|
||||
.public RENDER_3D_FUNCTIONS_64
|
||||
.public ResumeBgm
|
||||
.public Rgb8ToRgb5
|
||||
.public sprintf
|
||||
.public strcat
|
||||
.public strcmp
|
||||
.public strcpy
|
||||
.public StringFromId
|
||||
.public strlen
|
||||
.public strncmp
|
||||
.public strstr
|
||||
@@ -443,8 +443,8 @@
|
||||
.public sub_0200B6F0
|
||||
.public sub_0200B768
|
||||
.public sub_0200D310
|
||||
.public sub_02025480
|
||||
.public sub_020257FC
|
||||
.public sub_02025C7C
|
||||
.public sub_0204BBB0
|
||||
.public sub_0204E530
|
||||
.public sub_0204F6F8
|
||||
@@ -474,8 +474,4 @@
|
||||
.public sub_0207C9C4
|
||||
.public sub_0207C9E4
|
||||
.public sub_0207CC10
|
||||
.public TEAM_MEMBER_TABLE_PTR
|
||||
.public UnloadFile
|
||||
.public vsprintf
|
||||
.public WAN_TABLE
|
||||
.public ZInit8
|
||||
|
||||
8
asm/include/main_020251F0.inc
Normal file
8
asm/include/main_020251F0.inc
Normal file
@@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
.public _0209A044
|
||||
.public _0209A046
|
||||
.public _0209A3B4
|
||||
.public _0209A3B6
|
||||
.public _020B112C_JP
|
||||
.public sub_0202065C
|
||||
.public sub_02025C7C
|
||||
@@ -22314,842 +22314,3 @@ _020250D8: .word _022A5969
|
||||
_020250DC: .word _022A596A
|
||||
_020250E0: .word _022A5970
|
||||
arm_func_end sub_0202507C
|
||||
|
||||
arm_func_start SetQuestionMarks
|
||||
SetQuestionMarks: ; 0x020250E4
|
||||
#ifdef JAPAN
|
||||
mov r1, #0xf
|
||||
#else
|
||||
mov r1, #0x3f
|
||||
#endif
|
||||
strb r1, [r0]
|
||||
strb r1, [r0, #1]
|
||||
strb r1, [r0, #2]
|
||||
mov r1, #0
|
||||
strb r1, [r0, #3]
|
||||
bx lr
|
||||
arm_func_end SetQuestionMarks
|
||||
|
||||
arm_func_start StrcpySimple
|
||||
StrcpySimple:
|
||||
ldrb r2, [r1], #1
|
||||
mov r3, r0
|
||||
strb r2, [r0], #1
|
||||
ldrb r2, [r3]
|
||||
cmp r2, #0
|
||||
bne StrcpySimple
|
||||
bx lr
|
||||
arm_func_end StrcpySimple
|
||||
|
||||
arm_func_start StrncpySimple
|
||||
StrncpySimple: ; 0x0202511C
|
||||
stmdb sp!, {r3, lr}
|
||||
mov ip, #0
|
||||
b _02025164
|
||||
_02025128:
|
||||
ldrb r3, [r1], #1
|
||||
mov lr, r0
|
||||
strb r3, [r0], #1
|
||||
ldrb r3, [lr]
|
||||
cmp r3, #0
|
||||
bne _02025160
|
||||
add ip, ip, #1
|
||||
mov r1, #0
|
||||
b _02025154
|
||||
_0202514C:
|
||||
strb r1, [r0], #1
|
||||
add ip, ip, #1
|
||||
_02025154:
|
||||
cmp ip, r2
|
||||
blt _0202514C
|
||||
ldmia sp!, {r3, pc}
|
||||
_02025160:
|
||||
add ip, ip, #1
|
||||
_02025164:
|
||||
cmp ip, r2
|
||||
blt _02025128
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end StrncpySimple
|
||||
|
||||
arm_func_start StrncpySimpleNoPad
|
||||
StrncpySimpleNoPad: ; 0x02025170
|
||||
stmdb sp!, {r3, lr}
|
||||
mov ip, #0
|
||||
b _02025198
|
||||
_0202517C:
|
||||
ldrb r3, [r1], #1
|
||||
mov lr, r0
|
||||
strb r3, [r0], #1
|
||||
ldrb r3, [lr]
|
||||
cmp r3, #0
|
||||
ldmeqia sp!, {r3, pc}
|
||||
add ip, ip, #1
|
||||
_02025198:
|
||||
cmp ip, r2
|
||||
blt _0202517C
|
||||
mov r1, #0
|
||||
strb r1, [r0]
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end StrncpySimpleNoPad
|
||||
|
||||
arm_func_start StrncmpSimple
|
||||
StrncmpSimple: ; 0x020251AC
|
||||
stmdb sp!, {r3, lr}
|
||||
mov lr, #0
|
||||
_020251B4:
|
||||
ldrb ip, [r0, lr]
|
||||
ldrb r3, [r1, lr]
|
||||
add lr, lr, #1
|
||||
cmp ip, r3
|
||||
beq _020251D4
|
||||
mvnlo r0, #0
|
||||
movhs r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
_020251D4:
|
||||
cmp ip, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, pc}
|
||||
cmp lr, r2
|
||||
blt _020251B4
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end StrncmpSimple
|
||||
|
||||
arm_func_start sub_020251F0
|
||||
sub_020251F0: ; 0x020251F0
|
||||
#ifdef JAPAN
|
||||
ldr r1, _02025264 ; =_020B112C_JP
|
||||
ldr r1, [r1, #4]
|
||||
add r2, r1, r0, lsl #1
|
||||
ldrb r1, [r1, r0, lsl #1]
|
||||
ldrb r0, [r2, #1]
|
||||
add r0, r0, r1, lsl #8
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02025264: .word _020B112C_JP
|
||||
#else
|
||||
bx lr
|
||||
#endif
|
||||
arm_func_end sub_020251F0
|
||||
|
||||
arm_func_start StrncpySimpleNoPadSafe
|
||||
StrncpySimpleNoPadSafe: ; 0x020251F4
|
||||
#ifdef JAPAN
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
b _02025294
|
||||
_0202527C:
|
||||
ldrb r0, [r5], #1
|
||||
bl sub_020251F0
|
||||
mov r1, r0, asr #8
|
||||
strb r1, [r6]
|
||||
strb r0, [r6, #1]
|
||||
add r6, r6, #2
|
||||
_02025294:
|
||||
cmp r4, #0
|
||||
sub r4, r4, #1
|
||||
ble _020252AC
|
||||
ldrb r0, [r5]
|
||||
cmp r0, #0
|
||||
bne _0202527C
|
||||
_020252AC:
|
||||
mov r0, #0
|
||||
strb r0, [r6]
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
#else
|
||||
mov ip, #0x20
|
||||
b _0202520C
|
||||
_020251FC:
|
||||
ldrb r3, [r1], #1
|
||||
cmp r3, #0x100
|
||||
strlob r3, [r0], #1
|
||||
strhsb ip, [r0], #1
|
||||
_0202520C:
|
||||
cmp r2, #0
|
||||
sub r2, r2, #1
|
||||
ble _02025224
|
||||
ldrb r3, [r1]
|
||||
cmp r3, #0
|
||||
bne _020251FC
|
||||
_02025224:
|
||||
mov r1, #0
|
||||
strb r1, [r0]
|
||||
bx lr
|
||||
#endif
|
||||
arm_func_end StrncpySimpleNoPadSafe
|
||||
|
||||
arm_func_start StrcpyName
|
||||
StrcpyName: ; 0x02025230
|
||||
#ifdef JAPAN
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r3, _02025300 ; =_020B112C_JP
|
||||
b _020252D8
|
||||
_020252C4:
|
||||
ldrb ip, [r1], #1
|
||||
ldr lr, [r3]
|
||||
mov ip, ip, lsl #1
|
||||
ldrh ip, [lr, ip]
|
||||
strh ip, [r0], #2
|
||||
_020252D8:
|
||||
cmp r2, #0
|
||||
sub r2, r2, #1
|
||||
ble _020252F0
|
||||
ldrb ip, [r1]
|
||||
cmp ip, #0
|
||||
bne _020252C4
|
||||
_020252F0:
|
||||
cmp r2, #0
|
||||
movgt r1, #0
|
||||
strgth r1, [r0]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02025300: .word _020B112C_JP
|
||||
#else
|
||||
stmdb sp!, {r4, lr}
|
||||
mov ip, #0
|
||||
mov r3, ip
|
||||
b _020252FC
|
||||
_02025240:
|
||||
cmp r2, #0x7e
|
||||
bne _020252F8
|
||||
ldrb lr, [r1]
|
||||
ldrb r4, [r1, #1]
|
||||
add r1, r1, #2
|
||||
cmp lr, #0x30
|
||||
blo _0202526C
|
||||
cmp lr, #0x39
|
||||
subls r2, lr, #0x30
|
||||
andls lr, r2, #0xff
|
||||
bls _020252A0
|
||||
_0202526C:
|
||||
cmp lr, #0x61
|
||||
blo _02025284
|
||||
cmp lr, #0x66
|
||||
subls r2, lr, #0x6b
|
||||
andls lr, r2, #0xff
|
||||
bls _020252A0
|
||||
_02025284:
|
||||
cmp lr, #0x41
|
||||
blo _0202529C
|
||||
cmp lr, #0x46
|
||||
subls r2, lr, #0x4b
|
||||
andls lr, r2, #0xff
|
||||
bls _020252A0
|
||||
_0202529C:
|
||||
mov lr, ip
|
||||
_020252A0:
|
||||
cmp r4, #0x30
|
||||
blo _020252B8
|
||||
cmp r4, #0x39
|
||||
subls r2, r4, #0x30
|
||||
andls r4, r2, #0xff
|
||||
bls _020252EC
|
||||
_020252B8:
|
||||
cmp r4, #0x61
|
||||
blo _020252D0
|
||||
cmp r4, #0x66
|
||||
subls r2, r4, #0x6b
|
||||
andls r4, r2, #0xff
|
||||
bls _020252EC
|
||||
_020252D0:
|
||||
cmp r4, #0x41
|
||||
blo _020252E8
|
||||
cmp r4, #0x46
|
||||
subls r2, r4, #0x4b
|
||||
andls r4, r2, #0xff
|
||||
bls _020252EC
|
||||
_020252E8:
|
||||
mov r4, r3
|
||||
_020252EC:
|
||||
orr r2, r4, lr, lsl #4
|
||||
strb r2, [r0], #1
|
||||
b _020252FC
|
||||
_020252F8:
|
||||
strb r2, [r0], #1
|
||||
_020252FC:
|
||||
ldrb r2, [r1], #1
|
||||
cmp r2, #0
|
||||
bne _02025240
|
||||
mov r1, #0
|
||||
strb r1, [r0]
|
||||
ldmia sp!, {r4, pc}
|
||||
#endif
|
||||
arm_func_end StrcpyName
|
||||
|
||||
#ifdef JAPAN
|
||||
arm_func_start sub_02025304_JP
|
||||
sub_02025304_JP: ; 0x02025304
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov lr, #0
|
||||
ldr r2, _02025368 ; =_020B112C_JP
|
||||
b _02025350
|
||||
_02025314:
|
||||
mov r5, lr
|
||||
ldr r4, [r2, #4]
|
||||
b _0202533C
|
||||
_02025320:
|
||||
cmp r6, r3
|
||||
ldreqb ip, [r1, #1]
|
||||
ldreqb r3, [r4, #1]
|
||||
cmpeq ip, r3
|
||||
beq _02025348
|
||||
add r4, r4, #2
|
||||
add r5, r5, #1
|
||||
_0202533C:
|
||||
ldrb r3, [r4]
|
||||
cmp r3, #0
|
||||
bne _02025320
|
||||
_02025348:
|
||||
strb r5, [r0], #1
|
||||
add r1, r1, #2
|
||||
_02025350:
|
||||
ldrb r6, [r1]
|
||||
cmp r6, #0
|
||||
bne _02025314
|
||||
mov r1, #0
|
||||
strb r1, [r0]
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02025368: .word _020B112C_JP
|
||||
arm_func_end sub_02025304_JP
|
||||
#endif
|
||||
|
||||
arm_func_start StrncpyName
|
||||
StrncpyName: ; 0x02025314
|
||||
#ifdef JAPAN
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r4, #0
|
||||
ldr r3, _020253DC ; =_020B112C_JP
|
||||
b _020253CC
|
||||
_0202537C:
|
||||
ldrb r7, [r1]
|
||||
cmp r7, #0
|
||||
moveq r1, #0
|
||||
streqb r1, [r0]
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
mov r6, r4
|
||||
ldr r5, [r3, #4]
|
||||
b _020253B8
|
||||
_0202539C:
|
||||
cmp r7, ip
|
||||
ldreqb lr, [r1, #1]
|
||||
ldreqb ip, [r5, #1]
|
||||
cmpeq lr, ip
|
||||
beq _020253C4
|
||||
add r5, r5, #2
|
||||
add r6, r6, #1
|
||||
_020253B8:
|
||||
ldrb ip, [r5]
|
||||
cmp ip, #0
|
||||
bne _0202539C
|
||||
_020253C4:
|
||||
strb r6, [r0], #1
|
||||
add r1, r1, #2
|
||||
_020253CC:
|
||||
cmp r2, #0
|
||||
sub r2, r2, #1
|
||||
bgt _0202537C
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_020253DC: .word _020B112C_JP
|
||||
#else
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov lr, #0
|
||||
mov ip, lr
|
||||
b _020253F4
|
||||
_02025324:
|
||||
ldrb r3, [r1], #1
|
||||
cmp r3, #0
|
||||
moveq r1, #0
|
||||
streqb r1, [r0]
|
||||
ldmeqia sp!, {r3, r4, r5, pc}
|
||||
cmp r3, #0x7e
|
||||
bne _020253F0
|
||||
ldrb r4, [r1]
|
||||
ldrb r5, [r1, #1]
|
||||
add r1, r1, #2
|
||||
cmp r4, #0x30
|
||||
blo _02025364
|
||||
cmp r4, #0x39
|
||||
subls r3, r4, #0x30
|
||||
andls r4, r3, #0xff
|
||||
bls _02025398
|
||||
_02025364:
|
||||
cmp r4, #0x61
|
||||
blo _0202537C
|
||||
cmp r4, #0x66
|
||||
subls r3, r4, #0x6b
|
||||
andls r4, r3, #0xff
|
||||
bls _02025398
|
||||
_0202537C:
|
||||
cmp r4, #0x41
|
||||
blo _02025394
|
||||
cmp r4, #0x46
|
||||
subls r3, r4, #0x4b
|
||||
andls r4, r3, #0xff
|
||||
bls _02025398
|
||||
_02025394:
|
||||
mov r4, lr
|
||||
_02025398:
|
||||
cmp r5, #0x30
|
||||
blo _020253B0
|
||||
cmp r5, #0x39
|
||||
subls r3, r5, #0x30
|
||||
andls r5, r3, #0xff
|
||||
bls _020253E4
|
||||
_020253B0:
|
||||
cmp r5, #0x61
|
||||
blo _020253C8
|
||||
cmp r5, #0x66
|
||||
subls r3, r5, #0x6b
|
||||
andls r5, r3, #0xff
|
||||
bls _020253E4
|
||||
_020253C8:
|
||||
cmp r5, #0x41
|
||||
blo _020253E0
|
||||
cmp r5, #0x46
|
||||
subls r3, r5, #0x4b
|
||||
andls r5, r3, #0xff
|
||||
bls _020253E4
|
||||
_020253E0:
|
||||
mov r5, ip
|
||||
_020253E4:
|
||||
orr r3, r5, r4, lsl #4
|
||||
strb r3, [r0], #1
|
||||
b _020253F4
|
||||
_020253F0:
|
||||
strb r3, [r0], #1
|
||||
_020253F4:
|
||||
cmp r2, #0
|
||||
sub r2, r2, #1
|
||||
bgt _02025324
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
#endif
|
||||
arm_func_end StrncpyName
|
||||
|
||||
#ifdef JAPAN
|
||||
arm_func_start sub_020253E0_JP
|
||||
sub_020253E0_JP: ; 0x020253E0
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov ip, #0
|
||||
ldr r3, _02025444 ; =_020B112C_JP
|
||||
b _02025434
|
||||
_020253F0:
|
||||
ldrh r5, [r1]
|
||||
cmp r5, #0
|
||||
moveq r1, #0
|
||||
streqb r1, [r0]
|
||||
ldmeqia sp!, {r4, r5, r6, pc}
|
||||
mov r4, ip
|
||||
ldr lr, [r3]
|
||||
b _02025420
|
||||
_02025410:
|
||||
cmp r6, r5
|
||||
beq _0202542C
|
||||
add lr, lr, #2
|
||||
add r4, r4, #1
|
||||
_02025420:
|
||||
ldrh r6, [lr]
|
||||
cmp r6, #0
|
||||
bne _02025410
|
||||
_0202542C:
|
||||
strb r4, [r0], #1
|
||||
add r1, r1, #2
|
||||
_02025434:
|
||||
cmp r2, #0
|
||||
sub r2, r2, #1
|
||||
bgt _020253F0
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02025444: .word _020B112C_JP
|
||||
arm_func_end sub_020253E0_JP
|
||||
#else
|
||||
arm_func_start sub_02025404
|
||||
sub_02025404: ; 0x02025404
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
b _02025424
|
||||
_02025418:
|
||||
ldrb r0, [r5], #1
|
||||
bl sub_02025480
|
||||
strh r0, [r6], #2
|
||||
_02025424:
|
||||
cmp r4, #0
|
||||
sub r4, r4, #1
|
||||
ble _0202543C
|
||||
ldrb r0, [r5]
|
||||
cmp r0, #0
|
||||
bne _02025418
|
||||
_0202543C:
|
||||
cmp r4, #0
|
||||
movgt r0, #0
|
||||
strgth r0, [r6]
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
arm_func_end sub_02025404
|
||||
|
||||
arm_func_start sub_0202544C
|
||||
sub_0202544C: ; 0x0202544C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
sub sp, sp, #0x40
|
||||
mov r5, r0
|
||||
add r0, sp, #0
|
||||
mov r3, #1
|
||||
mov r4, r2
|
||||
bl sub_0202568C
|
||||
add r1, sp, #0
|
||||
mov r0, r5
|
||||
mov r2, r4
|
||||
bl StrncpyName
|
||||
add sp, sp, #0x40
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end sub_0202544C
|
||||
#endif
|
||||
|
||||
arm_func_start sub_02025480
|
||||
sub_02025480: ; 0x02025480
|
||||
stmdb sp!, {r3, lr}
|
||||
#ifdef JAPAN
|
||||
tst r0, #0xff00
|
||||
moveq r0, r0, lsl #0x10
|
||||
moveq r0, r0, lsr #0x10
|
||||
ldmeqia sp!, {r3, pc}
|
||||
#endif
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, pc}
|
||||
mov ip, #0
|
||||
#ifdef JAPAN
|
||||
mov lr, #0x110
|
||||
#else
|
||||
mov lr, #0xdb
|
||||
#endif
|
||||
ldr r2, _020254F0 ; =_0209A044
|
||||
b _020254C8
|
||||
_020254A0:
|
||||
add r1, ip, lr
|
||||
add r1, r1, r1, lsr #31
|
||||
mov r3, r1, asr #1
|
||||
mov r1, r3, lsl #2
|
||||
ldrh r1, [r2, r1]
|
||||
cmp r1, r0
|
||||
moveq ip, r3
|
||||
beq _020254D0
|
||||
addlt ip, r3, #1
|
||||
movge lr, r3
|
||||
_020254C8:
|
||||
cmp ip, lr
|
||||
blt _020254A0
|
||||
_020254D0:
|
||||
ldr r1, _020254F0 ; =_0209A044
|
||||
mov r2, ip, lsl #2
|
||||
ldrh r1, [r1, r2]
|
||||
cmp r1, r0
|
||||
ldreq r0, _020254F4 ; =_0209A046
|
||||
ldreqh r0, [r0, r2]
|
||||
movne r0, #0
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_020254F0: .word _0209A044
|
||||
_020254F4: .word _0209A046
|
||||
arm_func_end sub_02025480
|
||||
|
||||
arm_func_start sub_020254F8
|
||||
sub_020254F8: ; 0x020254F8
|
||||
#ifdef JAPAN
|
||||
stmdb sp!, {r3, lr}
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, pc}
|
||||
cmp r0, #0xa
|
||||
ldreq r0, _02025530 ; =0x000081A5
|
||||
ldmeqia sp!, {r3, pc}
|
||||
tst r0, #0xff00
|
||||
ldmeqia sp!, {r3, pc}
|
||||
mov lr, #0
|
||||
ldr r3, _02025534 ; =_0209A044
|
||||
ldr r1, _02025538 ; =0x00000111
|
||||
b _02025520
|
||||
_02025504:
|
||||
add r2, r3, lr, lsl #2
|
||||
ldrh r2, [r2, #2]
|
||||
mov ip, lr, lsl #2
|
||||
cmp r0, r2
|
||||
ldreqh r0, [r3, ip]
|
||||
ldmeqia sp!, {r3, pc}
|
||||
add lr, lr, #1
|
||||
_02025520:
|
||||
cmp lr, r1
|
||||
blt _02025504
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02025530: .word 0x000081A5
|
||||
_02025534: .word _0209A044
|
||||
_02025538: .word 0x00000111
|
||||
#else
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
bxeq lr
|
||||
cmp r0, #0xa
|
||||
moveq r0, #0xa
|
||||
bxeq lr
|
||||
mov ip, #0
|
||||
ldr r2, _02025548 ; =_0209A044
|
||||
b _02025538
|
||||
_0202551C:
|
||||
add r1, r2, ip, lsl #2
|
||||
ldrh r1, [r1, #2]
|
||||
mov r3, ip, lsl #2
|
||||
cmp r0, r1
|
||||
ldreqh r0, [r2, r3]
|
||||
bxeq lr
|
||||
add ip, ip, #1
|
||||
_02025538:
|
||||
cmp ip, #0xdc
|
||||
blt _0202551C
|
||||
mov r0, #0
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02025548: .word _0209A044
|
||||
#endif
|
||||
arm_func_end sub_020254F8
|
||||
|
||||
arm_func_start sub_0202554C
|
||||
sub_0202554C: ; 0x0202554C
|
||||
stmdb sp!, {r3, lr}
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, pc}
|
||||
cmp r0, #0xa
|
||||
#ifdef JAPAN
|
||||
ldreq r0, _020255BC ; =0x000081A5
|
||||
#else
|
||||
moveq r0, #0xa
|
||||
#endif
|
||||
ldmeqia sp!, {r3, pc}
|
||||
mov lr, #0
|
||||
ldr ip, _020255CC ; =0x000001BE
|
||||
ldr r2, _020255D0 ; =_0209A3B4
|
||||
b _020255A4
|
||||
_02025578:
|
||||
add r1, lr, ip
|
||||
add r1, r1, r1, lsr #31
|
||||
mov r3, r1, asr #1
|
||||
mov r1, r3, lsl #2
|
||||
ldrh r1, [r2, r1]
|
||||
cmp r0, r1
|
||||
moveq lr, r3
|
||||
beq _020255AC
|
||||
cmp r1, r0
|
||||
addlo lr, r3, #1
|
||||
movhs ip, r3
|
||||
_020255A4:
|
||||
cmp lr, ip
|
||||
blt _02025578
|
||||
_020255AC:
|
||||
ldr r1, _020255D0 ; =_0209A3B4
|
||||
mov r2, lr, lsl #2
|
||||
ldrh r1, [r1, r2]
|
||||
cmp r0, r1
|
||||
ldreq r0, _020255D4 ; =_0209A3B6
|
||||
ldreqh r0, [r0, r2]
|
||||
#ifdef JAPAN
|
||||
ldrne r0, _020255CC_JP ; =0x00008148
|
||||
#else
|
||||
movne r0, #0x3f
|
||||
#endif
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_020255BC: .word 0x000081A5
|
||||
_020255CC: .word 0x000001BF
|
||||
#else
|
||||
_020255CC: .word 0x000001BE
|
||||
#endif
|
||||
_020255D0: .word _0209A3B4
|
||||
_020255D4: .word _0209A3B6
|
||||
#ifdef JAPAN
|
||||
_020255CC_JP: .word 0x00008148
|
||||
#endif
|
||||
arm_func_end sub_0202554C
|
||||
|
||||
arm_func_start sub_020255D8
|
||||
sub_020255D8: ; 0x020255D8
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
str r1, [sp]
|
||||
add r4, sp, #0
|
||||
b _020255FC
|
||||
_020255EC:
|
||||
mov r0, r4
|
||||
bl sub_0202065C
|
||||
bl sub_02025480
|
||||
strh r0, [r5], #2
|
||||
_020255FC:
|
||||
ldr r0, [sp]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _020255EC
|
||||
mov r1, #0
|
||||
mov r0, r5
|
||||
strh r1, [r5]
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end sub_020255D8
|
||||
|
||||
arm_func_start sub_0202561C
|
||||
sub_0202561C: ; 0x0202561C
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
|
||||
sub sp, sp, #4
|
||||
mov r4, r0
|
||||
mov r8, r2
|
||||
mov r7, r3
|
||||
str r1, [sp]
|
||||
mov r6, #0
|
||||
add r5, sp, #0
|
||||
b _02025654
|
||||
_02025640:
|
||||
mov r0, r5
|
||||
bl sub_0202065C
|
||||
bl sub_02025480
|
||||
strh r0, [r4], #2
|
||||
add r6, r6, #1
|
||||
_02025654:
|
||||
ldr r0, [sp]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0202566C
|
||||
cmp r6, r8
|
||||
blt _02025640
|
||||
_0202566C:
|
||||
cmp r7, #0
|
||||
beq _02025680
|
||||
cmp r6, r8
|
||||
movlt r0, #0
|
||||
strlth r0, [r4]
|
||||
_02025680:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
||||
arm_func_end sub_0202561C
|
||||
|
||||
arm_func_start sub_0202568C
|
||||
sub_0202568C: ; 0x0202568C
|
||||
#ifdef JAPAN
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r7, r0
|
||||
mov r6, r1
|
||||
mov r5, r2
|
||||
mov r4, #0
|
||||
b _020256C0
|
||||
_0202569C:
|
||||
bl sub_020254F8
|
||||
ands r1, r0, #0xff00
|
||||
movne r1, r1, asr #8
|
||||
strneb r1, [r7]
|
||||
strneb r0, [r7, #1]
|
||||
addne r7, r7, #2
|
||||
streqb r0, [r7], #1
|
||||
add r6, r6, #2
|
||||
add r4, r4, #1
|
||||
_020256C0:
|
||||
ldrh r0, [r6]
|
||||
cmp r0, #0
|
||||
beq _020256D4
|
||||
cmp r4, r5
|
||||
blt _0202569C
|
||||
_020256D4:
|
||||
mov r0, r7
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
#else
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
mov r4, r0
|
||||
mov r8, r1
|
||||
mov r7, r2
|
||||
mov r6, r3
|
||||
mov r5, #0
|
||||
b _020256CC
|
||||
_020256A8:
|
||||
bl sub_020254F8
|
||||
ands r1, r0, #0xff00
|
||||
movne r1, r1, asr #8
|
||||
strneb r1, [r4]
|
||||
strneb r0, [r4, #1]
|
||||
addne r4, r4, #2
|
||||
streqb r0, [r4], #1
|
||||
add r8, r8, #2
|
||||
add r5, r5, #1
|
||||
_020256CC:
|
||||
ldrh r0, [r8]
|
||||
cmp r0, #0
|
||||
beq _020256E0
|
||||
cmp r5, r7
|
||||
blt _020256A8
|
||||
_020256E0:
|
||||
cmp r6, #0
|
||||
beq _020256F4
|
||||
cmp r5, r7
|
||||
movlt r0, #0
|
||||
strltb r0, [r4]
|
||||
_020256F4:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
#endif
|
||||
arm_func_end sub_0202568C
|
||||
|
||||
arm_func_start sub_020256FC
|
||||
sub_020256FC: ; 0x020256FC
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
mov sl, r0
|
||||
mov sb, r1
|
||||
mov r8, r2
|
||||
mov r7, #0
|
||||
mov r5, #0x81
|
||||
mov r4, #0x48
|
||||
ldr fp, _02025780 ; =0x000081A1
|
||||
b _02025764
|
||||
_02025720:
|
||||
bl sub_0202554C
|
||||
mov r6, r0
|
||||
bl sub_02025C7C
|
||||
#ifdef JAPAN
|
||||
ldrh r0, [r0, #4]
|
||||
#else
|
||||
ldrh r0, [r0]
|
||||
#endif
|
||||
cmp r0, fp
|
||||
streqb r5, [sl]
|
||||
streqb r4, [sl, #1]
|
||||
addeq sl, sl, #2
|
||||
beq _0202575C
|
||||
ands r0, r6, #0xff00
|
||||
movne r0, r0, asr #8
|
||||
strneb r0, [sl]
|
||||
strneb r6, [sl, #1]
|
||||
addne sl, sl, #2
|
||||
streqb r6, [sl], #1
|
||||
_0202575C:
|
||||
add sb, sb, #2
|
||||
add r7, r7, #1
|
||||
_02025764:
|
||||
ldrh r0, [sb]
|
||||
cmp r0, #0
|
||||
beq _02025778
|
||||
cmp r7, r8
|
||||
blt _02025720
|
||||
_02025778:
|
||||
mov r0, sl
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_02025780: .word 0x000081A1
|
||||
arm_func_end sub_020256FC
|
||||
|
||||
arm_func_start sub_02025784
|
||||
sub_02025784: ; 0x02025784
|
||||
bx lr
|
||||
arm_func_end sub_02025784
|
||||
|
||||
743
asm/main_020251F0.s
Normal file
743
asm/main_020251F0.s
Normal file
@@ -0,0 +1,743 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "main_020251F0.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start sub_020251F0
|
||||
sub_020251F0: ; 0x020251F0
|
||||
#ifdef JAPAN
|
||||
ldr r1, _02025264 ; =_020B112C_JP
|
||||
ldr r1, [r1, #4]
|
||||
add r2, r1, r0, lsl #1
|
||||
ldrb r1, [r1, r0, lsl #1]
|
||||
ldrb r0, [r2, #1]
|
||||
add r0, r0, r1, lsl #8
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02025264: .word _020B112C_JP
|
||||
#else
|
||||
bx lr
|
||||
#endif
|
||||
arm_func_end sub_020251F0
|
||||
|
||||
arm_func_start StrncpySimpleNoPadSafe
|
||||
StrncpySimpleNoPadSafe: ; 0x020251F4
|
||||
#ifdef JAPAN
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
b _02025294
|
||||
_0202527C:
|
||||
ldrb r0, [r5], #1
|
||||
bl sub_020251F0
|
||||
mov r1, r0, asr #8
|
||||
strb r1, [r6]
|
||||
strb r0, [r6, #1]
|
||||
add r6, r6, #2
|
||||
_02025294:
|
||||
cmp r4, #0
|
||||
sub r4, r4, #1
|
||||
ble _020252AC
|
||||
ldrb r0, [r5]
|
||||
cmp r0, #0
|
||||
bne _0202527C
|
||||
_020252AC:
|
||||
mov r0, #0
|
||||
strb r0, [r6]
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
#else
|
||||
mov ip, #0x20
|
||||
b _0202520C
|
||||
_020251FC:
|
||||
ldrb r3, [r1], #1
|
||||
cmp r3, #0x100
|
||||
strlob r3, [r0], #1
|
||||
strhsb ip, [r0], #1
|
||||
_0202520C:
|
||||
cmp r2, #0
|
||||
sub r2, r2, #1
|
||||
ble _02025224
|
||||
ldrb r3, [r1]
|
||||
cmp r3, #0
|
||||
bne _020251FC
|
||||
_02025224:
|
||||
mov r1, #0
|
||||
strb r1, [r0]
|
||||
bx lr
|
||||
#endif
|
||||
arm_func_end StrncpySimpleNoPadSafe
|
||||
|
||||
arm_func_start StrcpyName
|
||||
StrcpyName: ; 0x02025230
|
||||
#ifdef JAPAN
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r3, _02025300 ; =_020B112C_JP
|
||||
b _020252D8
|
||||
_020252C4:
|
||||
ldrb ip, [r1], #1
|
||||
ldr lr, [r3]
|
||||
mov ip, ip, lsl #1
|
||||
ldrh ip, [lr, ip]
|
||||
strh ip, [r0], #2
|
||||
_020252D8:
|
||||
cmp r2, #0
|
||||
sub r2, r2, #1
|
||||
ble _020252F0
|
||||
ldrb ip, [r1]
|
||||
cmp ip, #0
|
||||
bne _020252C4
|
||||
_020252F0:
|
||||
cmp r2, #0
|
||||
movgt r1, #0
|
||||
strgth r1, [r0]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02025300: .word _020B112C_JP
|
||||
#else
|
||||
stmdb sp!, {r4, lr}
|
||||
mov ip, #0
|
||||
mov r3, ip
|
||||
b _020252FC
|
||||
_02025240:
|
||||
cmp r2, #0x7e
|
||||
bne _020252F8
|
||||
ldrb lr, [r1]
|
||||
ldrb r4, [r1, #1]
|
||||
add r1, r1, #2
|
||||
cmp lr, #0x30
|
||||
blo _0202526C
|
||||
cmp lr, #0x39
|
||||
subls r2, lr, #0x30
|
||||
andls lr, r2, #0xff
|
||||
bls _020252A0
|
||||
_0202526C:
|
||||
cmp lr, #0x61
|
||||
blo _02025284
|
||||
cmp lr, #0x66
|
||||
subls r2, lr, #0x6b
|
||||
andls lr, r2, #0xff
|
||||
bls _020252A0
|
||||
_02025284:
|
||||
cmp lr, #0x41
|
||||
blo _0202529C
|
||||
cmp lr, #0x46
|
||||
subls r2, lr, #0x4b
|
||||
andls lr, r2, #0xff
|
||||
bls _020252A0
|
||||
_0202529C:
|
||||
mov lr, ip
|
||||
_020252A0:
|
||||
cmp r4, #0x30
|
||||
blo _020252B8
|
||||
cmp r4, #0x39
|
||||
subls r2, r4, #0x30
|
||||
andls r4, r2, #0xff
|
||||
bls _020252EC
|
||||
_020252B8:
|
||||
cmp r4, #0x61
|
||||
blo _020252D0
|
||||
cmp r4, #0x66
|
||||
subls r2, r4, #0x6b
|
||||
andls r4, r2, #0xff
|
||||
bls _020252EC
|
||||
_020252D0:
|
||||
cmp r4, #0x41
|
||||
blo _020252E8
|
||||
cmp r4, #0x46
|
||||
subls r2, r4, #0x4b
|
||||
andls r4, r2, #0xff
|
||||
bls _020252EC
|
||||
_020252E8:
|
||||
mov r4, r3
|
||||
_020252EC:
|
||||
orr r2, r4, lr, lsl #4
|
||||
strb r2, [r0], #1
|
||||
b _020252FC
|
||||
_020252F8:
|
||||
strb r2, [r0], #1
|
||||
_020252FC:
|
||||
ldrb r2, [r1], #1
|
||||
cmp r2, #0
|
||||
bne _02025240
|
||||
mov r1, #0
|
||||
strb r1, [r0]
|
||||
ldmia sp!, {r4, pc}
|
||||
#endif
|
||||
arm_func_end StrcpyName
|
||||
|
||||
#ifdef JAPAN
|
||||
arm_func_start sub_02025304_JP
|
||||
sub_02025304_JP: ; 0x02025304
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov lr, #0
|
||||
ldr r2, _02025368 ; =_020B112C_JP
|
||||
b _02025350
|
||||
_02025314:
|
||||
mov r5, lr
|
||||
ldr r4, [r2, #4]
|
||||
b _0202533C
|
||||
_02025320:
|
||||
cmp r6, r3
|
||||
ldreqb ip, [r1, #1]
|
||||
ldreqb r3, [r4, #1]
|
||||
cmpeq ip, r3
|
||||
beq _02025348
|
||||
add r4, r4, #2
|
||||
add r5, r5, #1
|
||||
_0202533C:
|
||||
ldrb r3, [r4]
|
||||
cmp r3, #0
|
||||
bne _02025320
|
||||
_02025348:
|
||||
strb r5, [r0], #1
|
||||
add r1, r1, #2
|
||||
_02025350:
|
||||
ldrb r6, [r1]
|
||||
cmp r6, #0
|
||||
bne _02025314
|
||||
mov r1, #0
|
||||
strb r1, [r0]
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02025368: .word _020B112C_JP
|
||||
arm_func_end sub_02025304_JP
|
||||
#endif
|
||||
|
||||
arm_func_start StrncpyName
|
||||
StrncpyName: ; 0x02025314
|
||||
#ifdef JAPAN
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r4, #0
|
||||
ldr r3, _020253DC ; =_020B112C_JP
|
||||
b _020253CC
|
||||
_0202537C:
|
||||
ldrb r7, [r1]
|
||||
cmp r7, #0
|
||||
moveq r1, #0
|
||||
streqb r1, [r0]
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
mov r6, r4
|
||||
ldr r5, [r3, #4]
|
||||
b _020253B8
|
||||
_0202539C:
|
||||
cmp r7, ip
|
||||
ldreqb lr, [r1, #1]
|
||||
ldreqb ip, [r5, #1]
|
||||
cmpeq lr, ip
|
||||
beq _020253C4
|
||||
add r5, r5, #2
|
||||
add r6, r6, #1
|
||||
_020253B8:
|
||||
ldrb ip, [r5]
|
||||
cmp ip, #0
|
||||
bne _0202539C
|
||||
_020253C4:
|
||||
strb r6, [r0], #1
|
||||
add r1, r1, #2
|
||||
_020253CC:
|
||||
cmp r2, #0
|
||||
sub r2, r2, #1
|
||||
bgt _0202537C
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_020253DC: .word _020B112C_JP
|
||||
#else
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov lr, #0
|
||||
mov ip, lr
|
||||
b _020253F4
|
||||
_02025324:
|
||||
ldrb r3, [r1], #1
|
||||
cmp r3, #0
|
||||
moveq r1, #0
|
||||
streqb r1, [r0]
|
||||
ldmeqia sp!, {r3, r4, r5, pc}
|
||||
cmp r3, #0x7e
|
||||
bne _020253F0
|
||||
ldrb r4, [r1]
|
||||
ldrb r5, [r1, #1]
|
||||
add r1, r1, #2
|
||||
cmp r4, #0x30
|
||||
blo _02025364
|
||||
cmp r4, #0x39
|
||||
subls r3, r4, #0x30
|
||||
andls r4, r3, #0xff
|
||||
bls _02025398
|
||||
_02025364:
|
||||
cmp r4, #0x61
|
||||
blo _0202537C
|
||||
cmp r4, #0x66
|
||||
subls r3, r4, #0x6b
|
||||
andls r4, r3, #0xff
|
||||
bls _02025398
|
||||
_0202537C:
|
||||
cmp r4, #0x41
|
||||
blo _02025394
|
||||
cmp r4, #0x46
|
||||
subls r3, r4, #0x4b
|
||||
andls r4, r3, #0xff
|
||||
bls _02025398
|
||||
_02025394:
|
||||
mov r4, lr
|
||||
_02025398:
|
||||
cmp r5, #0x30
|
||||
blo _020253B0
|
||||
cmp r5, #0x39
|
||||
subls r3, r5, #0x30
|
||||
andls r5, r3, #0xff
|
||||
bls _020253E4
|
||||
_020253B0:
|
||||
cmp r5, #0x61
|
||||
blo _020253C8
|
||||
cmp r5, #0x66
|
||||
subls r3, r5, #0x6b
|
||||
andls r5, r3, #0xff
|
||||
bls _020253E4
|
||||
_020253C8:
|
||||
cmp r5, #0x41
|
||||
blo _020253E0
|
||||
cmp r5, #0x46
|
||||
subls r3, r5, #0x4b
|
||||
andls r5, r3, #0xff
|
||||
bls _020253E4
|
||||
_020253E0:
|
||||
mov r5, ip
|
||||
_020253E4:
|
||||
orr r3, r5, r4, lsl #4
|
||||
strb r3, [r0], #1
|
||||
b _020253F4
|
||||
_020253F0:
|
||||
strb r3, [r0], #1
|
||||
_020253F4:
|
||||
cmp r2, #0
|
||||
sub r2, r2, #1
|
||||
bgt _02025324
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
#endif
|
||||
arm_func_end StrncpyName
|
||||
|
||||
#ifdef JAPAN
|
||||
arm_func_start sub_020253E0_JP
|
||||
sub_020253E0_JP: ; 0x020253E0
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov ip, #0
|
||||
ldr r3, _02025444 ; =_020B112C_JP
|
||||
b _02025434
|
||||
_020253F0:
|
||||
ldrh r5, [r1]
|
||||
cmp r5, #0
|
||||
moveq r1, #0
|
||||
streqb r1, [r0]
|
||||
ldmeqia sp!, {r4, r5, r6, pc}
|
||||
mov r4, ip
|
||||
ldr lr, [r3]
|
||||
b _02025420
|
||||
_02025410:
|
||||
cmp r6, r5
|
||||
beq _0202542C
|
||||
add lr, lr, #2
|
||||
add r4, r4, #1
|
||||
_02025420:
|
||||
ldrh r6, [lr]
|
||||
cmp r6, #0
|
||||
bne _02025410
|
||||
_0202542C:
|
||||
strb r4, [r0], #1
|
||||
add r1, r1, #2
|
||||
_02025434:
|
||||
cmp r2, #0
|
||||
sub r2, r2, #1
|
||||
bgt _020253F0
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_02025444: .word _020B112C_JP
|
||||
arm_func_end sub_020253E0_JP
|
||||
#else
|
||||
arm_func_start sub_02025404
|
||||
sub_02025404: ; 0x02025404
|
||||
stmdb sp!, {r4, r5, r6, lr}
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
b _02025424
|
||||
_02025418:
|
||||
ldrb r0, [r5], #1
|
||||
bl sub_02025480
|
||||
strh r0, [r6], #2
|
||||
_02025424:
|
||||
cmp r4, #0
|
||||
sub r4, r4, #1
|
||||
ble _0202543C
|
||||
ldrb r0, [r5]
|
||||
cmp r0, #0
|
||||
bne _02025418
|
||||
_0202543C:
|
||||
cmp r4, #0
|
||||
movgt r0, #0
|
||||
strgth r0, [r6]
|
||||
ldmia sp!, {r4, r5, r6, pc}
|
||||
arm_func_end sub_02025404
|
||||
|
||||
arm_func_start sub_0202544C
|
||||
sub_0202544C: ; 0x0202544C
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
sub sp, sp, #0x40
|
||||
mov r5, r0
|
||||
add r0, sp, #0
|
||||
mov r3, #1
|
||||
mov r4, r2
|
||||
bl sub_0202568C
|
||||
add r1, sp, #0
|
||||
mov r0, r5
|
||||
mov r2, r4
|
||||
bl StrncpyName
|
||||
add sp, sp, #0x40
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end sub_0202544C
|
||||
#endif
|
||||
|
||||
arm_func_start sub_02025480
|
||||
sub_02025480: ; 0x02025480
|
||||
stmdb sp!, {r3, lr}
|
||||
#ifdef JAPAN
|
||||
tst r0, #0xff00
|
||||
moveq r0, r0, lsl #0x10
|
||||
moveq r0, r0, lsr #0x10
|
||||
ldmeqia sp!, {r3, pc}
|
||||
#endif
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, pc}
|
||||
mov ip, #0
|
||||
#ifdef JAPAN
|
||||
mov lr, #0x110
|
||||
#else
|
||||
mov lr, #0xdb
|
||||
#endif
|
||||
ldr r2, _020254F0 ; =_0209A044
|
||||
b _020254C8
|
||||
_020254A0:
|
||||
add r1, ip, lr
|
||||
add r1, r1, r1, lsr #31
|
||||
mov r3, r1, asr #1
|
||||
mov r1, r3, lsl #2
|
||||
ldrh r1, [r2, r1]
|
||||
cmp r1, r0
|
||||
moveq ip, r3
|
||||
beq _020254D0
|
||||
addlt ip, r3, #1
|
||||
movge lr, r3
|
||||
_020254C8:
|
||||
cmp ip, lr
|
||||
blt _020254A0
|
||||
_020254D0:
|
||||
ldr r1, _020254F0 ; =_0209A044
|
||||
mov r2, ip, lsl #2
|
||||
ldrh r1, [r1, r2]
|
||||
cmp r1, r0
|
||||
ldreq r0, _020254F4 ; =_0209A046
|
||||
ldreqh r0, [r0, r2]
|
||||
movne r0, #0
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_020254F0: .word _0209A044
|
||||
_020254F4: .word _0209A046
|
||||
arm_func_end sub_02025480
|
||||
|
||||
arm_func_start sub_020254F8
|
||||
sub_020254F8: ; 0x020254F8
|
||||
#ifdef JAPAN
|
||||
stmdb sp!, {r3, lr}
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, pc}
|
||||
cmp r0, #0xa
|
||||
ldreq r0, _02025530 ; =0x000081A5
|
||||
ldmeqia sp!, {r3, pc}
|
||||
tst r0, #0xff00
|
||||
ldmeqia sp!, {r3, pc}
|
||||
mov lr, #0
|
||||
ldr r3, _02025534 ; =_0209A044
|
||||
ldr r1, _02025538 ; =0x00000111
|
||||
b _02025520
|
||||
_02025504:
|
||||
add r2, r3, lr, lsl #2
|
||||
ldrh r2, [r2, #2]
|
||||
mov ip, lr, lsl #2
|
||||
cmp r0, r2
|
||||
ldreqh r0, [r3, ip]
|
||||
ldmeqia sp!, {r3, pc}
|
||||
add lr, lr, #1
|
||||
_02025520:
|
||||
cmp lr, r1
|
||||
blt _02025504
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02025530: .word 0x000081A5
|
||||
_02025534: .word _0209A044
|
||||
_02025538: .word 0x00000111
|
||||
#else
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
bxeq lr
|
||||
cmp r0, #0xa
|
||||
moveq r0, #0xa
|
||||
bxeq lr
|
||||
mov ip, #0
|
||||
ldr r2, _02025548 ; =_0209A044
|
||||
b _02025538
|
||||
_0202551C:
|
||||
add r1, r2, ip, lsl #2
|
||||
ldrh r1, [r1, #2]
|
||||
mov r3, ip, lsl #2
|
||||
cmp r0, r1
|
||||
ldreqh r0, [r2, r3]
|
||||
bxeq lr
|
||||
add ip, ip, #1
|
||||
_02025538:
|
||||
cmp ip, #0xdc
|
||||
blt _0202551C
|
||||
mov r0, #0
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02025548: .word _0209A044
|
||||
#endif
|
||||
arm_func_end sub_020254F8
|
||||
|
||||
arm_func_start sub_0202554C
|
||||
sub_0202554C: ; 0x0202554C
|
||||
stmdb sp!, {r3, lr}
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, pc}
|
||||
cmp r0, #0xa
|
||||
#ifdef JAPAN
|
||||
ldreq r0, _020255BC ; =0x000081A5
|
||||
#else
|
||||
moveq r0, #0xa
|
||||
#endif
|
||||
ldmeqia sp!, {r3, pc}
|
||||
mov lr, #0
|
||||
ldr ip, _020255CC ; =0x000001BE
|
||||
ldr r2, _020255D0 ; =_0209A3B4
|
||||
b _020255A4
|
||||
_02025578:
|
||||
add r1, lr, ip
|
||||
add r1, r1, r1, lsr #31
|
||||
mov r3, r1, asr #1
|
||||
mov r1, r3, lsl #2
|
||||
ldrh r1, [r2, r1]
|
||||
cmp r0, r1
|
||||
moveq lr, r3
|
||||
beq _020255AC
|
||||
cmp r1, r0
|
||||
addlo lr, r3, #1
|
||||
movhs ip, r3
|
||||
_020255A4:
|
||||
cmp lr, ip
|
||||
blt _02025578
|
||||
_020255AC:
|
||||
ldr r1, _020255D0 ; =_0209A3B4
|
||||
mov r2, lr, lsl #2
|
||||
ldrh r1, [r1, r2]
|
||||
cmp r0, r1
|
||||
ldreq r0, _020255D4 ; =_0209A3B6
|
||||
ldreqh r0, [r0, r2]
|
||||
#ifdef JAPAN
|
||||
ldrne r0, _020255CC_JP ; =0x00008148
|
||||
#else
|
||||
movne r0, #0x3f
|
||||
#endif
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_020255BC: .word 0x000081A5
|
||||
_020255CC: .word 0x000001BF
|
||||
#else
|
||||
_020255CC: .word 0x000001BE
|
||||
#endif
|
||||
_020255D0: .word _0209A3B4
|
||||
_020255D4: .word _0209A3B6
|
||||
#ifdef JAPAN
|
||||
_020255CC_JP: .word 0x00008148
|
||||
#endif
|
||||
arm_func_end sub_0202554C
|
||||
|
||||
arm_func_start sub_020255D8
|
||||
sub_020255D8: ; 0x020255D8
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
str r1, [sp]
|
||||
add r4, sp, #0
|
||||
b _020255FC
|
||||
_020255EC:
|
||||
mov r0, r4
|
||||
bl sub_0202065C
|
||||
bl sub_02025480
|
||||
strh r0, [r5], #2
|
||||
_020255FC:
|
||||
ldr r0, [sp]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _020255EC
|
||||
mov r1, #0
|
||||
mov r0, r5
|
||||
strh r1, [r5]
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end sub_020255D8
|
||||
|
||||
arm_func_start sub_0202561C
|
||||
sub_0202561C: ; 0x0202561C
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
|
||||
sub sp, sp, #4
|
||||
mov r4, r0
|
||||
mov r8, r2
|
||||
mov r7, r3
|
||||
str r1, [sp]
|
||||
mov r6, #0
|
||||
add r5, sp, #0
|
||||
b _02025654
|
||||
_02025640:
|
||||
mov r0, r5
|
||||
bl sub_0202065C
|
||||
bl sub_02025480
|
||||
strh r0, [r4], #2
|
||||
add r6, r6, #1
|
||||
_02025654:
|
||||
ldr r0, [sp]
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0202566C
|
||||
cmp r6, r8
|
||||
blt _02025640
|
||||
_0202566C:
|
||||
cmp r7, #0
|
||||
beq _02025680
|
||||
cmp r6, r8
|
||||
movlt r0, #0
|
||||
strlth r0, [r4]
|
||||
_02025680:
|
||||
mov r0, r4
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
||||
arm_func_end sub_0202561C
|
||||
|
||||
arm_func_start sub_0202568C
|
||||
sub_0202568C: ; 0x0202568C
|
||||
#ifdef JAPAN
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r7, r0
|
||||
mov r6, r1
|
||||
mov r5, r2
|
||||
mov r4, #0
|
||||
b _020256C0
|
||||
_0202569C:
|
||||
bl sub_020254F8
|
||||
ands r1, r0, #0xff00
|
||||
movne r1, r1, asr #8
|
||||
strneb r1, [r7]
|
||||
strneb r0, [r7, #1]
|
||||
addne r7, r7, #2
|
||||
streqb r0, [r7], #1
|
||||
add r6, r6, #2
|
||||
add r4, r4, #1
|
||||
_020256C0:
|
||||
ldrh r0, [r6]
|
||||
cmp r0, #0
|
||||
beq _020256D4
|
||||
cmp r4, r5
|
||||
blt _0202569C
|
||||
_020256D4:
|
||||
mov r0, r7
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
#else
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
mov r4, r0
|
||||
mov r8, r1
|
||||
mov r7, r2
|
||||
mov r6, r3
|
||||
mov r5, #0
|
||||
b _020256CC
|
||||
_020256A8:
|
||||
bl sub_020254F8
|
||||
ands r1, r0, #0xff00
|
||||
movne r1, r1, asr #8
|
||||
strneb r1, [r4]
|
||||
strneb r0, [r4, #1]
|
||||
addne r4, r4, #2
|
||||
streqb r0, [r4], #1
|
||||
add r8, r8, #2
|
||||
add r5, r5, #1
|
||||
_020256CC:
|
||||
ldrh r0, [r8]
|
||||
cmp r0, #0
|
||||
beq _020256E0
|
||||
cmp r5, r7
|
||||
blt _020256A8
|
||||
_020256E0:
|
||||
cmp r6, #0
|
||||
beq _020256F4
|
||||
cmp r5, r7
|
||||
movlt r0, #0
|
||||
strltb r0, [r4]
|
||||
_020256F4:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
#endif
|
||||
arm_func_end sub_0202568C
|
||||
|
||||
arm_func_start sub_020256FC
|
||||
sub_020256FC: ; 0x020256FC
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
||||
mov sl, r0
|
||||
mov sb, r1
|
||||
mov r8, r2
|
||||
mov r7, #0
|
||||
mov r5, #0x81
|
||||
mov r4, #0x48
|
||||
ldr fp, _02025780 ; =0x000081A1
|
||||
b _02025764
|
||||
_02025720:
|
||||
bl sub_0202554C
|
||||
mov r6, r0
|
||||
bl sub_02025C7C
|
||||
#ifdef JAPAN
|
||||
ldrh r0, [r0, #4]
|
||||
#else
|
||||
ldrh r0, [r0]
|
||||
#endif
|
||||
cmp r0, fp
|
||||
streqb r5, [sl]
|
||||
streqb r4, [sl, #1]
|
||||
addeq sl, sl, #2
|
||||
beq _0202575C
|
||||
ands r0, r6, #0xff00
|
||||
movne r0, r0, asr #8
|
||||
strneb r0, [sl]
|
||||
strneb r6, [sl, #1]
|
||||
addne sl, sl, #2
|
||||
streqb r6, [sl], #1
|
||||
_0202575C:
|
||||
add sb, sb, #2
|
||||
add r7, r7, #1
|
||||
_02025764:
|
||||
ldrh r0, [sb]
|
||||
cmp r0, #0
|
||||
beq _02025778
|
||||
cmp r7, r8
|
||||
blt _02025720
|
||||
_02025778:
|
||||
mov r0, sl
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
||||
.align 2, 0
|
||||
_02025780: .word 0x000081A1
|
||||
arm_func_end sub_020256FC
|
||||
|
||||
arm_func_start sub_02025784
|
||||
sub_02025784: ; 0x02025784
|
||||
bx lr
|
||||
arm_func_end sub_02025784
|
||||
10
include/main_020251AC.h
Normal file
10
include/main_020251AC.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef PMDSKY_MAIN_020251AC_H
|
||||
#define PMDSKY_MAIN_020251AC_H
|
||||
|
||||
void SetQuestionMarks(char *s);
|
||||
void StrcpySimple(unsigned char* dest, const unsigned char* src);
|
||||
void StrncpySimple(unsigned char* dest, const unsigned char* src, s32 n);
|
||||
void StrncpySimpleNoPad(unsigned char* dest, const unsigned char* src, s32 n);
|
||||
int StrncmpSimple(const unsigned char* c1, const unsigned char* c2, s32 n);
|
||||
|
||||
#endif //PMDSKY_MAIN_020251AC_H
|
||||
2
main.lsf
2
main.lsf
@@ -33,6 +33,8 @@ Static main
|
||||
Object asm/main_0200ED1C.o
|
||||
Object src/moves.o
|
||||
Object asm/main_02013AD0.o
|
||||
Object src/main_020251AC.o
|
||||
Object asm/main_020251F0.o
|
||||
Object src/main_02025788.o
|
||||
Object asm/main_020257FC.o
|
||||
Object src/main_0202593C.o
|
||||
|
||||
80
src/main_020251AC.c
Normal file
80
src/main_020251AC.c
Normal file
@@ -0,0 +1,80 @@
|
||||
#include "main_020251AC.h"
|
||||
|
||||
void SetQuestionMarks(char *s)
|
||||
{
|
||||
#ifdef JAPAN
|
||||
s[0]=0xf;
|
||||
s[1]=0xf;
|
||||
s[2]=0xf;
|
||||
#else
|
||||
s[0]=0x3f;
|
||||
s[1]=0x3f;
|
||||
s[2]=0x3f;
|
||||
#endif
|
||||
s[3]=0;
|
||||
}
|
||||
|
||||
void StrcpySimple(unsigned char* dest, const unsigned char* src)
|
||||
{
|
||||
unsigned char* dest_tmp;
|
||||
do {
|
||||
dest_tmp = dest;
|
||||
*dest++ = *src++;
|
||||
} while (*dest_tmp!=0);
|
||||
}
|
||||
|
||||
void StrncpySimple(unsigned char* dest, const unsigned char* src, s32 n)
|
||||
{
|
||||
s32 bytes_copied = 0;
|
||||
unsigned char* dest_tmp;
|
||||
while (bytes_copied < n) {
|
||||
dest_tmp = dest;
|
||||
*dest++ = *src++;
|
||||
if (*dest_tmp == 0) {
|
||||
bytes_copied+=1;
|
||||
while (bytes_copied < n) {
|
||||
*dest++=0;
|
||||
bytes_copied+=1;
|
||||
}
|
||||
return;
|
||||
}
|
||||
bytes_copied++;
|
||||
}
|
||||
}
|
||||
|
||||
void StrncpySimpleNoPad(unsigned char* dest, const unsigned char* src, s32 n)
|
||||
{
|
||||
s32 bytes_copied = 0;
|
||||
unsigned char* dest_tmp;
|
||||
while (bytes_copied < n) {
|
||||
dest_tmp = dest;
|
||||
*dest++ = *src++;
|
||||
if (*dest_tmp == 0) {
|
||||
return;
|
||||
}
|
||||
bytes_copied++;
|
||||
}
|
||||
*dest=0;
|
||||
}
|
||||
|
||||
int StrncmpSimple(const unsigned char* s1, const unsigned char* s2, s32 n)
|
||||
{
|
||||
s32 bytes_compared = 0;
|
||||
do {
|
||||
unsigned char c1 = *(s1+bytes_compared);
|
||||
unsigned char c2 = *(s2+bytes_compared);
|
||||
bytes_compared++;
|
||||
if (c1!=c2) {
|
||||
if (c1<c2) {
|
||||
return -1;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
if (c1==0) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
} while (bytes_compared < n);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user