mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-25 15:46:18 -05:00
finish out unk menus and move 203B364 to save_menu
This commit is contained in:
parent
b361b8519a
commit
78d49f5ca6
|
|
@ -1,76 +0,0 @@
|
|||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8038440
|
||||
sub_8038440:
|
||||
push {r4,r5,lr}
|
||||
movs r5, 0
|
||||
ldr r0, _080384B0
|
||||
ldr r0, [r0]
|
||||
mov r12, r0
|
||||
movs r3, 0xD4
|
||||
lsls r3, 1
|
||||
add r3, r12
|
||||
ldrh r1, [r3]
|
||||
ldr r0, _080384B4
|
||||
ands r0, r1
|
||||
ldr r1, _080384B8
|
||||
ands r0, r1
|
||||
ldr r4, _080384BC
|
||||
ands r0, r4
|
||||
ldr r1, _080384C0
|
||||
ands r0, r1
|
||||
ldr r1, _080384C4
|
||||
ands r0, r1
|
||||
movs r2, 0x80
|
||||
lsls r2, 7
|
||||
ldr r1, _080384C8
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
strh r0, [r3]
|
||||
movs r2, 0xFC
|
||||
lsls r2, 2
|
||||
ldrh r1, [r3, 0x4]
|
||||
movs r0, 0xFC
|
||||
lsls r0, 8
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
ands r0, r4
|
||||
movs r2, 0xF
|
||||
movs r4, 0xF0
|
||||
lsls r4, 8
|
||||
ldr r1, _080384CC
|
||||
ands r0, r1
|
||||
orrs r0, r4
|
||||
strh r0, [r3, 0x4]
|
||||
movs r0, 0x70
|
||||
strh r0, [r3, 0x2]
|
||||
movs r1, 0xE0
|
||||
lsls r1, 3
|
||||
ldrh r0, [r3, 0x6]
|
||||
ands r2, r0
|
||||
orrs r2, r1
|
||||
strh r2, [r3, 0x6]
|
||||
movs r0, 0xD8
|
||||
lsls r0, 1
|
||||
add r0, r12
|
||||
str r5, [r0]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080384B0: .4byte gUnknown_203B360
|
||||
_080384B4: .4byte 0x0000feff
|
||||
_080384B8: .4byte 0x0000fdff
|
||||
_080384BC: .4byte 0x0000f3ff
|
||||
_080384C0: .4byte 0x0000efff
|
||||
_080384C4: .4byte 0x0000dfff
|
||||
_080384C8: .4byte 0x00003fff
|
||||
_080384CC: .4byte 0x00000fff
|
||||
thumb_func_end sub_8038440
|
||||
|
||||
.align 2,0
|
||||
|
|
@ -1,111 +0,0 @@
|
|||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8038830
|
||||
sub_8038830:
|
||||
push {r4,r5,lr}
|
||||
movs r5, 0
|
||||
ldr r0, _080388A4
|
||||
ldr r0, [r0]
|
||||
mov r12, r0
|
||||
movs r3, 0xD4
|
||||
lsls r3, 1
|
||||
add r3, r12
|
||||
ldrh r1, [r3]
|
||||
ldr r0, _080388A8
|
||||
ands r0, r1
|
||||
ldr r1, _080388AC
|
||||
ands r0, r1
|
||||
ldr r4, _080388B0
|
||||
ands r0, r4
|
||||
ldr r1, _080388B4
|
||||
ands r0, r1
|
||||
ldr r1, _080388B8
|
||||
ands r0, r1
|
||||
movs r2, 0x80
|
||||
lsls r2, 7
|
||||
ldr r1, _080388BC
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
strh r0, [r3]
|
||||
movs r2, 0xFC
|
||||
lsls r2, 2
|
||||
ldrh r1, [r3, 0x4]
|
||||
movs r0, 0xFC
|
||||
lsls r0, 8
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
ands r0, r4
|
||||
movs r2, 0xF
|
||||
movs r4, 0xF0
|
||||
lsls r4, 8
|
||||
ldr r1, _080388C0
|
||||
ands r0, r1
|
||||
orrs r0, r4
|
||||
strh r0, [r3, 0x4]
|
||||
movs r0, 0x70
|
||||
strh r0, [r3, 0x2]
|
||||
movs r1, 0xD0
|
||||
lsls r1, 3
|
||||
ldrh r0, [r3, 0x6]
|
||||
ands r2, r0
|
||||
orrs r2, r1
|
||||
strh r2, [r3, 0x6]
|
||||
movs r0, 0xD8
|
||||
lsls r0, 1
|
||||
add r0, r12
|
||||
str r5, [r0]
|
||||
movs r0, 0
|
||||
bl ResetSprites
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080388A4: .4byte gUnknown_203B364
|
||||
_080388A8: .4byte 0x0000feff
|
||||
_080388AC: .4byte 0x0000fdff
|
||||
_080388B0: .4byte 0x0000f3ff
|
||||
_080388B4: .4byte 0x0000efff
|
||||
_080388B8: .4byte 0x0000dfff
|
||||
_080388BC: .4byte 0x00003fff
|
||||
_080388C0: .4byte 0x00000fff
|
||||
thumb_func_end sub_8038830
|
||||
|
||||
thumb_func_start sub_80388C4
|
||||
sub_80388C4:
|
||||
push {r4,r5,lr}
|
||||
ldr r5, _080388FC
|
||||
ldr r2, [r5]
|
||||
movs r4, 0xD8
|
||||
lsls r4, 1
|
||||
adds r0, r2, r4
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x8
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080388EA
|
||||
movs r1, 0xD4
|
||||
lsls r1, 1
|
||||
adds r0, r2, r1
|
||||
subs r1, 0xA8
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl AddSprite
|
||||
_080388EA:
|
||||
ldr r1, [r5]
|
||||
adds r1, r4
|
||||
ldr r0, [r1]
|
||||
adds r0, 0x1
|
||||
str r0, [r1]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080388FC: .4byte gUnknown_203B364
|
||||
thumb_func_end sub_80388C4
|
||||
|
||||
.align 2,0
|
||||
|
|
@ -166,10 +166,7 @@ SECTIONS {
|
|||
asm/other_menus.o(.text);
|
||||
src/adventure_log_menu.o(.text);
|
||||
src/unk_menu_203B360.o(.text);
|
||||
asm/unk_menu_203B360.o(.text);
|
||||
src/unk_menu_203B360_1.o(.text);
|
||||
src/unk_menu_203B364.o(.text);
|
||||
asm/unk_menu_203B364.o(.text);
|
||||
src/save_menu.o(.text);
|
||||
src/rescue_password_menu.o(.text);
|
||||
asm/rescue_password_menu.o(.text);
|
||||
src/rescue_password_menu_1.o(.text);
|
||||
|
|
|
|||
|
|
@ -6,6 +6,14 @@
|
|||
#include "text.h"
|
||||
#include "save.h"
|
||||
|
||||
struct unkSprite
|
||||
{
|
||||
u16 unk0;
|
||||
u16 unk2;
|
||||
u16 unk4;
|
||||
u16 unk6;
|
||||
};
|
||||
|
||||
struct unkStruct_203B360
|
||||
{
|
||||
// size: 0x1b4
|
||||
|
|
@ -14,10 +22,7 @@ struct unkStruct_203B360
|
|||
u32 unk8;
|
||||
u8 fill8[0x148 - 0xC];
|
||||
struct UnkTextStruct2 unk148[4];
|
||||
u16 unk1A8;
|
||||
u16 unk1AA;
|
||||
u16 unk1AC;
|
||||
u16 unk1AE;
|
||||
struct unkSprite unk1A8;
|
||||
u32 unk1B0; // Sprite count?
|
||||
};
|
||||
|
||||
|
|
@ -31,7 +36,7 @@ extern struct MenuItem gUnknown_80E6FBC;
|
|||
extern struct MenuItem gUnknown_80E7114;
|
||||
extern struct MenuItem gUnknown_80E701C;
|
||||
extern u8 gUnknown_80E7178[];
|
||||
|
||||
extern void ResetSprites(u32);
|
||||
extern void sub_8038440();
|
||||
extern void sub_8035CF4(u32 *, u32, u32);
|
||||
extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32);
|
||||
|
|
@ -45,6 +50,7 @@ extern void sub_8014114();
|
|||
extern void sub_80140F8(void);
|
||||
extern void sub_8035CC0(struct UnkTextStruct2 *, u32);
|
||||
extern void sub_80141B4(const char *r0, u32, struct OpenedFile **r1, u32);
|
||||
extern void AddSprite(struct unkSprite *, u32, u32, u32);
|
||||
|
||||
void CreateSaveMenu(s32 currMenu)
|
||||
{
|
||||
|
|
@ -188,3 +194,63 @@ s32 UpdateSaveMenu(void)
|
|||
}
|
||||
return menu;
|
||||
}
|
||||
|
||||
void sub_8038830(void)
|
||||
{
|
||||
#ifdef NONMATCHING
|
||||
u32 r0;
|
||||
u32 r2;
|
||||
#else
|
||||
register u32 r0 asm("r0");
|
||||
register u32 r2 asm("r2");
|
||||
#endif
|
||||
u32 r1;
|
||||
u32 r4;
|
||||
u32 r5;
|
||||
struct unkSprite *sprite;
|
||||
|
||||
r5 = 0;
|
||||
sprite = &gUnknown_203B364->unk1A8;
|
||||
|
||||
r1 = sprite->unk0;
|
||||
r0 = 0xfeff;
|
||||
r0 &= r1;
|
||||
r0 &= 0xfdff;
|
||||
r0 &= 0xf3ff;
|
||||
r0 &= 0xefff;
|
||||
r0 &= 0xdfff;
|
||||
r2 = 0x4000;
|
||||
r0 &= 0x3fff;
|
||||
r0 |= r2;
|
||||
sprite->unk0 = r0;
|
||||
|
||||
r2 = 0x3F0;
|
||||
r1 = sprite->unk4;
|
||||
r0 = 0xFC00;
|
||||
r0 &= r1;
|
||||
r0 |= r2;
|
||||
r0 &= 0xf3ff;
|
||||
r2 = 0xF;
|
||||
r4 = 0xF000;
|
||||
r0 &= 0xfff;
|
||||
r0 |= r4;
|
||||
|
||||
sprite->unk4 = r0;
|
||||
|
||||
sprite->unk2 = 0x70;
|
||||
|
||||
r1 = 0x680;
|
||||
r2 &= sprite->unk6;
|
||||
r2 |= r1;
|
||||
sprite->unk6 = r2;
|
||||
|
||||
gUnknown_203B364->unk1B0 = r5;
|
||||
ResetSprites(0);
|
||||
}
|
||||
|
||||
void sub_80388C4(void) {
|
||||
if ((gUnknown_203B364->unk1B0 & 8) != 0) {
|
||||
AddSprite(&gUnknown_203B364->unk1A8, 0x100, 0, 0);
|
||||
}
|
||||
gUnknown_203B364->unk1B0++;
|
||||
}
|
||||
|
|
@ -4,6 +4,14 @@
|
|||
#include "memory.h"
|
||||
#include "text.h"
|
||||
|
||||
struct unkSprite
|
||||
{
|
||||
u16 unk0;
|
||||
u16 unk2;
|
||||
u16 unk4;
|
||||
u16 unk6;
|
||||
};
|
||||
|
||||
struct unkStruct_203B360
|
||||
{
|
||||
// size: 0x1b4
|
||||
|
|
@ -12,8 +20,7 @@ struct unkStruct_203B360
|
|||
u32 unk8;
|
||||
u8 fill8[0x148 - 0xC];
|
||||
struct UnkTextStruct2 unk148[4];
|
||||
u32 unk1A8;
|
||||
u32 unk1AC;
|
||||
struct unkSprite unk1A8;
|
||||
u32 unk1B0; // sprite count?
|
||||
};
|
||||
|
||||
|
|
@ -22,6 +29,7 @@ extern struct UnkTextStruct2 gUnknown_80E6E7C;
|
|||
extern struct UnkTextStruct2 gUnknown_80E6E94;
|
||||
extern struct MenuItem gUnknown_80E6EAC[];
|
||||
|
||||
extern void AddSprite(struct unkSprite *, u32, u32, u32);
|
||||
extern void sub_8038440();
|
||||
extern void sub_8035CF4(u32 *, u32, u32);
|
||||
extern void SetMenuItems(void *, struct UnkTextStruct2 *, u32, struct UnkTextStruct2 *, struct MenuItem *, u32, u32, u32);
|
||||
|
|
@ -94,3 +102,65 @@ u32 sub_80383D4(void)
|
|||
|
||||
return nextMenu;
|
||||
}
|
||||
|
||||
void sub_8038440(void)
|
||||
{
|
||||
#ifdef NONMATCHING
|
||||
u32 r0;
|
||||
u32 r2;
|
||||
#else
|
||||
register u32 r0 asm("r0");
|
||||
register u32 r2 asm("r2");
|
||||
#endif
|
||||
u32 r1;
|
||||
u32 r4;
|
||||
u32 r5;
|
||||
struct unkSprite *sprite;
|
||||
|
||||
r5 = 0;
|
||||
sprite = &gUnknown_203B360->unk1A8;
|
||||
|
||||
r1 = sprite->unk0;
|
||||
r0 = 0xfeff;
|
||||
r0 &= r1;
|
||||
r0 &= 0xfdff;
|
||||
r0 &= 0xf3ff;
|
||||
r0 &= 0xefff;
|
||||
r0 &= 0xdfff;
|
||||
r2 = 0x4000;
|
||||
r0 &= 0x3fff;
|
||||
r0 |= r2;
|
||||
sprite->unk0 = r0;
|
||||
|
||||
r2 = 0x3F0;
|
||||
r1 = sprite->unk4;
|
||||
r0 = 0xFC00;
|
||||
r0 &= r1;
|
||||
r0 |= r2;
|
||||
r0 &= 0xf3ff;
|
||||
r2 = 0xF;
|
||||
r4 = 0xF000;
|
||||
r0 &= 0xfff;
|
||||
r0 |= r4;
|
||||
|
||||
sprite->unk4 = r0;
|
||||
|
||||
sprite->unk2 = 0x70;
|
||||
|
||||
r1 = 0x700;
|
||||
r2 &= sprite->unk6;
|
||||
r2 |= r1;
|
||||
sprite->unk6 = r2;
|
||||
|
||||
gUnknown_203B360->unk1B0 = r5;
|
||||
}
|
||||
|
||||
|
||||
void sub_80384D0(void)
|
||||
{
|
||||
if ((gUnknown_203B360->unk1B0 & 8) != 0) {
|
||||
AddSprite(&gUnknown_203B360->unk1A8, 0x100, 0, 0);
|
||||
}
|
||||
gUnknown_203B360->unk1B0++;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,28 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "text.h"
|
||||
|
||||
struct unkStruct_203B360
|
||||
{
|
||||
// size: 0x1b4
|
||||
u32 currMenu;
|
||||
u32 unk4;
|
||||
u32 unk8;
|
||||
u8 fill8[0x148 - 0xC];
|
||||
struct UnkTextStruct2 unk148[4];
|
||||
u16 unk1A8;
|
||||
u16 unk1AA;
|
||||
u16 unk1AC;
|
||||
u16 unk1AE;
|
||||
u32 unk1B0; // Sprite count?
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B360 *gUnknown_203B360;
|
||||
extern void AddSprite(u16 *, u32, u32, u32);
|
||||
|
||||
void sub_80384D0(void)
|
||||
{
|
||||
if ((gUnknown_203B360->unk1B0 & 8) != 0) {
|
||||
AddSprite(&gUnknown_203B360->unk1A8, 0x100, 0, 0);
|
||||
}
|
||||
gUnknown_203B360->unk1B0++;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user