mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-07 16:45:39 -05:00
Merge pull request #356 from DizzyEggg/sub_803E250
sub_803E250 in code_803D110.s
This commit is contained in:
@@ -1,254 +0,0 @@
|
||||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start sub_803E250
|
||||
sub_803E250:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x8
|
||||
ldr r1, _0803E3FC
|
||||
ldr r0, _0803E400
|
||||
str r0, [r1]
|
||||
ldr r0, _0803E404
|
||||
movs r1, 0
|
||||
str r1, [r0]
|
||||
ldr r0, _0803E408
|
||||
strb r1, [r0]
|
||||
ldr r0, _0803E40C
|
||||
strh r1, [r0]
|
||||
ldr r5, _0803E410
|
||||
ldrh r0, [r5, 0x6]
|
||||
movs r3, 0xF
|
||||
adds r2, r3, 0
|
||||
ands r2, r0
|
||||
ldrh r4, [r5]
|
||||
ldr r1, _0803E414
|
||||
adds r0, r1, 0
|
||||
ands r0, r4
|
||||
ldr r4, _0803E418
|
||||
ands r0, r4
|
||||
ldr r6, _0803E41C
|
||||
ands r0, r6
|
||||
ldr r7, _0803E420
|
||||
ands r0, r7
|
||||
ldr r4, _0803E424
|
||||
mov r12, r4
|
||||
ands r0, r4
|
||||
ldr r4, _0803E428
|
||||
ands r0, r4
|
||||
strh r0, [r5]
|
||||
movs r0, 0x80
|
||||
lsls r0, 7
|
||||
strh r0, [r5, 0x2]
|
||||
movs r0, 0
|
||||
strh r0, [r5, 0x4]
|
||||
ldr r0, _0803E42C
|
||||
mov r10, r0
|
||||
ands r2, r0
|
||||
subs r0, 0x1
|
||||
mov r9, r0
|
||||
ands r2, r0
|
||||
subs r0, 0x2
|
||||
mov r8, r0
|
||||
ands r2, r0
|
||||
strh r2, [r5, 0x6]
|
||||
ldr r2, _0803E430
|
||||
ldrh r0, [r2, 0x6]
|
||||
ands r3, r0
|
||||
ldrh r0, [r2]
|
||||
ands r1, r0
|
||||
ldr r0, _0803E418
|
||||
ands r1, r0
|
||||
ands r1, r6
|
||||
ands r1, r7
|
||||
mov r7, r12
|
||||
ands r1, r7
|
||||
ands r1, r4
|
||||
strh r1, [r2]
|
||||
movs r0, 0
|
||||
strh r0, [r2, 0x2]
|
||||
movs r0, 0xB8
|
||||
lsls r0, 7
|
||||
strh r0, [r2, 0x4]
|
||||
mov r0, r10
|
||||
ands r3, r0
|
||||
mov r1, r9
|
||||
ands r3, r1
|
||||
mov r7, r8
|
||||
ands r3, r7
|
||||
strh r3, [r2, 0x6]
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
_0803E2EE:
|
||||
movs r1, 0
|
||||
mov r9, r1
|
||||
mov r2, r8
|
||||
lsls r0, r2, 3
|
||||
lsls r2, 1
|
||||
mov r12, r2
|
||||
mov r3, r8
|
||||
adds r3, 0x1
|
||||
str r3, [sp]
|
||||
mov r10, r1
|
||||
add r0, r8
|
||||
lsls r5, r0, 3
|
||||
ldr r4, _0803E434
|
||||
adds r4, r5, r4
|
||||
str r4, [sp, 0x4]
|
||||
ldr r7, _0803E438
|
||||
adds r6, r5, r7
|
||||
ldr r0, _0803E43C
|
||||
adds r3, r5, r0
|
||||
ldr r1, _0803E440
|
||||
adds r4, r5, r1
|
||||
_0803E318:
|
||||
mov r7, r10
|
||||
adds r2, r5, r7
|
||||
ldrh r1, [r3]
|
||||
ldr r0, _0803E414
|
||||
ands r0, r1
|
||||
ldr r1, _0803E418
|
||||
ands r0, r1
|
||||
ldr r1, _0803E41C
|
||||
ands r0, r1
|
||||
ldr r1, _0803E420
|
||||
ands r0, r1
|
||||
ldr r1, _0803E424
|
||||
ands r0, r1
|
||||
strh r0, [r3]
|
||||
ldr r1, [r4]
|
||||
movs r7, 0x3
|
||||
ands r1, r7
|
||||
lsls r1, 14
|
||||
ldr r7, _0803E428
|
||||
ands r0, r7
|
||||
orrs r0, r1
|
||||
strh r0, [r3]
|
||||
ldrh r1, [r3, 0x2]
|
||||
ldr r0, _0803E444
|
||||
ands r0, r1
|
||||
strh r0, [r3, 0x2]
|
||||
ldr r1, _0803E440
|
||||
adds r1, 0x4
|
||||
adds r2, r1
|
||||
ldr r1, [r2]
|
||||
movs r2, 0x3
|
||||
ands r1, r2
|
||||
lsls r1, 14
|
||||
ands r0, r7
|
||||
orrs r0, r1
|
||||
strh r0, [r3, 0x2]
|
||||
ldr r1, [r6]
|
||||
ldr r0, _0803E448
|
||||
ands r1, r0
|
||||
ldrh r2, [r3, 0x4]
|
||||
movs r0, 0xFC
|
||||
lsls r0, 8
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
ldr r7, _0803E41C
|
||||
ands r0, r7
|
||||
movs r1, 0xC0
|
||||
lsls r1, 4
|
||||
orrs r0, r1
|
||||
movs r2, 0
|
||||
orrs r0, r2
|
||||
ldr r1, _0803E44C
|
||||
ands r0, r1
|
||||
strh r0, [r3, 0x4]
|
||||
ldrh r1, [r3, 0x6]
|
||||
ldr r0, _0803E42C
|
||||
ands r0, r1
|
||||
ldr r1, _0803E450
|
||||
ands r0, r1
|
||||
strh r0, [r3, 0x6]
|
||||
mov r7, r9
|
||||
lsls r1, r7, 2
|
||||
mov r0, r12
|
||||
add r0, r8
|
||||
lsls r0, 3
|
||||
adds r1, r0
|
||||
ldr r0, _0803E454
|
||||
adds r1, r0, r1
|
||||
ldr r0, [r1]
|
||||
ldr r1, [sp, 0x4]
|
||||
str r0, [r1]
|
||||
adds r1, 0xC
|
||||
str r1, [sp, 0x4]
|
||||
adds r6, 0xC
|
||||
adds r3, 0xC
|
||||
adds r4, 0xC
|
||||
movs r2, 0xC
|
||||
add r10, r2
|
||||
movs r7, 0x1
|
||||
add r9, r7
|
||||
mov r0, r9
|
||||
cmp r0, 0x5
|
||||
ble _0803E318
|
||||
ldr r1, [sp]
|
||||
mov r8, r1
|
||||
cmp r1, 0x1
|
||||
ble _0803E2EE
|
||||
movs r2, 0
|
||||
ldr r3, _0803E458
|
||||
ldr r0, [r3]
|
||||
ldr r4, _0803E45C
|
||||
adds r0, r4
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
ldr r0, [r3]
|
||||
ldr r7, _0803E460
|
||||
adds r0, r7
|
||||
strb r1, [r0]
|
||||
ldr r0, _0803E464
|
||||
str r2, [r0]
|
||||
movs r0, 0xF8
|
||||
ldr r1, _0803E468
|
||||
movs r3, 0
|
||||
bl SetBGPaletteBufferColorRGB
|
||||
add sp, 0x8
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0803E3FC: .4byte gUnknown_202EDD0
|
||||
_0803E400: .4byte 0x000003e7
|
||||
_0803E404: .4byte gUnknown_202EDD4
|
||||
_0803E408: .4byte gUnknown_203B40D
|
||||
_0803E40C: .4byte gUnknown_202EDE8
|
||||
_0803E410: .4byte gUnknown_202EDC0
|
||||
_0803E414: .4byte 0x0000feff
|
||||
_0803E418: .4byte 0x0000fdff
|
||||
_0803E41C: .4byte 0x0000f3ff
|
||||
_0803E420: .4byte 0x0000efff
|
||||
_0803E424: .4byte 0x0000dfff
|
||||
_0803E428: .4byte 0x00003fff
|
||||
_0803E42C: .4byte 0x0000fffe
|
||||
_0803E430: .4byte gUnknown_202EDB8
|
||||
_0803E434: .4byte gUnknown_202ED30
|
||||
_0803E438: .4byte gUnknown_80F6224
|
||||
_0803E43C: .4byte gUnknown_202ED28
|
||||
_0803E440: .4byte gUnknown_80F621C
|
||||
_0803E444: .4byte 0x0000c1ff
|
||||
_0803E448: .4byte 0x000003ff
|
||||
_0803E44C: .4byte 0x00000fff
|
||||
_0803E450: .4byte 0x0000fffd
|
||||
_0803E454: .4byte gUnknown_80F61EC
|
||||
_0803E458: .4byte gDungeon
|
||||
_0803E45C: .4byte 0x00018217
|
||||
_0803E460: .4byte 0x00018218
|
||||
_0803E464: .4byte gDungeonBrightness
|
||||
_0803E468: .4byte gFontPalette + 0x20
|
||||
thumb_func_end sub_803E250
|
||||
@@ -1,11 +1,12 @@
|
||||
#ifndef GUARD_STR_202ED28_H
|
||||
#define GUARD_STR_202ED28_H
|
||||
|
||||
#include "structs/str_position.h"
|
||||
|
||||
struct unkStruct_202ED28
|
||||
{
|
||||
SpriteOAM sprite;
|
||||
s16 x;
|
||||
s16 y;
|
||||
DungeonPos pos;
|
||||
};
|
||||
|
||||
extern struct unkStruct_202ED28 gUnknown_202ED28[][6];
|
||||
|
||||
18
include/structs/str_202EDE8.h
Normal file
18
include/structs/str_202EDE8.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#ifndef GUARD_STR_202EDE8_H
|
||||
#define GUARD_STR_202EDE8_H
|
||||
|
||||
#include "structs/dungeon_entity.h"
|
||||
|
||||
struct UnkStruct_202EDE8
|
||||
{
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
Entity *unk4;
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
};
|
||||
|
||||
extern struct UnkStruct_202EDE8 gUnknown_202EDE8;
|
||||
|
||||
#endif
|
||||
@@ -196,7 +196,6 @@ SECTIONS {
|
||||
src/personality_test2.o(.text);
|
||||
src/code_803D0D8.o(.text);
|
||||
src/code_803D110.o(.text);
|
||||
asm/code_803D110.o(.text);
|
||||
src/code_803E46C.o(.text);
|
||||
src/code_803E724.o(.text);
|
||||
src/code_8040094.o(.text);
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
#include "game_options.h"
|
||||
#include "text.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "structs/str_202ED28.h"
|
||||
#include "structs/str_202EDE8.h"
|
||||
|
||||
extern void sub_803E13C(void);
|
||||
extern void sub_80901D8(DungeonLocation *param_1,DungeonLocation *param_2);
|
||||
@@ -662,5 +664,90 @@ void sub_803E214(void)
|
||||
|
||||
void nullsub_56(void) {}
|
||||
|
||||
// sub_803E250 left, but it seems to be sprite related, and I'd rather not deal with it now lol
|
||||
extern u8 gUnknown_203B40D;
|
||||
extern u32 gUnknown_202EDD0;
|
||||
extern s32 gUnknown_202EDD4;
|
||||
extern s32 gDungeonBrightness;
|
||||
|
||||
extern SpriteOAM gUnknown_202EDC0;
|
||||
extern SpriteOAM gUnknown_202EDB8;
|
||||
|
||||
extern const DungeonPos gUnknown_80F61EC[2][6];
|
||||
|
||||
struct Unk80F6224Struct
|
||||
{
|
||||
s32 shape;
|
||||
s32 size;
|
||||
s32 tileNum;
|
||||
};
|
||||
|
||||
extern const struct Unk80F6224Struct gUnknown_80F621C[2][6];
|
||||
|
||||
void sub_803E250(void)
|
||||
{
|
||||
s32 i, j;
|
||||
|
||||
gUnknown_202EDD0 = 999;
|
||||
gUnknown_202EDD4 = 0;
|
||||
gUnknown_203B40D = 0;
|
||||
gUnknown_202EDE8.unk0 = 0;
|
||||
|
||||
SpriteSetY(&gUnknown_202EDC0, 0);
|
||||
SpriteSetAffine1(&gUnknown_202EDC0, 0);
|
||||
SpriteSetAffine2(&gUnknown_202EDC0, 0);
|
||||
SpriteSetObjMode(&gUnknown_202EDC0, 0);
|
||||
SpriteSetMosaic(&gUnknown_202EDC0, 0);
|
||||
SpriteSetBpp(&gUnknown_202EDC0, 0);
|
||||
SpriteSetShape(&gUnknown_202EDC0, 0);
|
||||
SpriteSetMatrixNum(&gUnknown_202EDC0, 0);
|
||||
SpriteSetSize(&gUnknown_202EDC0, 1);
|
||||
SpriteSetX(&gUnknown_202EDC0, 0);
|
||||
SpriteSetTileNum(&gUnknown_202EDC0, 0);
|
||||
SpriteSetPriority(&gUnknown_202EDC0, 0);
|
||||
SpriteSetPalNum(&gUnknown_202EDC0, 0);
|
||||
SpriteSetUnk6_0(&gUnknown_202EDC0, 0);
|
||||
SpriteSetUnk6_1(&gUnknown_202EDC0, 0);
|
||||
SpriteSetUnk6_2(&gUnknown_202EDC0, 0);
|
||||
|
||||
SpriteSetY(&gUnknown_202EDB8, 0);
|
||||
SpriteSetAffine1(&gUnknown_202EDB8, 0);
|
||||
SpriteSetAffine2(&gUnknown_202EDB8, 0);
|
||||
SpriteSetObjMode(&gUnknown_202EDB8, 0);
|
||||
SpriteSetMosaic(&gUnknown_202EDB8, 0);
|
||||
SpriteSetBpp(&gUnknown_202EDB8, 0);
|
||||
SpriteSetShape(&gUnknown_202EDB8, 0);
|
||||
SpriteSetMatrixNum(&gUnknown_202EDB8, 0);
|
||||
SpriteSetSize(&gUnknown_202EDB8, 0);
|
||||
SpriteSetX(&gUnknown_202EDB8, 0);
|
||||
SpriteSetTileNum(&gUnknown_202EDB8, 0);
|
||||
SpriteSetPriority(&gUnknown_202EDB8, 3);
|
||||
SpriteSetPalNum(&gUnknown_202EDB8, 5);
|
||||
SpriteSetUnk6_0(&gUnknown_202EDB8, 0);
|
||||
SpriteSetUnk6_1(&gUnknown_202EDB8, 0);
|
||||
SpriteSetUnk6_2(&gUnknown_202EDB8, 0);
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
for (j = 0; j < 6; j++) {
|
||||
SpriteSetAffine1(&gUnknown_202ED28[i][j].sprite, 0);
|
||||
SpriteSetAffine2(&gUnknown_202ED28[i][j].sprite, 0);
|
||||
SpriteSetObjMode(&gUnknown_202ED28[i][j].sprite, 0);
|
||||
SpriteSetMosaic(&gUnknown_202ED28[i][j].sprite, 0);
|
||||
SpriteSetBpp(&gUnknown_202ED28[i][j].sprite, 0);
|
||||
SpriteSetShape(&gUnknown_202ED28[i][j].sprite, gUnknown_80F621C[i][j].shape);
|
||||
SpriteSetMatrixNum(&gUnknown_202ED28[i][j].sprite, 0);
|
||||
SpriteSetSize(&gUnknown_202ED28[i][j].sprite, gUnknown_80F621C[i][j].size);
|
||||
SpriteSetTileNum(&gUnknown_202ED28[i][j].sprite, gUnknown_80F621C[i][j].tileNum);
|
||||
SpriteSetPriority(&gUnknown_202ED28[i][j].sprite, 3);
|
||||
SpriteSetPalNum(&gUnknown_202ED28[i][j].sprite, 0);
|
||||
SpriteSetUnk6_0(&gUnknown_202ED28[i][j].sprite, 0);
|
||||
SpriteSetUnk6_1(&gUnknown_202ED28[i][j].sprite, 0);
|
||||
|
||||
gUnknown_202ED28[i][j].pos = gUnknown_80F61EC[i][j];
|
||||
}
|
||||
}
|
||||
|
||||
gDungeon->unk181e8.unk18217 = 1;
|
||||
gDungeon->unk181e8.unk18218 = 1;
|
||||
gDungeonBrightness = 0;
|
||||
SetBGPaletteBufferColorRGB(0xf8, &gFontPalette[8],0,NULL);
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "constants/item.h"
|
||||
#include "constants/status.h"
|
||||
#include "code_803E724.h"
|
||||
#include "structs/str_202EDE8.h"
|
||||
|
||||
extern s32 gDungeonBrightness;
|
||||
extern u32 gUnknown_202EDD0;
|
||||
@@ -372,18 +373,6 @@ void sub_803ECE0(void)
|
||||
sub_80098BC((void *)VRAM + 0x14400, gUnknown_202EC94->unk4 + ((gUnknown_202EDD8 / 4) * 0x240), 0x240);
|
||||
}
|
||||
|
||||
struct UnkStruct_202EDE8
|
||||
{
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
Entity *unk4;
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
};
|
||||
|
||||
extern struct UnkStruct_202EDE8 gUnknown_202EDE8;
|
||||
|
||||
void sub_803ED30(s32 a0, Entity *mon, u8 a2, s32 a3)
|
||||
{
|
||||
s32 i, var;
|
||||
|
||||
@@ -2106,8 +2106,8 @@ void sub_806C51C(Entity *entity)
|
||||
if (xSprite >= -32 && ySprite >= -32 && xSprite <= 271 && ySprite <= 191 && r7 != 6 && entity->unk22 == 0) {
|
||||
struct unkStruct_202ED28 *spriteStructPtr = &gUnknown_202ED28[var_34][r7];
|
||||
if (entInfo->unk156 != 0) {
|
||||
SpriteSetX(&spriteStructPtr->sprite, xSprite + spriteStructPtr->x);
|
||||
SpriteSetY(&spriteStructPtr->sprite, ySprite + spriteStructPtr->y);
|
||||
SpriteSetX(&spriteStructPtr->sprite, xSprite + spriteStructPtr->pos.x);
|
||||
SpriteSetY(&spriteStructPtr->sprite, ySprite + spriteStructPtr->pos.y);
|
||||
|
||||
AddSprite(&spriteStructPtr->sprite, 0, NULL, NULL);
|
||||
}
|
||||
|
||||
@@ -9,8 +9,8 @@ bool8 sub_8083568(s32 inX, s32 inY, u8 index)
|
||||
|
||||
if (x >= -16 && y >= -16 && x <= 255 && y <= 175)
|
||||
{
|
||||
SpriteSetX(&gUnknown_202ED28[0][index].sprite, x + gUnknown_202ED28[0][index].x);
|
||||
SpriteSetY(&gUnknown_202ED28[0][index].sprite, y + gUnknown_202ED28[0][index].y);
|
||||
SpriteSetX(&gUnknown_202ED28[0][index].sprite, x + gUnknown_202ED28[0][index].pos.x);
|
||||
SpriteSetY(&gUnknown_202ED28[0][index].sprite, y + gUnknown_202ED28[0][index].pos.y);
|
||||
|
||||
AddSprite(&gUnknown_202ED28[0][index].sprite, 0, NULL, NULL);
|
||||
return TRUE;
|
||||
|
||||
Reference in New Issue
Block a user