Decomp CopySpawnEntriesMaster

This commit is contained in:
slaw-22
2026-05-19 20:29:51 +00:00
parent c2cf2f2e4a
commit fb923dae6f
3 changed files with 15 additions and 49 deletions

View File

@@ -5501,52 +5501,3 @@ ov29_022E7BD0: ; 0x022E7BD0
moveq r0, #0x46
ldmia sp!, {r3, pc}
arm_func_end ov29_022E7BD0
arm_func_start CopySpawnEntriesMaster
CopySpawnEntriesMaster: ; 0x022E7BE8
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r6, r0
mov r5, r1
mov r4, #0
ldr r7, _022E7C5C ; =DUNGEON_PTR
b _022E7C4C
_022E7C00:
ldr r0, [r7]
#ifdef JAPAN
add r0, r0, #0x8c0
add r0, r0, #0x2c000
#else
add r0, r0, #0x164
add r0, r0, #0x2c800
#endif
add r0, r0, r4, lsl #3
bl GetMonsterIdFromSpawnEntry
cmp r0, #0
beq _022E7C54
ldr r0, [r7]
add r2, r6, r5, lsl #3
add r0, r0, r4, lsl #3
#ifdef JAPAN
add r0, r0, #0x8c0
add r3, r0, #0x2c000
#else
add r0, r0, #0x164
add r3, r0, #0x2c800
#endif
mov r1, #4
_022E7C34:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _022E7C34
add r5, r5, #1
add r4, r4, #1
_022E7C4C:
cmp r4, #0x10
blt _022E7C00
_022E7C54:
mov r0, r5
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_022E7C5C: .word DUNGEON_PTR
arm_func_end CopySpawnEntriesMaster

View File

@@ -1,6 +1,7 @@
#ifndef PMDSKY_SPAWN_1_H
#define PMDSKY_SPAWN_1_H
s32 CopySpawnEntriesMaster(struct monster_spawn_entry out[], s32 idx_out);
s32 MonsterSpawnListPartialCopy(struct monster_spawn_entry entry_out[], s32 idx_out);
void CopySpawnEntriesOnce();

View File

@@ -6,6 +6,20 @@ extern s32 GetMonsterIdFromSpawnEntry(struct monster_spawn_entry*);
extern u32 GetSpriteSize(s32);
extern struct dungeon *DUNGEON_PTR;
s32 CopySpawnEntriesMaster(struct monster_spawn_entry out[], s32 idx_out) {
for(s32 i = 0; i < 16; i++) {
s32 monster_id = GetMonsterIdFromSpawnEntry(&(DUNGEON_PTR->spawn_entries_master[i]));
if(monster_id == 0) {
break;
}
out[idx_out] = DUNGEON_PTR->spawn_entries_master[i];
idx_out++;
}
return idx_out;
}
s32 MonsterSpawnListPartialCopy(struct monster_spawn_entry entry_out[], s32 idx_out) {
for(s32 i = 0; i < 16; i++) {
s32 monster_id = GetMonsterIdFromSpawnEntry(&(DUNGEON_PTR->spawn_entries_master[i]));