mirror of
https://github.com/pret/pmd-red.git
synced 2024-11-23 13:09:56 +00:00
decomp sub_8083568 thanks to @jiangzhengwenjz
This commit is contained in:
parent
973cad1733
commit
f2a2f684fd
@ -1,83 +0,0 @@
|
|||||||
#include "asm/constants/gba_constants.inc"
|
|
||||||
#include "asm/macros.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
thumb_func_start sub_8083568
|
|
||||||
sub_8083568:
|
|
||||||
push {r4,r5,lr}
|
|
||||||
lsls r2, 24
|
|
||||||
lsrs r5, r2, 24
|
|
||||||
ldr r2, _080835E0
|
|
||||||
ldr r2, [r2]
|
|
||||||
ldr r4, _080835E4
|
|
||||||
adds r3, r2, r4
|
|
||||||
movs r4, 0
|
|
||||||
ldrsh r3, [r3, r4]
|
|
||||||
subs r3, r0, r3
|
|
||||||
ldr r0, _080835E8
|
|
||||||
adds r2, r0
|
|
||||||
movs r4, 0
|
|
||||||
ldrsh r0, [r2, r4]
|
|
||||||
subs r4, r1, r0
|
|
||||||
movs r0, 0x10
|
|
||||||
negs r0, r0
|
|
||||||
cmp r3, r0
|
|
||||||
blt _080835F8
|
|
||||||
cmp r4, r0
|
|
||||||
blt _080835F8
|
|
||||||
cmp r3, 0xFF
|
|
||||||
bgt _080835F8
|
|
||||||
cmp r4, 0xAF
|
|
||||||
bgt _080835F8
|
|
||||||
ldr r1, _080835EC
|
|
||||||
lsls r0, r5, 1
|
|
||||||
adds r0, r5
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0x8
|
|
||||||
ldrsh r2, [r0, r1]
|
|
||||||
adds r2, r3, r2
|
|
||||||
ldr r1, _080835F0
|
|
||||||
ands r2, r1
|
|
||||||
ldrh r3, [r0, 0x2]
|
|
||||||
movs r1, 0xFE
|
|
||||||
lsls r1, 8
|
|
||||||
ands r1, r3
|
|
||||||
orrs r1, r2
|
|
||||||
strh r1, [r0, 0x2]
|
|
||||||
movs r1, 0xA
|
|
||||||
ldrsh r2, [r0, r1]
|
|
||||||
adds r2, r4, r2
|
|
||||||
ldr r1, _080835F4
|
|
||||||
ands r2, r1
|
|
||||||
lsls r2, 4
|
|
||||||
ldrh r3, [r0, 0x6]
|
|
||||||
movs r1, 0xF
|
|
||||||
ands r1, r3
|
|
||||||
orrs r1, r2
|
|
||||||
strh r1, [r0, 0x6]
|
|
||||||
movs r1, 0
|
|
||||||
movs r2, 0
|
|
||||||
movs r3, 0
|
|
||||||
bl AddSprite
|
|
||||||
movs r0, 0x1
|
|
||||||
b _080835FA
|
|
||||||
.align 2, 0
|
|
||||||
_080835E0: .4byte gDungeon
|
|
||||||
_080835E4: .4byte 0x000181f0
|
|
||||||
_080835E8: .4byte 0x000181f2
|
|
||||||
_080835EC: .4byte gUnknown_202ED28
|
|
||||||
_080835F0: .4byte 0x000001ff
|
|
||||||
_080835F4: .4byte 0x00000fff
|
|
||||||
_080835F8:
|
|
||||||
movs r0, 0
|
|
||||||
_080835FA:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_8083568
|
|
||||||
|
|
||||||
.align 2, 0
|
|
@ -272,7 +272,7 @@ SECTIONS {
|
|||||||
asm/code_807FCD4.o(.text);
|
asm/code_807FCD4.o(.text);
|
||||||
src/code_8083288.o(.text);
|
src/code_8083288.o(.text);
|
||||||
src/dungeon_range.o(.text);
|
src/dungeon_range.o(.text);
|
||||||
asm/code_808333C.o(.text);
|
src/code_808333C.o(.text);
|
||||||
src/dungeon_leader.o(.text);
|
src/dungeon_leader.o(.text);
|
||||||
asm/code_8083654.o(.text);
|
asm/code_8083654.o(.text);
|
||||||
src/dungeon_music.o(.text);
|
src/dungeon_music.o(.text);
|
||||||
|
61
src/code_808333C.c
Normal file
61
src/code_808333C.c
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "structs/str_dungeon.h"
|
||||||
|
|
||||||
|
struct unkStruct_202ED28
|
||||||
|
{
|
||||||
|
SpriteOAM sp;
|
||||||
|
s16 unk8;
|
||||||
|
s16 unkA;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct unkStruct_202ED28 gUnknown_202ED28[4]; // seeing index 3 used a lot
|
||||||
|
|
||||||
|
bool8 sub_8083568(s32 inX, s32 inY, u8 index) {
|
||||||
|
s32 x;
|
||||||
|
s32 y;
|
||||||
|
SpriteOAM *sp;
|
||||||
|
s32 tmp2;
|
||||||
|
#ifdef NONMATCHING
|
||||||
|
s32 tmp;
|
||||||
|
#else
|
||||||
|
register s32 tmp asm("r2");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
x = inX - gDungeon->cameraPixelPos.x;
|
||||||
|
y = inY - gDungeon->cameraPixelPos.y;
|
||||||
|
|
||||||
|
if (x >= -16 && y >= -16 && x <= 255 && y <= 175)
|
||||||
|
{
|
||||||
|
struct unkStruct_202ED28 *ptr = gUnknown_202ED28;
|
||||||
|
sp = &ptr[index].sp;
|
||||||
|
|
||||||
|
tmp = ptr[index].unk8;
|
||||||
|
tmp = x + ptr[index].unk8;
|
||||||
|
tmp &= SPRITEOAM_MASK_X;
|
||||||
|
|
||||||
|
x = sp->attrib2;
|
||||||
|
tmp2 = (0xFE << 8);
|
||||||
|
tmp2 &= x;
|
||||||
|
tmp2 |= tmp;
|
||||||
|
sp->attrib2 = tmp2;
|
||||||
|
|
||||||
|
tmp = ptr[index].unkA;
|
||||||
|
tmp = y + ptr[index].unkA;
|
||||||
|
tmp &= SPRITEOAM_MAX_UNK6_4;
|
||||||
|
tmp <<= SPRITEOAM_SHIFT_UNK6_4;
|
||||||
|
|
||||||
|
x = sp->unk6;
|
||||||
|
tmp2 = 0xF;
|
||||||
|
tmp2 &= x;
|
||||||
|
tmp2 |= tmp;
|
||||||
|
sp->unk6 = tmp2;
|
||||||
|
|
||||||
|
|
||||||
|
AddSprite(sp, 0, NULL, NULL);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user