mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
Merge remote-tracking branch 'upstream/main'
This commit is contained in:
commit
08ee322d31
|
|
@ -1,70 +1,18 @@
|
|||
#pragma once
|
||||
.public CopyBitsFrom
|
||||
.public CopyBitsTo
|
||||
.public DUNGEON_RESTRICTIONS
|
||||
.public DungeonFloorToGroupFloor
|
||||
.public GetItemIdFromList
|
||||
.public GetNbFloorsPlusOne
|
||||
.public MISSION_FLOORS_FORBIDDEN
|
||||
.public RandIntSafe
|
||||
.public _020A0C68
|
||||
.public _020A0C69
|
||||
.public _020A0C6A
|
||||
.public _020A0C6C
|
||||
.public _020A0C6E
|
||||
.public _020A1864
|
||||
.public _020A20B1
|
||||
.public _020A2D09
|
||||
.public _020A31B8
|
||||
.public _020A31D4
|
||||
.public _020A31E4
|
||||
.public _020A31F4
|
||||
.public _020A31FC
|
||||
.public _020A3200
|
||||
.public _020A45C8_JP
|
||||
.public _020AFF7C
|
||||
.public _020AFF80
|
||||
.public _020AFF88
|
||||
.public _020B09B0
|
||||
.public _020B09C0
|
||||
.public _s32_div_f
|
||||
.public AllocateTemp1024ByteBufferFromPool
|
||||
.public ARM9_UNKNOWN_PTR__NA_20A2C84
|
||||
.public ARM9_UNKNOWN_TABLE__NA_20A20B0
|
||||
.public ArrayCopy32
|
||||
.public ArrayFill32
|
||||
.public BAG_CAPACITY_TABLE
|
||||
.public BAG_CAPACITY_TABLE_SPECIAL_EPISODES
|
||||
.public CopyBitsFrom
|
||||
.public CopyBitsTo
|
||||
.public DecompressAtNormalVeneer
|
||||
.public DUNGEON_RESTRICTIONS
|
||||
.public DungeonFloorToGroupFloor
|
||||
.public GetAtSize
|
||||
.public GetBaseForm
|
||||
.public GetItemIdFromList
|
||||
.public GetNbFloorsPlusOne
|
||||
.public LoadFileFromRom
|
||||
.public LoadM2nAndN2m
|
||||
.public MemAlloc
|
||||
.public MemFree
|
||||
.public MemZero
|
||||
.public MISSION_FLOORS_FORBIDDEN
|
||||
.public MONSTER_DATA_TABLE_PTR
|
||||
.public MONSTER_SPRITE_DATA
|
||||
.public RandIntSafe
|
||||
.public RANK_UP_TABLE
|
||||
.public StringFromId
|
||||
.public strncpy
|
||||
.public sub_0200302C
|
||||
.public sub_020030FC
|
||||
.public sub_0200A124
|
||||
.public sub_0200A158
|
||||
.public sub_0200A184
|
||||
.public sub_0200A478
|
||||
.public sub_0200A4C4
|
||||
.public sub_0200A504
|
||||
.public sub_0200A510
|
||||
.public sub_0200A590
|
||||
.public sub_0200B2C4
|
||||
.public sub_0200B314
|
||||
.public sub_0200B330
|
||||
.public sub_0200B340
|
||||
.public sub_0200B3C0
|
||||
.public sub_0200B3D4
|
||||
.public sub_0200B3FC
|
||||
.public UnloadFile
|
||||
.public UNOWN_SPECIES_ADDITIONAL_CHAR_PTR_TABLE
|
||||
.public vsprintf
|
||||
|
|
|
|||
53
asm/include/main_02051788.inc
Normal file
53
asm/include/main_02051788.inc
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
#pragma once
|
||||
.public ARM9_UNKNOWN_PTR__NA_20A2C84
|
||||
.public ARM9_UNKNOWN_TABLE__NA_20A20B0
|
||||
.public AllocateTemp1024ByteBufferFromPool
|
||||
.public ArrayCopy32
|
||||
.public ArrayFill32
|
||||
.public BAG_CAPACITY_TABLE
|
||||
.public BAG_CAPACITY_TABLE_SPECIAL_EPISODES
|
||||
.public DecompressAtNormalVeneer
|
||||
.public GetAtSize
|
||||
.public GetBaseForm
|
||||
.public LoadFileFromRom
|
||||
.public LoadM2nAndN2m
|
||||
.public MONSTER_DATA_TABLE_PTR
|
||||
.public MONSTER_SPRITE_DATA
|
||||
.public MemAlloc
|
||||
.public MemFree
|
||||
.public MemZero
|
||||
.public RANK_UP_TABLE
|
||||
.public StringFromId
|
||||
.public UNOWN_SPECIES_ADDITIONAL_CHAR_PTR_TABLE
|
||||
.public UnloadFile
|
||||
.public _020A20B1
|
||||
.public _020A2D09
|
||||
.public _020A31B8
|
||||
.public _020A31D4
|
||||
.public _020A31E4
|
||||
.public _020A31F4
|
||||
.public _020A31FC
|
||||
.public _020A3200
|
||||
.public _020A45C8_JP
|
||||
.public _020B09B0
|
||||
.public _020B09C0
|
||||
.public _s32_div_f
|
||||
.public strncpy
|
||||
.public sub_0200302C
|
||||
.public sub_020030FC
|
||||
.public sub_0200A124
|
||||
.public sub_0200A158
|
||||
.public sub_0200A184
|
||||
.public sub_0200A478
|
||||
.public sub_0200A4C4
|
||||
.public sub_0200A504
|
||||
.public sub_0200A510
|
||||
.public sub_0200A590
|
||||
.public sub_0200B2C4
|
||||
.public sub_0200B314
|
||||
.public sub_0200B330
|
||||
.public sub_0200B340
|
||||
.public sub_0200B3C0
|
||||
.public sub_0200B3D4
|
||||
.public sub_0200B3FC
|
||||
.public vsprintf
|
||||
15
asm/include/overlay_29_022F73EC.inc
Normal file
15
asm/include/overlay_29_022F73EC.inc
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#pragma once
|
||||
.public DUNGEON_PTR
|
||||
.public DirectoryFileMngr_GetDirectoryFileSize
|
||||
.public FloorNumberIsEven
|
||||
.public GendersEqualNotGenderless
|
||||
.public GetMonsterGender
|
||||
.public GetSpriteFileSize
|
||||
.public GetSpriteIndex__020526EC
|
||||
.public IsShaymin
|
||||
.public LoadWanTableEntryFromPack
|
||||
.public LoadWanTableEntryFromPackUseProvidedMemory
|
||||
.public MemAlloc
|
||||
.public ReplaceWanFromBinFile
|
||||
.public WAN_TABLE
|
||||
.public ov29_0237C9B0
|
||||
|
|
@ -7,7 +7,6 @@
|
|||
.public DUNGEON_PTR
|
||||
.public DeleteWanTableEntryVeneer
|
||||
.public DetermineMonsterShadow
|
||||
.public DirectoryFileMngr_GetDirectoryFileSize
|
||||
.public DiscoverMinimap
|
||||
.public DisplayMessage
|
||||
.public DisplayMessage2
|
||||
|
|
@ -16,18 +15,14 @@
|
|||
.public EndFrozenClassStatus
|
||||
.public EntityIsValid__022F7364
|
||||
.public FreeOtherWrappedMonsters
|
||||
.public GendersEqualNotGenderless
|
||||
.public GetActiveTeamMember
|
||||
.public GetBodySize
|
||||
.public GetForcedLossReason
|
||||
.public GetLeader
|
||||
.public GetLvlUpEntry
|
||||
.public GetMinimapDataE447
|
||||
.public GetMonsterGender
|
||||
.public GetMonsterName
|
||||
.public GetNumberOfAttacks
|
||||
.public GetSpriteFileSize
|
||||
.public GetSpriteIndex__020526EC
|
||||
.public GetStatBoostsForMonsterSummary
|
||||
.public GetTile
|
||||
.public GetTileAtEntity
|
||||
|
|
@ -42,14 +37,10 @@
|
|||
.public JoinedAtRangeCheck
|
||||
.public JoinedAtRangeCheck2
|
||||
.public LEADER_PTR
|
||||
.public LoadWanTableEntryFromPack
|
||||
.public LoadWanTableEntryFromPackUseProvidedMemory
|
||||
.public MemAlloc
|
||||
.public MemFree
|
||||
.public OpenMessageLog
|
||||
.public PopulateActiveMonsterPtrs
|
||||
.public RemoveHolderForItemInBag
|
||||
.public ReplaceWanFromBinFile
|
||||
.public RevertGiratinaAndShaymin
|
||||
.public SetForcedLossReason
|
||||
.public SetMissionTargetEnemyDefeated
|
||||
1425
asm/main_02051098.s
1425
asm/main_02051098.s
File diff suppressed because it is too large
Load Diff
1413
asm/main_02051788.s
Normal file
1413
asm/main_02051788.s
Normal file
File diff suppressed because it is too large
Load Diff
208
asm/overlay_29_022F73EC.s
Normal file
208
asm/overlay_29_022F73EC.s
Normal file
|
|
@ -0,0 +1,208 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022F73EC.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start GetKecleonIdToSpawnByFloor
|
||||
GetKecleonIdToSpawnByFloor: ; 0x022F73EC
|
||||
stmdb sp!, {r3, lr}
|
||||
bl FloorNumberIsEven
|
||||
cmp r0, #0
|
||||
ldrne r0, _022F7404 ; =0x000003D7
|
||||
ldreq r0, _022F7408 ; =0x0000017F
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_022F7404: .word 0x000003D7
|
||||
_022F7408: .word 0x0000017F
|
||||
arm_func_end GetKecleonIdToSpawnByFloor
|
||||
|
||||
arm_func_start StoreSpriteFileIndexBothGenders
|
||||
StoreSpriteFileIndexBothGenders: ; 0x022F740C
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
ldr r2, _022F74D0 ; =DUNGEON_PTR
|
||||
mov r7, r0
|
||||
ldr r2, [r2]
|
||||
mov r6, r1
|
||||
#ifdef JAPAN
|
||||
add r1, r2, #0x870
|
||||
add r5, r1, #0x19000
|
||||
#else
|
||||
add r1, r2, #0x114
|
||||
add r5, r1, #0x19800
|
||||
#endif
|
||||
bl GetSpriteIndex__020526EC
|
||||
mov r4, r0
|
||||
mov r1, r7, lsl #1
|
||||
mov r0, r7
|
||||
strh r6, [r5, r1]
|
||||
bl GetMonsterGender
|
||||
cmp r0, #3
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
cmp r7, #0x258
|
||||
bge _022F7490
|
||||
add r6, r7, #0x258
|
||||
mov r1, r6, lsl #0x10
|
||||
mov r0, r7
|
||||
mov r1, r1, asr #0x10
|
||||
bl GendersEqualNotGenderless
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
mov r0, r6, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
bl GetSpriteIndex__020526EC
|
||||
cmp r4, r0
|
||||
moveq r0, r7, lsl #1
|
||||
ldreqsh r1, [r5, r0]
|
||||
moveq r0, r6, lsl #1
|
||||
streqh r1, [r5, r0]
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_022F7490:
|
||||
sub r6, r7, #0x258
|
||||
mov r1, r6, lsl #0x10
|
||||
mov r0, r7
|
||||
mov r1, r1, asr #0x10
|
||||
bl GendersEqualNotGenderless
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
mov r0, r6, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
bl GetSpriteIndex__020526EC
|
||||
cmp r4, r0
|
||||
moveq r0, r7, lsl #1
|
||||
ldreqsh r1, [r5, r0]
|
||||
moveq r0, r6, lsl #1
|
||||
streqh r1, [r5, r0]
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_022F74D0: .word DUNGEON_PTR
|
||||
arm_func_end StoreSpriteFileIndexBothGenders
|
||||
|
||||
arm_func_start LoadMonsterSpriteInner
|
||||
LoadMonsterSpriteInner: ; 0x022F74D4
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
ldr r1, _022F75C4 ; =DUNGEON_PTR
|
||||
mov r6, r0
|
||||
#ifdef JAPAN
|
||||
ldr r1, [r1]
|
||||
add r1, r1, r6, lsl #1
|
||||
add r1, r1, #0x19800
|
||||
ldrsh r1, [r1, #0x70]
|
||||
#else
|
||||
ldr r2, [r1]
|
||||
ldr r1, _022F75C8 ; =0x00019914
|
||||
add r2, r2, r6, lsl #1
|
||||
ldrsh r1, [r2, r1]
|
||||
#endif
|
||||
cmp r1, #0
|
||||
bne _022F75BC
|
||||
bl GetSpriteIndex__020526EC
|
||||
mov r4, r0
|
||||
mov r0, r6
|
||||
bl IsShaymin
|
||||
cmp r0, #0
|
||||
beq _022F756C
|
||||
mov r0, r6
|
||||
bl IsShaymin
|
||||
cmp r0, #0
|
||||
mov r0, r6
|
||||
movne r5, #0
|
||||
bl GetSpriteFileSize
|
||||
mov r1, #0
|
||||
bl MemAlloc
|
||||
ldr r2, _022F75CC ; =ov29_0237C9B0
|
||||
mov r1, #1
|
||||
str r0, [r2, r5, lsl #2]
|
||||
str r1, [sp]
|
||||
ldr r0, _022F75D0 ; =WAN_TABLE
|
||||
ldr r3, [r2, r5, lsl #2]
|
||||
ldr r0, [r0]
|
||||
mov r2, r4
|
||||
mov r1, #0
|
||||
bl LoadWanTableEntryFromPackUseProvidedMemory
|
||||
mov r1, r0
|
||||
mov r0, r6
|
||||
bl StoreSpriteFileIndexBothGenders
|
||||
b _022F7598
|
||||
_022F756C:
|
||||
mov r1, #1
|
||||
ldr r0, _022F75D0 ; =WAN_TABLE
|
||||
str r1, [sp]
|
||||
mov r1, #0
|
||||
ldr r0, [r0]
|
||||
mov r2, r4
|
||||
mov r3, r1
|
||||
bl LoadWanTableEntryFromPack
|
||||
mov r1, r0
|
||||
mov r0, r6
|
||||
bl StoreSpriteFileIndexBothGenders
|
||||
_022F7598:
|
||||
mov r1, r4
|
||||
mov r0, #0
|
||||
bl DirectoryFileMngr_GetDirectoryFileSize
|
||||
ldr r1, _022F75C4 ; =DUNGEON_PTR
|
||||
ldr r1, [r1]
|
||||
add r1, r1, #0x2c000
|
||||
#ifdef JAPAN
|
||||
ldr r2, [r1, #0xa68]
|
||||
add r0, r2, r0
|
||||
str r0, [r1, #0xa68]
|
||||
#else
|
||||
ldr r2, [r1, #0xb0c]
|
||||
add r0, r2, r0
|
||||
str r0, [r1, #0xb0c]
|
||||
#endif
|
||||
_022F75BC:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_022F75C4: .word DUNGEON_PTR
|
||||
#ifndef JAPAN
|
||||
_022F75C8: .word 0x00019914
|
||||
#endif
|
||||
_022F75CC: .word ov29_0237C9B0
|
||||
_022F75D0: .word WAN_TABLE
|
||||
arm_func_end LoadMonsterSpriteInner
|
||||
|
||||
arm_func_start SwapMonsterWanFileIndex
|
||||
SwapMonsterWanFileIndex: ; 0x022F75D4
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
ldr r2, _022F764C ; =DUNGEON_PTR
|
||||
mov r5, r1
|
||||
ldr r1, [r2]
|
||||
mov r6, r0
|
||||
#ifdef JAPAN
|
||||
add r1, r1, #0x870
|
||||
mov r0, r5
|
||||
add r4, r1, #0x19000
|
||||
#else
|
||||
add r1, r1, #0x114
|
||||
mov r0, r5
|
||||
add r4, r1, #0x19800
|
||||
#endif
|
||||
bl GetSpriteIndex__020526EC
|
||||
mov r1, #1
|
||||
str r1, [sp]
|
||||
mov r1, r6, lsl #1
|
||||
ldr r2, _022F7650 ; =WAN_TABLE
|
||||
mov r3, r0
|
||||
ldrsh r1, [r4, r1]
|
||||
ldr r0, [r2]
|
||||
mov r2, #0
|
||||
bl ReplaceWanFromBinFile
|
||||
mov r1, r0
|
||||
mov r0, r5
|
||||
bl StoreSpriteFileIndexBothGenders
|
||||
mov r3, r6, lsl #1
|
||||
ldrsh r2, [r4, r3]
|
||||
mov r1, r5, lsl #1
|
||||
mov r0, #0
|
||||
strh r2, [r4, r1]
|
||||
strh r0, [r4, r3]
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_022F764C: .word DUNGEON_PTR
|
||||
_022F7650: .word WAN_TABLE
|
||||
arm_func_end SwapMonsterWanFileIndex
|
||||
|
|
@ -1,345 +1,8 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022F7388.inc"
|
||||
.include "overlay_29_022F7768.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DungeonGetSpriteIndex
|
||||
DungeonGetSpriteIndex: ; 0x022F7388
|
||||
#ifdef JAPAN
|
||||
ldr r1, _022F73A0 ; =DUNGEON_PTR
|
||||
ldr r1, [r1]
|
||||
add r0, r1, r0, lsl #1
|
||||
add r0, r0, #0x19800
|
||||
ldrsh r0, [r0, #0x70]
|
||||
#else
|
||||
ldr r2, _022F73A0 ; =DUNGEON_PTR
|
||||
ldr r1, _022F73A4 ; =0x00019914
|
||||
ldr r2, [r2]
|
||||
add r0, r2, r0, lsl #1
|
||||
ldrsh r0, [r0, r1]
|
||||
#endif
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022F73A0: .word DUNGEON_PTR
|
||||
#ifndef JAPAN
|
||||
_022F73A4: .word 0x00019914
|
||||
#endif
|
||||
arm_func_end DungeonGetSpriteIndex
|
||||
|
||||
arm_func_start JoinedAtRangeCheck2Veneer
|
||||
JoinedAtRangeCheck2Veneer: ; 0x022F73A8
|
||||
ldr ip, _022F73B0 ; =JoinedAtRangeCheck2
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_022F73B0: .word JoinedAtRangeCheck2
|
||||
arm_func_end JoinedAtRangeCheck2Veneer
|
||||
|
||||
arm_func_start FloorNumberIsEven
|
||||
FloorNumberIsEven: ; 0x022F73B4
|
||||
ldr r0, _022F73E8 ; =DUNGEON_PTR
|
||||
ldr r1, [r0]
|
||||
ldrb r0, [r1, #0x748]
|
||||
cmp r0, #0x5b
|
||||
ldreqb r0, [r1, #0x749]
|
||||
cmpeq r0, #0xa
|
||||
moveq r0, #0
|
||||
bxeq lr
|
||||
ldrb r0, [r1, #0x749]
|
||||
tst r0, #1
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022F73E8: .word DUNGEON_PTR
|
||||
arm_func_end FloorNumberIsEven
|
||||
|
||||
arm_func_start GetKecleonIdToSpawnByFloor
|
||||
GetKecleonIdToSpawnByFloor: ; 0x022F73EC
|
||||
stmdb sp!, {r3, lr}
|
||||
bl FloorNumberIsEven
|
||||
cmp r0, #0
|
||||
ldrne r0, _022F7404 ; =0x000003D7
|
||||
ldreq r0, _022F7408 ; =0x0000017F
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_022F7404: .word 0x000003D7
|
||||
_022F7408: .word 0x0000017F
|
||||
arm_func_end GetKecleonIdToSpawnByFloor
|
||||
|
||||
arm_func_start StoreSpriteFileIndexBothGenders
|
||||
StoreSpriteFileIndexBothGenders: ; 0x022F740C
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
ldr r2, _022F74D0 ; =DUNGEON_PTR
|
||||
mov r7, r0
|
||||
ldr r2, [r2]
|
||||
mov r6, r1
|
||||
#ifdef JAPAN
|
||||
add r1, r2, #0x870
|
||||
add r5, r1, #0x19000
|
||||
#else
|
||||
add r1, r2, #0x114
|
||||
add r5, r1, #0x19800
|
||||
#endif
|
||||
bl GetSpriteIndex__020526EC
|
||||
mov r4, r0
|
||||
mov r1, r7, lsl #1
|
||||
mov r0, r7
|
||||
strh r6, [r5, r1]
|
||||
bl GetMonsterGender
|
||||
cmp r0, #3
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
cmp r7, #0x258
|
||||
bge _022F7490
|
||||
add r6, r7, #0x258
|
||||
mov r1, r6, lsl #0x10
|
||||
mov r0, r7
|
||||
mov r1, r1, asr #0x10
|
||||
bl GendersEqualNotGenderless
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
mov r0, r6, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
bl GetSpriteIndex__020526EC
|
||||
cmp r4, r0
|
||||
moveq r0, r7, lsl #1
|
||||
ldreqsh r1, [r5, r0]
|
||||
moveq r0, r6, lsl #1
|
||||
streqh r1, [r5, r0]
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_022F7490:
|
||||
sub r6, r7, #0x258
|
||||
mov r1, r6, lsl #0x10
|
||||
mov r0, r7
|
||||
mov r1, r1, asr #0x10
|
||||
bl GendersEqualNotGenderless
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
mov r0, r6, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
bl GetSpriteIndex__020526EC
|
||||
cmp r4, r0
|
||||
moveq r0, r7, lsl #1
|
||||
ldreqsh r1, [r5, r0]
|
||||
moveq r0, r6, lsl #1
|
||||
streqh r1, [r5, r0]
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_022F74D0: .word DUNGEON_PTR
|
||||
arm_func_end StoreSpriteFileIndexBothGenders
|
||||
|
||||
arm_func_start LoadMonsterSpriteInner
|
||||
LoadMonsterSpriteInner: ; 0x022F74D4
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
ldr r1, _022F75C4 ; =DUNGEON_PTR
|
||||
mov r6, r0
|
||||
#ifdef JAPAN
|
||||
ldr r1, [r1]
|
||||
add r1, r1, r6, lsl #1
|
||||
add r1, r1, #0x19800
|
||||
ldrsh r1, [r1, #0x70]
|
||||
#else
|
||||
ldr r2, [r1]
|
||||
ldr r1, _022F75C8 ; =0x00019914
|
||||
add r2, r2, r6, lsl #1
|
||||
ldrsh r1, [r2, r1]
|
||||
#endif
|
||||
cmp r1, #0
|
||||
bne _022F75BC
|
||||
bl GetSpriteIndex__020526EC
|
||||
mov r4, r0
|
||||
mov r0, r6
|
||||
bl IsShaymin
|
||||
cmp r0, #0
|
||||
beq _022F756C
|
||||
mov r0, r6
|
||||
bl IsShaymin
|
||||
cmp r0, #0
|
||||
mov r0, r6
|
||||
movne r5, #0
|
||||
bl GetSpriteFileSize
|
||||
mov r1, #0
|
||||
bl MemAlloc
|
||||
ldr r2, _022F75CC ; =ov29_0237C9B0
|
||||
mov r1, #1
|
||||
str r0, [r2, r5, lsl #2]
|
||||
str r1, [sp]
|
||||
ldr r0, _022F75D0 ; =WAN_TABLE
|
||||
ldr r3, [r2, r5, lsl #2]
|
||||
ldr r0, [r0]
|
||||
mov r2, r4
|
||||
mov r1, #0
|
||||
bl LoadWanTableEntryFromPackUseProvidedMemory
|
||||
mov r1, r0
|
||||
mov r0, r6
|
||||
bl StoreSpriteFileIndexBothGenders
|
||||
b _022F7598
|
||||
_022F756C:
|
||||
mov r1, #1
|
||||
ldr r0, _022F75D0 ; =WAN_TABLE
|
||||
str r1, [sp]
|
||||
mov r1, #0
|
||||
ldr r0, [r0]
|
||||
mov r2, r4
|
||||
mov r3, r1
|
||||
bl LoadWanTableEntryFromPack
|
||||
mov r1, r0
|
||||
mov r0, r6
|
||||
bl StoreSpriteFileIndexBothGenders
|
||||
_022F7598:
|
||||
mov r1, r4
|
||||
mov r0, #0
|
||||
bl DirectoryFileMngr_GetDirectoryFileSize
|
||||
ldr r1, _022F75C4 ; =DUNGEON_PTR
|
||||
ldr r1, [r1]
|
||||
add r1, r1, #0x2c000
|
||||
#ifdef JAPAN
|
||||
ldr r2, [r1, #0xa68]
|
||||
add r0, r2, r0
|
||||
str r0, [r1, #0xa68]
|
||||
#else
|
||||
ldr r2, [r1, #0xb0c]
|
||||
add r0, r2, r0
|
||||
str r0, [r1, #0xb0c]
|
||||
#endif
|
||||
_022F75BC:
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_022F75C4: .word DUNGEON_PTR
|
||||
#ifndef JAPAN
|
||||
_022F75C8: .word 0x00019914
|
||||
#endif
|
||||
_022F75CC: .word ov29_0237C9B0
|
||||
_022F75D0: .word WAN_TABLE
|
||||
arm_func_end LoadMonsterSpriteInner
|
||||
|
||||
arm_func_start SwapMonsterWanFileIndex
|
||||
SwapMonsterWanFileIndex: ; 0x022F75D4
|
||||
stmdb sp!, {r3, r4, r5, r6, lr}
|
||||
sub sp, sp, #4
|
||||
ldr r2, _022F764C ; =DUNGEON_PTR
|
||||
mov r5, r1
|
||||
ldr r1, [r2]
|
||||
mov r6, r0
|
||||
#ifdef JAPAN
|
||||
add r1, r1, #0x870
|
||||
mov r0, r5
|
||||
add r4, r1, #0x19000
|
||||
#else
|
||||
add r1, r1, #0x114
|
||||
mov r0, r5
|
||||
add r4, r1, #0x19800
|
||||
#endif
|
||||
bl GetSpriteIndex__020526EC
|
||||
mov r1, #1
|
||||
str r1, [sp]
|
||||
mov r1, r6, lsl #1
|
||||
ldr r2, _022F7650 ; =WAN_TABLE
|
||||
mov r3, r0
|
||||
ldrsh r1, [r4, r1]
|
||||
ldr r0, [r2]
|
||||
mov r2, #0
|
||||
bl ReplaceWanFromBinFile
|
||||
mov r1, r0
|
||||
mov r0, r5
|
||||
bl StoreSpriteFileIndexBothGenders
|
||||
mov r3, r6, lsl #1
|
||||
ldrsh r2, [r4, r3]
|
||||
mov r1, r5, lsl #1
|
||||
mov r0, #0
|
||||
strh r2, [r4, r1]
|
||||
strh r0, [r4, r3]
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r3, r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_022F764C: .word DUNGEON_PTR
|
||||
_022F7650: .word WAN_TABLE
|
||||
arm_func_end SwapMonsterWanFileIndex
|
||||
|
||||
arm_func_start LoadMonsterSprite
|
||||
LoadMonsterSprite: ; 0x022F7654
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
cmp r1, #0
|
||||
bne _022F769C
|
||||
ldr r0, _022F7748 ; =0xFFFFFE5E
|
||||
add r0, r4, r0
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
cmp r0, #3
|
||||
bhi _022F769C
|
||||
ldr r0, _022F774C ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x3d00
|
||||
ldrsh r0, [r0, #0x96]
|
||||
#else
|
||||
add r0, r0, #0x3e00
|
||||
ldrsh r0, [r0, #0x3a]
|
||||
#endif
|
||||
bl LoadMonsterSpriteInner
|
||||
ldmia sp!, {r4, pc}
|
||||
_022F769C:
|
||||
mov r0, r4
|
||||
bl LoadMonsterSpriteInner
|
||||
ldr r1, _022F7750 ; =0x0000017B
|
||||
cmp r4, r1
|
||||
cmpne r4, #0x17c
|
||||
addne r0, r1, #2
|
||||
cmpne r4, r0
|
||||
addne r0, r1, #3
|
||||
cmpne r4, r0
|
||||
beq _022F76E4
|
||||
ldr r0, _022F7754 ; =0xFFFFFC2D
|
||||
add r0, r4, r0
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
cmp r0, #3
|
||||
bhi _022F7704
|
||||
_022F76E4:
|
||||
ldr r0, _022F7750 ; =0x0000017B
|
||||
bl LoadMonsterSpriteInner
|
||||
mov r0, #0x17c
|
||||
bl LoadMonsterSpriteInner
|
||||
ldr r0, _022F7758 ; =0x0000017D
|
||||
bl LoadMonsterSpriteInner
|
||||
ldr r0, _022F775C ; =0x0000017E
|
||||
bl LoadMonsterSpriteInner
|
||||
_022F7704:
|
||||
cmp r4, #0x1cc
|
||||
ldrne r0, _022F7760 ; =0x000001CD
|
||||
cmpne r4, r0
|
||||
beq _022F7734
|
||||
ldr r0, _022F7764 ; =0xFFFFFBDC
|
||||
add r0, r4, r0
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
cmp r0, #1
|
||||
ldmhiia sp!, {r4, pc}
|
||||
_022F7734:
|
||||
mov r0, #0x1cc
|
||||
bl LoadMonsterSpriteInner
|
||||
ldr r0, _022F7760 ; =0x000001CD
|
||||
bl LoadMonsterSpriteInner
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_022F7748: .word 0xFFFFFE5E
|
||||
_022F774C: .word DUNGEON_PTR
|
||||
_022F7750: .word 0x0000017B
|
||||
_022F7754: .word 0xFFFFFC2D
|
||||
_022F7758: .word 0x0000017D
|
||||
_022F775C: .word 0x0000017E
|
||||
_022F7760: .word 0x000001CD
|
||||
_022F7764: .word 0xFFFFFBDC
|
||||
arm_func_end LoadMonsterSprite
|
||||
|
||||
arm_func_start DeleteMonsterSpriteFile
|
||||
DeleteMonsterSpriteFile: ; 0x022F7768
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
8
include/main_02051760.h
Normal file
8
include/main_02051760.h
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#ifndef PMDSKY_MAIN_02051760_H
|
||||
#define PMDSKY_MAIN_02051760_H
|
||||
|
||||
#include "util.h"
|
||||
|
||||
bool32 JoinedAtRangeCheck2(u8 joined_at);
|
||||
|
||||
#endif //PMDSKY_MAIN_02051760_H
|
||||
|
|
@ -2,8 +2,11 @@
|
|||
#define PMDSKY_OVERLAY_29_022F7364_H
|
||||
|
||||
#include "dungeon_mode.h"
|
||||
#include "util.h"
|
||||
|
||||
// Checks if an entity pointer points to a valid entity (not entity type 0, which represents no entity).
|
||||
bool8 EntityIsValid__022F7364(struct entity *entity);
|
||||
s16 DungeonGetSpriteIndex(s16 monster_id);
|
||||
bool32 JoinedAtRangeCheck2Veneer(u8 joined_at);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_022F7364_H
|
||||
|
|
|
|||
8
include/overlay_29_022F73B4.h
Normal file
8
include/overlay_29_022F73B4.h
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#ifndef PMDSKY_OVERLAY_29_022F73B4_H
|
||||
#define PMDSKY_OVERLAY_29_022F73B4_H
|
||||
|
||||
#include "util.h"
|
||||
|
||||
bool32 FloorNumberIsEven();
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_022F73B4_H
|
||||
7
include/overlay_29_022F7654.h
Normal file
7
include/overlay_29_022F7654.h
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
#ifndef PMDSKY_OVERLAY_29_022F7654_H
|
||||
#define PMDSKY_OVERLAY_29_022F7654_H
|
||||
#include "enums.h"
|
||||
|
||||
void LoadMonsterSprite(s16 monster_id, u8 skip_deoxys_check);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_022F7654_H
|
||||
7
main.lsf
7
main.lsf
|
|
@ -57,6 +57,8 @@ Static main
|
|||
Object asm/main_0204B018.o
|
||||
Object src/number_util.o
|
||||
Object asm/main_02051098.o
|
||||
Object src/main_02051760.o
|
||||
Object asm/main_02051788.o
|
||||
Object src/main_02052874.o
|
||||
Object asm/main_02052890.o
|
||||
Object src/main_02052950.o
|
||||
|
|
@ -336,7 +338,10 @@ Overlay OVY_29
|
|||
Object src/overlay_29_022F62A8.o
|
||||
Object asm/overlay_29_022F62CC.o
|
||||
Object src/overlay_29_022F7364.o
|
||||
Object asm/overlay_29_022F7388.o
|
||||
Object src/overlay_29_022F73B4.o
|
||||
Object asm/overlay_29_022F73EC.o
|
||||
Object src/overlay_29_022F7654.o
|
||||
Object asm/overlay_29_022F7768.o
|
||||
Object src/dungeon_misc.o
|
||||
Object asm/overlay_29_022F9194.o
|
||||
Object src/overlay_29_022F9720.o
|
||||
|
|
|
|||
8
src/main_02051760.c
Normal file
8
src/main_02051760.c
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#include "main_02051760.h"
|
||||
#include "enums.h"
|
||||
#include "util.h"
|
||||
|
||||
bool32 JoinedAtRangeCheck2(u8 joined_at) {
|
||||
return joined_at == DUNGEON_BEACH || (joined_at >= DUNGEON_DUMMY_0xEC && DUNGEON_DUMMY_0xF0 >= joined_at);
|
||||
}
|
||||
|
||||
|
|
@ -1,4 +1,7 @@
|
|||
#include "overlay_29_022F7364.h"
|
||||
#include "dungeon.h"
|
||||
#include "util.h"
|
||||
#include "main_02051760.h"
|
||||
|
||||
bool8 EntityIsValid__022F7364(struct entity *entity)
|
||||
{
|
||||
|
|
@ -7,3 +10,12 @@ bool8 EntityIsValid__022F7364(struct entity *entity)
|
|||
|
||||
return entity->type != ENTITY_NOTHING;
|
||||
}
|
||||
|
||||
extern struct dungeon *DUNGEON_PTR[];
|
||||
s16 DungeonGetSpriteIndex(s16 monster_id) {
|
||||
return DUNGEON_PTR[0]->sprite_indexes[monster_id];
|
||||
}
|
||||
|
||||
bool32 JoinedAtRangeCheck2Veneer(u8 joined_at) {
|
||||
return JoinedAtRangeCheck2(joined_at);
|
||||
}
|
||||
|
|
|
|||
11
src/overlay_29_022F73B4.c
Normal file
11
src/overlay_29_022F73B4.c
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#include "overlay_29_022F73B4.h"
|
||||
#include "dungeon.h"
|
||||
#include "util.h"
|
||||
|
||||
extern struct dungeon *DUNGEON_PTR[];
|
||||
|
||||
bool32 FloorNumberIsEven() {
|
||||
struct dungeon *dungeon = DUNGEON_PTR[0];
|
||||
if (dungeon->id == DUNGEON_LABYRINTH_CAVE && dungeon->floor == 10) return 0;
|
||||
return (dungeon->floor & 1) == 0;
|
||||
}
|
||||
22
src/overlay_29_022F7654.c
Normal file
22
src/overlay_29_022F7654.c
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#include "overlay_29_022F7654.h"
|
||||
#include "dungeon.h"
|
||||
|
||||
extern struct dungeon *DUNGEON_PTR[];
|
||||
extern void LoadMonsterSpriteInner(s16 monster_id);
|
||||
void LoadMonsterSprite(s16 monster_id, u8 skip_deoxys_check)
|
||||
{
|
||||
if (!skip_deoxys_check && (u16)(s16)(monster_id - MONSTER_DEOXYS_NORMAL) <= 3) LoadMonsterSpriteInner((s16)DUNGEON_PTR[0]->deoxys_floor_id);
|
||||
else {
|
||||
LoadMonsterSpriteInner(monster_id);
|
||||
if (monster_id == MONSTER_CASTFORM_NORMAL || monster_id == MONSTER_CASTFORM_SNOWY || monster_id == MONSTER_CASTFORM_SUNNY || monster_id == MONSTER_CASTFORM_RAINY || 3 >= (u16)(s16)(monster_id - MONSTER_CASTFORM_NORMAL_SECONDARY)) {
|
||||
LoadMonsterSpriteInner(MONSTER_CASTFORM_NORMAL);
|
||||
LoadMonsterSpriteInner(MONSTER_CASTFORM_SNOWY);
|
||||
LoadMonsterSpriteInner(MONSTER_CASTFORM_SUNNY);
|
||||
LoadMonsterSpriteInner(MONSTER_CASTFORM_RAINY);
|
||||
}
|
||||
if (monster_id == MONSTER_CHERRIM_OVERCAST || monster_id == MONSTER_CHERRIM_SUNSHINE || (u16)(s16)(monster_id - MONSTER_CHERRIM_OVERCAST_SECONDARY) <= 1) {
|
||||
LoadMonsterSpriteInner(MONSTER_CHERRIM_OVERCAST);
|
||||
LoadMonsterSpriteInner(MONSTER_CHERRIM_SUNSHINE);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user